C语言数组例题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1.1 Fibonacci数列
/* Fibonacci数列递推求解 */
main()
{int k,n; long s,f[50];
printf("求数列的第n项与前n项和,请输入n:");
scanf("%d",&n);
f[1]=1;f[2]=1;s=2; /* 数组元素与和变量赋初值 */ for(k=3;k<=n;k++)
{f[k]=f[k-1]+f[k-2]; /* 实施递推 */
s+=f[k];} /* 实施求和 */
printf("F数列第%d项为:%ld\n",n,f[n]);
printf("F数前%d项之和为:%ld\n",n,s);
}
6.1.2 幂序列
/* 幂序列程序 */
main()
{int k,n; long a,b,s,f[100];
printf("求数列的第n项与前n项和,请输入n:");
scanf("%d",&n);
a=2;b=3;s=0;
for(k=1;k<=n;k++)
{if(a
{f[k]=a;a=a*2;} /* 用2的幂给f[k]赋值 */
else {f[k]=b;b=b*3;} /* 用3的幂给f[k]赋值 */ s+=f[k];}
printf("数列的第%d项为:%ld\n",n,f[n]);
printf("数列的前%d项之和为:%ld\n",n,s);
}
6.1.3 双关系递推数列
/* 双关系2x+1,3x+1递推 */
main()
{int n,i,j,h,m[1500];
m[1]=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{m[2*i]=2*m[i]+1;m[2*i+1]=3*m[i]+1;
for(j=i+2;j<=2*i+1;j++)
{if(m[i+1]>m[j]) /* m(i+1)与m(j)比较 */
{h=m[j]; m[j]=m[i+1];m[i+1]=h;} /* 交换,使m(i +1)最小 */
if(m[i+1]==m[j])
m[j]=20000+j;}} /* 置m(j)为一出界大数,以避免重复 */
for(i=1;i<=n;i++)
{printf(" %4d",m[i]);
if(!(i%10)) printf("\n");}
}
6.1.4 复杂递推数列
/* 2x+3y递推程序 */
main()
{int m,n,t,k,i,h,j,w,a[30000];
printf("\n input m:");
scanf("%d",&m);
a[1]=1;a[2]=2;t=2;n=0;
for(k=2;k<=m;k++)
{for(i=1;i<=k-1;i++)
{w=2*a[k]+3*a[i];
if(w<=m && a[k]!=a[i]) a[++t]=w;/* 判断 w是否为递推项 */
w=2*a[i]+3*a[k];
if(w<=m && a[k]!=a[i]) a[++t]=w;}} /* 判断 w是否为递推项 */
for(j=1;j<=m;j++)
{for(k=1;k<=t;k++)
if(a[k]==j)
{n++;printf("%4d(%3d) ",j,n);break;}}
printf("\n n=%d",n);
}
6.2.1 折叠方阵
/* 层叠方阵 */
main()
{ int a,i,j,m,n,x,y,z[20][20];
printf("输入方阵的行数m:\n");
scanf("%d",&m);
printf("输入方阵的起始数a:\n");
scanf("%d",&a);
z[1][1]=a;n=a;
for(i=2;i<=m;i++)
{x=1;y=i;n++;z[x][y]=n; /* 每一层的起始元素赋值*/
while(x
{n++;x++;z[x][y]=n;} /* 每一层的纵元素赋值*/
while(y>1)
{n++;y--;z[x][y]=n;} /* 每一层的横元素赋值*/
}
for(x=1;x<=m;x++)
{for(y=1;y<=m;y++)
printf("%4d",z[x][y]); /* 循环打印层叠方阵 * /
printf("\n"); }
}
6.2.2 矩阵的和与转置
main()
{ int i,j,m,n,x,y,a[4][5],b[4][5];
printf("输入a矩阵:\n");
for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
scanf("%d",&a[i][j]); /* 输入a矩阵的元素 */ printf("输入b矩阵:\n");
for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
scanf("%d",&b[i][j]); /* 输入b矩阵的元素 */ printf("a矩阵:\n");
for(i=1;i<=3;i++)
{{for(j=1;j<=4;j++)
printf("%3d",a[i][j]);} /* 打印a矩阵 */ printf("\n"); }
printf("b矩阵:\n");
for(i=1;i<=3;i++)
{{for(j=1;j<=4;j++)