C语言数组例题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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++)

相关文档
最新文档