编写程序.docx
- 文档编号:25719668
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:25
- 大小:21.89KB
编写程序.docx
《编写程序.docx》由会员分享,可在线阅读,更多相关《编写程序.docx(25页珍藏版)》请在冰豆网上搜索。
编写程序
习题七
一、单选题
7-1.以下程序的输出结果是__B__。
main()
{
intn[2]={0},i,j,k=2;
for(i=0;i for(j=0;j n[j]=n[i]+1; printf("%d\n",n[1]); } A.不确定的值B.3C.2D.1 7-2.以下程序的输出结果是_B___。 main() { inti,k,a[10],p[3]; k=5; for(i=0;i<10;i++)a[i]=i; for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k); } A.20B.21C.22D.23 7-3.以下正确的数组定义语句是_A___。 A.inty[1][4]={1,2,3,4,5}; B.floatx[3][]={{1},{2},{3}}; C.longs[2][3]={{1},{1,2},{1,2,3}}; D.doublet[][3]={0}; 7-4.若有说明: inta[][4];则a[i][j]前有__B__个元素。 A.j*4+iB.i*4+jC.i*4+j-1D.i*4+j+1 7-5.以下程序的输出结果是_C___。 main() { intm[3][3]={{1},{2},{3}}; intn[3][3]={1,2,3} printf("%d\n",m[1][0]+n[0][0]); printf("%d\n",m[0][1]+n[1][0]); } A.0B.2C.3D.1 0302 7-6.以下程序的输出结果是_C___。 main() { inti,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)printf("%d,",x[i][2-i]); } A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9, 7-7.下列程序__B__(每行前的数字表示行号)。 1main() 2{floata[10]={0.0};inti; 3for(i=0;i<3;i++)scanf("%d",&a[i]); 4for(i=1;i<10;i++)a[0]=a[0]+a[i]; 5printf("%f\n",a[0]); } A.没有错误B.第2行有错C.第3行有错D.第5行有错 7-8.以下程序段的功能是__A__。 main() { intj,k,e,t,a[]={4,0,6,2,64,1}; for(j=0;j<5;j++) {t=j; for(k=j;k<6;k++)if(a[k]>a[t])t=k; e=a[t];a[t]=a[j];a[j]=e;} for(k=0;k<6;k++) printf("%5d",a[k]); } A.对数组进行气泡法排序(升序)B.对数组进行气泡法排序(降序) C.对数组进行选择法排序(升序)B.对数组进行选择法排序(降序) 二、填空题01123 7-9.以下程序的输出结果是。 58132134 main()5589144233377 {610987159725844181 main() { intarr[20],i; arr[0]=0;arr[1]=1; for(i=2;i<20;i++) arr[i]=arr[i-2]+arr[i-1]; for(i=0;i<20;i++) {if(i%5==0)printf("\n"); printf("%10d",arr[i]);} } 7-10.以下程序的功能: 把a数组的行和列元素互换后存入b数组。 请填空使程序正确。 main() { inti,j,a[2][3]={1,2,3,4,5,6},b[3][2]; ___printf(“arraya: \n”)__; for(i=0;i<2;i++){ for(j=0;__j<3___;j++){ printf("%5d",a[i][j]); ____b[j][i]=a[i][j]_____; } printf("\n");} for(i=0;_i<=2___;i++){ for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n");} } 7-11.以下程序的功能: 输入30个人的年龄,统计18岁、19岁、……、25岁各有多少人。 填空,使程序正确。 main() { inti,n,age,a[8]={0}; for(i=0;i<30;i++){ scanf("%d",&age); _a[age-18]++__________; ___________; } printf("age---number\n"); for(_i=0__;__i<=25____;i++) printf("%5d%6d\n",i+8,a[i]); } 7-12.以下程序的功能: 在给定数组中查找某个数,若找到,则输出该数在数组中的位置,否则输出"cannotfound! "。 填空,使程序正确。 main() { inti,n,a[8]={25,21,57,34,12,9,4,44}; scanf("%d",&n); for(i=0;i<8;i++) if(n==a[i]){ printf("Theindexis%d\n",i); _break___; } if(_i>=8___)printf("cannotfound! \n"); } 7-13.以下程序的功能: 把两个按升序排列的数组合并成一个按升序排列的数组。 填空,使程序正确。 main() { inti=0,j=0,k=0,a[3]={5,9,19},b[5]={12,24,26,37,48},c[10]; while(i<3&&j<5) if(_a[i]>b[j])__){c[k]=b[j];k++;j++;} else{c[k]=a[i];k++;i++;} while(_i<3___){c[k]=a[i];k++;i++;} while(_j<5___){c[k]=b[j];k++;j++;} for(i=0;i } 7-14.求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。 填空,使程序正确。 356 214 871 main() { inti,j; staticinta[3][4]={{3,5,6,0},{2,1,4,0},{8,7,1,0}}; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][3]+=__a[i][j]___; for(i=0;i<3;i++) for(_(j=1_;_j<=4___;_j++____){ printf("%3d",a[i][j]); if(__j%4==0___)printf(_”\n”____); } } 三、编程题 7-15.若题7-14要求二维数组两条对角线元素值的和,应如何修改该程序? #include #defineN5 main() {inta[N][N],i,j,s=0; for(i=0;i {for(j=0;j {a[i][j]=random(90)+10; printf("%4d",a[i][j]); printf("\n"); } for(i=0;i s=s+a[i][i]+a[i][N-i-1]; printf("s=%d\n",s); printf("s=%d\n",s); } 7-16.编写程序,定义一个数组,分别赋予从2开始的30个偶数,然后按顺序每5个元素求出一个平均值,并放在该数组的末尾。 #include #defineN30voidmain() { intscore[N]; floataver[N],temp=0; inti,j,n;for(i=1,j=0;i<=30;i++) { if(i%2==0) { score[j]=i; printf("%d",score[j]);j++; } } n=j; for(i=1,j=0;i<=n;i++) { temp+=(float)score[i-1]; if(i%5==0) { aver[j]=temp/5; temp=(float)score[i-1];j++; } } printf("\n平均分为: \n"); for(i=0;i { printf("%.2f",aver[i]); } } 7-18.编写程序,产生30个随机数到数组中,任意指定位置k,从第k个数开始依次后移3个位置。 输出移动前后的数组。 #include #include #defineN30 intmain() { inti,j,k,a[30],s; for(i=0;i<=30;i++) { a[i]=rand()%90+10; printf("%d",a[i]); } printf("\n"); scanf("%d",&k); for(i=30-1;i>=k;i--) a[i]=a[i-3]; for(i=0;i<=30;i++) printf("%d",a[i]); printf("\n"); } 7-19.编写程序,产生30个随机数到数组中,删除其中的最大值,输出删除前后的数组。 #include #include #include constintM=30;//控制数组大小 constintN=100;//控制随机数大小范围在0-100之内 intmain() { srand(time(0));//产生随机数种子 intrandArray[M]={0}; inti=0; for(i=0;i { randArray[i]=rand()%N+1; } for(i=0;i { printf("%d",randArray[i]); } intmax=randArray[0]; intnum=0; for(i=1;i { if(randArray[i]>max) { max=randArray[i]; num=i; } } inttemp=0; for(i=num;i { randArray[i]=randArray[i+1]; } printf("\nThemaxnumberis%d! \n",max);//输出最大的数 for(i=0;i { printf("%d",randArray[i]); } printf("\n"); return0; } 7-20.编写程序,输入任意10进制4位正整数,将其化成二进制数。 #include main() {intj,k=0,a[16]={0},s; scanf(“%d”,&s);/*输入待转化的10进制4位正整数s*/ while(s>0)/*按”除二取余”得到各位二进制数a[k]*/ {a[k]=s%2;k++; s=s/2;} for(j=15;j>=0;j--)/* 按倒排方式输出二进制数的各位数字 printf(“%2d”,a[j]); } 7-21.编写程序,产生30个50以内的随机整数到5行6列数组中,输出那些在行和列上均为最小的元素。 #include #include { inta[5][6]={0}; inti,j,min[5][2]; srand((unsigned)time(NULL)); for(i=0;i<5;i++) { for(j=0;j<6;j++) { a[i][j]=rand()%50; printf("%-4d",a[i][j]); } printf("\n"); } for(i=0;i<5;i++) { min[i][0]=a[i][j]; min[i][1]=0; for(j=1;j<6;j++) if(min[i][0]>a[i][j]) { min[i][0]=a[i][j]; min[i][1]=j; } } for(i=0;i<5;i++) { for(j=0;j<5;j++) if(a[j][min[i][1]] { min[i][1]=-1; break; } if(min[i][1]! =-1) printf("第%d行第%d列: %d\n",i+1,min[i][1]+1,min[i][0]); } return0; } 7-22.编写程序,产生30个[10,100]中的随机整数到5行7列数组a的前6列中,求每行元素值的和,并把和值记录在各行的最后一个元素,如: a[2][6]存放的是2行的和。 然后将和值最大的行与首行对调。 #include main() {inti,j,p,q,a[5][7],f; for(i=0;i<5;i++)/*产生a数组*/ for(j=0;j<6;j++) a[i][j]=rand()%91+10; for(i=0;i<5;i++)/*产生i行的和并存放在a[i][6]*/ {a[i][6]=0; for(j=0;j<6;j++) a[i][6]+=a[i][j];} for(i=0;i<5;i++)/*输出a数组*/ {for(j=0;j<7;j++) printf(“%5d”,a[i][j]); printf(“n”);} p=0; for(i=1;i<5;i++)/*找行和最大的行p*/ if(a[i][6]>a[p][6])p=i; for(j=0;j<7;j++)/*0行与p行交换位置*/ {q=a[0][j];a[0][j]=a[p][j];a[p][j]=q;} for(i=0;i<5;i++)/*输出交换后的a数组*/ {for(j=0;j<7;j++) printf(“%5d”,a[i][j]); printf(“n”);} } 7-23.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,任意输入一个正整数k,输出数组中与k大小相差5以内的所有元素。 #include #include Intmain() {inti,j,k,a[5][6]; for(i=0;i<5;i++)/*产生a数组*/ for(j=0;j<6;j++) a[i][j]=rand()%100+1; for(i=0;i<5;i++)/*输出a数组*/ {for(j=0;j<6;j++) printf(“%5d”,a[i][j]); printf(“\n”);} scanf(“%d”,&k);for(i=0;i<5;i++)/*输出与k的差小于5的数组元素*/ for(j=0;j<6;j++)if(abs(k- a[i][j])<5)printf(“%5d”,a[i][j]); printf(“n”); } 7-24.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,按升序重新排序,并按列的顺序存放到另一个数组中。 输出排序前后的情况。 #include #include intmain() { inti,j,t,k=0,a[5][6],b[5][6],c[30]; for(i=0;i<5;i++) for(j=0;j<6;j++) c[k++]=a[i][j]=rand()%100+1; for(i=0;i<29;i++) { k=i; for(j=i+1;j<30;j++) if(c[k]>c[j])k=j; if(k! =i){t=c[k];c[k]=c[i];c[i]=t;} } k=0; for(j=0;j<6;j++) for(i=0;i<5;i++) b[i][j]=c[k++]; for(i=0;i<5;i++) { for(j=0;j<6;j++) printf("%5d",a[i][j]); printf("\n"); } for(i=0;i<5;i++) { for(j=0;j<6;j++) printf("%5d",b[i][j]); printf("\n"); } } 7-25.编写程序,产生30个[1,100]中的随机整数到5行6列数组中,求其中最大值和最小值,并把最大值元素与右上角元素对调,把最小值元素与左下角元素对调。 输出重排前后的情况。 习题八 一、单选题 8-1.对以下程序从第一列开始输入数据: 2473↙,程序的输出结果是A____。 #include"stdio.h" main() { intc; while((c=getchar())! ='\n'){ switch(c-'2'){ case0: case1: putchar(c+4); case2: putchar(c+4);break; case3: putchar(c+3); default: putchar(c+2); } } } A.668977B.668966C.66778777D.6688766 8-2.能正确进行字符串赋值的是_D___。 A.chars[5]={'a','e','i','o','u'};B.chars[5];s="good"; C.chars[5]="abcd";D.chars[5];s[]="good"; 8-3.不能正确为字符数组输入数据的是__A__。 A.chars[5];scanf("%s",&s);B.chars[5];scanf("%s",s); C.chars[5];scanf("%s",&s[0]);D.chars[5];gets(s); 8-4.若有chara[80],b[80];则正确的是_D___。 A.puts(a,b);B.printf("%s,%s",a[],b[]); C.putchar(a,b);D.puts(a);puts(b); 8-5.以下程序的输出是_A___。 main() { chara[2][5]={"6937"',"8254"}; inti,j,s=0; for(i=0;i<2;i++) for(j=0;a[i][j]>'0'&&a[i][j]<='9';j+=2) s=10*s+a[i][j]-'0'; printf("s=%d\n",s); } A.6385B.69825C.63825D.693825 二、填空题 8-6.以下程序的输出是__fi___。 main() { chara[3][4]={"abc","efg","hij"}; intk; for(k=1;k<3;k++)putchar(a[k][1]); } 8-7.以下程序的输出是GDABC。 #include"string.h" main() { charb[30]; strcpy(b,"GH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); puts(b); } 8-8.以下程序的输出是__ahAMa____。 (□表示空格,↙表示回车) #include"stdio.h" main() { chara[80],c='a';intj=0; scanf("%s",a); while(a[j]! ='\0'){ if(a[j]==c)a[j]=a[j]-32; elseif(a[j]==c-32)a[j]=a[j]+32; j++; } puts(a); } 输入: AhaMA□Aha↙ 8-9.以下程序的输出是_LBLMNP__。 #include"string.h" main() { chara[80]="AB",b[80]="LMNP"; intj=0; strcat(a,b); while(a[j++]! ='\0')b[j]=a[j]; puts(b); } 8-10.以下程序的功能: 从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。 请填空。 #include"ctype.h" #include"stdio.h" main() { charstr[81]; inti; for(i=0;i<80;i++){ str[i]=getchar(); if(str[i]=='\n')break; } str[i]=___’\0’___; i=0; while(str[i])putchar(str[__i++__]); } 8-11.以下程序的功能: 输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组。 填空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)