您好,欢迎访问三七文档
习题七一、单选题7-1.以下程序的输出结果是__B__。main(){intn[2]={0},i,j,k=2;for(i=0;ik;i++)for(j=0;jk;j++)n[j]=n[i]+1;printf(%d\n,n[1]);}A.不确定的值B.3C.2D.17-2.以下程序的输出结果是_B___。main(){inti,k,a[10],p[3];k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;printf(%d\n,k);}A.20B.21C.22D.237-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+17-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.103027-6.以下程序的输出结果是_C___。main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i3;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;i3;i++)scanf(%d,&a[i]);4for(i=1;i10;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;j5;j++){t=j;for(k=j;k6;k++)if(a[k]a[t])t=k;e=a[t];a[t]=a[j];a[j]=e;}for(k=0;k6;k++)printf(%5d,a[k]);}A.对数组进行气泡法排序(升序)B.对数组进行气泡法排序(降序)C.对数组进行选择法排序(升序)B.对数组进行选择法排序(降序)二、填空题011237-9.以下程序的输出结果是。58132134main()5589144233377{610987159725844181main(){intarr[20],i;arr[0]=0;arr[1]=1;for(i=2;i20;i++)arr[i]=arr[i-2]+arr[i-1];for(i=0;i20;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;i2;i++){for(j=0;__j3___;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;i30;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;i8;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(i3&&j5)if(_a[i]b[j])__){c[k]=b[j];k++;j++;}else{c[k]=a[i];k++;i++;}while(_i3___){c[k]=a[i];k++;i++;}while(_j5___){c[k]=b[j];k++;j++;}for(i=0;ik;i++)printf(%3d,c[i]);}7-14.求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。填空,使程序正确。356214871main(){inti,j;staticinta[3][4]={{3,5,6,0},{2,1,4,0},{8,7,1,0}};for(i=0;i3;i++)for(j=0;j3;j++)a[i][3]+=__a[i][j]___;for(i=0;i3;i++)for(_(j=1_;_j=4___;_j++____){printf(%3d,a[i][j]);if(__j%4==0___)printf(_”\n”____);}}三、编程题7-15.若题7-14要求二维数组两条对角线元素值的和,应如何修改该程序?#includestudi.h#defineN5main(){inta[N][N],i,j,s=0;for(i=0;iN;i++){for(j=0;jN;j++){a[i][j]=random(90)+10;printf(%4d,a[i][j]);printf(\n);}for(i=0;iN;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个元素求出一个平均值,并放在该数组的末尾。#includestdio.h#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;ij;i++){printf(%.2f,aver[i]);}}7-18.编写程序,产生30个随机数到数组中,任意指定位置k,从第k个数开始依次后移3个位置。输出移动前后的数组。#includestdio.h#includemath.h#defineN30intmain(){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个随机数到数组中,删除其中的最大值,输出删除前后的数组。#includestdio.h#includetime.h#includestdlib.hconstintM=30;//控制数组大小constintN=100;//控制随机数大小范围在0-100之内intmain(){srand(time(0));//产生随机数种子intrandArray[M]={0};inti=0;for(i=0;iM;i++)//生成30个随机数{randArray[i]=rand()%N+1;}for(i=0;iM;i++)//打印刚刚生成的随机数{printf(%d,randArray[i]);}intmax=randArray[0];intnum=0;for(i=1;iM;i++)//找到最大的数的位置并记录到num中,最大的数存放到max中{if(randArray[i]max){max=randArray[i];num=i;}}inttemp=0;for(i=num;iM-1;i++)//删除最大数{randArray[i]=randArray[i+1];}printf(\nThemaxnumberis%d!\n,max);//输出最大的数for(i=0;iM-1;i++)//打印删除后结果{printf(%d,randArray[i]);}printf(\n);return0;}7-20.编写程序,输入任意10进制4位正整数,将其化成二进制数。#includestdio.hmain(){intj,k=0,a[16]={0},s;scanf(“%d”,&s);/*输入待转化的10进制4位正整数s*/while(s0)/*按”除二取余”得到各位二进制数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列数组中,输出那些在行和列上均为最小的元素。#includestdio.h#includetime.hmain(){inta[5][6]={0};inti,j,min[5][2];srand((unsigned)time(NULL));for(i=0;i5;i++){for(j=0;j6;j++){a[i][j]=rand()%50;printf(%-4d,a[i][j]);}printf(\n);}for(i=0;i5;i++){min[i][0]=a[i][j];min[i][1]=0;for(j=1;j6;j++)if(min[i][0]a[i][j]){min[i][0]=a[i][j];min[i][1]=j;}}for(i=0;i5;i++){for(j=0;j5;j++)if(a[j][min[i][1]]min[i][0]){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列中,求每行元素值的和,
本文标题:编写程序
链接地址:https://www.777doc.com/doc-3901510 .html