数组编程练习带答案.docx
- 文档编号:5044817
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:30
- 大小:18.23KB
数组编程练习带答案.docx
《数组编程练习带答案.docx》由会员分享,可在线阅读,更多相关《数组编程练习带答案.docx(30页珍藏版)》请在冰豆网上搜索。
数组编程练习带答案
数组编程练习
1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。
解:
#include
#include
#defineN10
intmain()
{
inta[N],i;
for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return0; } 2、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 求该数组的最大值、最小值、总和和平均值并输出。 解: #include #include #defineN10 intmain() { inta[N],i,max,min,sum; floatave; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); max=a[0]; min=a[0]; sum=0; for(i=0;i { sum=sum+a[i]; if(a[i]>max) { max=a[i]; } if(a[i] { min=a[i]; } } ave=(float)sum/N; printf("max=%d,min=%d,sum=%d,ave=%.2f\n",max,min,sum,ave); return0; } 3、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 按照升序排列并输出。 解: (冒泡法) #include #include #defineN10 intmain() { inta[N],i,j,t; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("thesortedarraya: \n"); for(i=0;i printf("%4d",a[i]); printf("\n"); return0; } 另解: (选择法) #include #include #defineN10 intmain() { inta[N],i,j,min_i,t; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { min_i=i; for(j=i+1;j { if(a[j] { min_i=j; } } t=a[i]; a[i]=a[min_i]; a[min_i]=t; } printf("thesortedarraya: \n"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); return0; } 另解: (比较法) #include #include #defineN10 intmain() { inta[N],i,j,t; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=i;j { if(a[j] { t=a[i-1]; a[i-1]=a[j]; a[j]=t; } } } printf("thesortedarraya: \n"); for(i=0;i<10;i++) { printf("%4d",a[i]); } printf("\n"); return0; } 4、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 编程将逆序数组输出。 解: #include #include #defineN10 intmain() { inta[N],b[N],i,t; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { b[i]=a[N-1-i]; } printf("thenewarray: \n"); for(i=0;i { printf("%4d",b[i]); } printf("\n"); return0; } 另解: #include #include #defineN10 intmain() { inta[N],i,t; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=0;i { t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t; } printf("thenewarray: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return0; } 5、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 按照升序排列并输出。 再输入一个数,按照原来的规律将其插入并输出。 #include #include #defineN10 intmain() { inta[N+1],i,j,t,n; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("thesortedarraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("pleaseinputn: \n"); scanf("%d",&n); if(n>a[N-1]) { a[N]=n; } else { for(i=0;i { if(a[i]>n) { for(j=N;j>i;j--) { a[j]=a[j-1]; } a[j]=n; break; } } } printf("thesecondsortedarraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); return0; } 6、用数组输出Fibonacci数列的前40项 解: #include #defineN40 intmain() { inti; intf[N]={1,1}; for(i=2;i { f[i]=f[i-2]+f[i-1]; } for(i=0;i { printf("%12d",f[i]); if((i+1)%5==0) { printf("\n"); } } return0; } 7、用筛选法求100以内的素数 解: #include #include #defineN100 intmain() { inta[N+1],i,j,n=0; for(i=1;i<=N;i++) { a[i]=i; } a[1]=0; for(i=2;i<=N;i++) { for(j=2;j<=(int)sqrt(i);j++) { if(a[i]%j==0) { a[i]=0; } } } for(i=1;i<=N;i++) { if(a[i]! =0) { printf("%4d",a[i]); n++; if(n%10==0) { printf("\n"); } } } printf("\n"); return0; } 8、产生一个由15个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 按照升序排列并输出。 再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,输出找不到。 解: #include #include #defineN15 intmain() { inta[N],i,j,t,n; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("thesortedarraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("pleaseinputntolookfor: \n"); scanf("%d",&n); if(na[N-1]) { printf("notfound.\n"); } else { for(i=0;i if(a[i]==n) { printf("hasfound,itspositionis%d.\n",i); break; } if(i==N) printf("notfound.\n"); } return0; } 另解: #include #include #defineN15 intmain() { inta[N],i,j,t,n,low=0,high=N-1,mid,flag=1; for(i=0;i { a[i]=rand()%100; } printf("arraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } printf("thesortedarraya: \n"); for(i=0;i { printf("%4d",a[i]); } printf("\n"); printf("pleaseinputntolookfor: \n"); scanf("%d",&n); if(na[N-1]) { printf("notfound.\n"); } else { do { mid=(low+high)/2; if(a[mid]==n) { printf("hasfound,itspositionis%d.\n",mid); flag=0; } elseif(a[mid]>n) { high=mid-1; } else { low=mid+1; } }while(flag&&high>=low); } if(low>high) { printf("notfound.\n"); } return0; } 9、将一个二维数组(3行4列)的行和列互换(转置),存到另一个二维数组(4行3列)中并输出。 解: #include #include #defineM3 #defineN4 intmain() { inta[M][N],b[N][M],i,j; for(i=0;i { for(j=0;j { a[i][j]=rand()%100; } } printf("arraya: \n"); for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i { for(j=0;j { b[j][i]=a[i][j]; } } printf("arrayb: \n"); for(i=0;i { for(j=0;j { printf("%4d",b[i][j]); } printf("\n"); } return0; } 10、编程输出杨辉三角(要求输出10行) 解: #include #defineN10 intmain() { inta[N][N],i,j; for(i=0;i { a[i][0]=1; a[i][i]=1; } for(i=2;i { for(j=1;j { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } printf("yanghuitriangle: \n"); for(i=0;i { for(j=0;j<=i;j++) { printf("%6d",a[i][j]); } printf("\n"); } return0; } 11、编程输入5阶魔方阵。 解: #include #defineN5 intmain() { inti,j,k,a[N][N]={0}; i=0; j=N/2; a[i][j]=1; for(k=2;k<=N*N;k++) { i=i-1; j=j+1; if(i==-1) { if(j==N) { i=i+2; j=j-1; } else { i=N-1; } } if(j==N) { j=0; } if(a[i][j]==0) { a[i][j]=k; } else { i=i+2; j=j-1; a[i][j]=k; } } printf("%dmagicsquare: \n",N); for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } return0; } 12、找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。 可能没有鞍点。 解: #include #defineM4 #defineN5 intmain() { inti,j,k,max,maxj,flag; inta[M][N]={{1,2,3,4,5,},{2,4,6,8,10},{3,6,9,12,15},{4,8,12,16,20}}; for(i=0;i { for(j=0;j { printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i { max=a[i][0]; maxj=0; for(j=0;j { if(a[i][j]>max) { max=a[i][j]; maxj=j; } } flag=1; for(k=0;k { if(a[k][maxj] { flag=0; } } if(flag) { printf("saddlepointisa[%d][%d]=%d\n",i,maxj,max); break; } } if(! flag) { printf("nosaddlepoint.\n"); } return0; } 13、输入一行字符,统计大写字母、小写字母、数字、空格以及其他字符个数。 解: #include #defineN100 intmain() { inti,upp,low,dig,spa,oth; charc[N]; upp=0; low=0; dig=0; spa=0; oth=0; printf("pleaseinputalinecharacters: \n"); gets(c); for(i=0;c[i]! ='\0';i++) { if(c[i]>='A'&&c[i]<='Z') { upp++; } elseif(c[i]>='a'&&c[i]<='z') { low++; } elseif(c[i]>='0'&&c[i]<='9') { dig++; } elseif(c[i]=='') { spa++; } else { oth++; } } printf("uppercase: %2d\n",upp); printf("lowercase: %2d\n",low); printf("digit: %2d\n",dig); printf("space: %2d\n",spa); printf("other: %2d\n",oth); return0; } 14、有一行电文,按照下列规律译成密码: AZaz BYby CXcx …… 非字母不变。 解: #include #defineN100 intmain() { inti; charc1[N],c2[N]; printf("pleaseinputamessage: \n"); gets(c1); for(i=0;c1[i]! ='\0';i++) { if(c1[i]>='A'&&c1[i]<='Z') { c2[i]=155-c1[i]; } elseif(c1[i]>='a'&&c1[i]<='z') { c2[i]=219-c1[i]; } else { c2[i]=c1[i]; } } c2[i]='\0'; printf("ciphercode: \n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 编程 练习 答案