C语言第七八章补充作业-答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章数组补充作业【1】在C语言中,引用数组元素时,其数组下标的数据类型允许是C。A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式【2】以下对一维整型数组a的正确说明是D。A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10scanf(“%d”,&n);inta[SIZE];inta[n];【3】若有说明:inta[10];则对a数组元素的正确引用是D。A)a[10]B)a[3.5]C)a(5)D)a[10-10]【4】以下能对一维数组a进行正确初始化的语句是C。A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};【5】以下对二维数组a的正确说明是B。A)inta[3][];B)doublea[1][4];C)floata(3,4);D)floata(3)(4);【6】若有说明:inta[3][4];则对a数组元素的正确引用是D。A)a[2][4]B)a[1,3]C)a(2)(1)D)a[1+1][0]【7】以下不能对二维数组a进行正确初始化的语句是C。A)inta[2][3]={0};B)inta[][3]={{1,2},{0}};C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[][3]={1,2,3,4,5,6};【8】指出下面各说明语句中哪些是合法的:(多选)A.intabcd[0x80];B.char9ab[10];C.charchi[-200];D.intaaa[5]={3,4,5};E.floatkey[]={3.0,4.0,1,0};F.chardisk[];G.intn,floppy[n];H.intcash[4]={1,2,3,4,5,6};答案:ADE【9】下面程序中有错误的行是D(每行程序前面的数字表示行号)。1main()2{3floata[3]={1};4inti;5scanf(“%d”,&a);6for(i=1;i3;i++)a[0]=a[0]+a[i];7printf(“a[0]=%d\n”,a[0]);8}A)3B)6C)7D)5【10】请回答下列问题。(1)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,请写出正确的说明语句。___(2)该数组下标的取值范围是从___到___(从小到大)。(3)如何用scanf函数输入数组的第二个元素。___(4)如何用赋值语句把39存入第一个元素。___(5)如何表示把第六个和第四个元素之和存入第一个元素。___答案:intarray[10]={9,4,7,49,32,-5};09scanf(%d,&array[1]);array[0]=39;array[0]=array[5]+array[3];【11】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为A。(假设a[0][0]位于数组的第一个位置上。)A)i*m+j+1B)j*m+iC)i*m+j-1D)i*m+j【12】若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是B。A)2B)3C)4D)无确定值【13】定义如下变量和数组:intk;inta[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是A。for(k=0;k3;k++)printf(%d,a[k][2-k]);A)357B)369C)159D)147【14】若有以下程序段:……inta[]={4,0,2,3,1};i,j,t;for(i=1;i5;i++){t=a[i];j=i-1;while(j=0&&ta[j]){a[j+1]=a[j];j--;}a[j+1]=t;}……则该程序段的功能是B。A)对数组a进行插入排序(升序)B)对数组a进行插入排序(降序)C)对数组a进行选择排序(升序)D)对数组a进行选择排序(降序)【题15】当运行以下程序时,从键盘输入:AhaMAAhaCR(CR表示回车),则下面程序的运行结果是D。#includestdio.hmain(){chars[80],c=‘a’;inti=0;scanf(“%s”,s);while(s[i]!=‘\0’){if(s[i]==c)s[i]=s[i]-32;elseif(s[i]==c-32)s[i]=s[i]+32;i++;}puts(s);}A)ahAMaB)AhAMaC)AhAMaahAD)ahAMaahA【题16】设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。main(){inta[10],b[10],i;for(i=0;i10;i++)scanf(“%d”,&a[i]);for(【1】;i10;i++)【2】for(i=1;i10;i++){printf(“%3d”,b[i]);if(【3】==0)printf(“\n”);}}【1】i=1【2】b[i]=a[i]+a[i-1]【3】(i%3)【题17】下面程序将十进制整数转换成n进制。请填空。main(){inti,base,n,j,num[20];printf(“Enterdatathatwillbeconverted\n”);scanf(“%d”,&n);printf(“Enterbase\n”);scanf(“%d”,&base);do{i++;num[i]=n【1】base;n=n【2】base;}while(n!=0);printf(“Thedata%dhasbeenconvertedintothe%d--basedata:\n”,n,base);for(【3】)printf(“%d”,num[j]);}【1】%【2】/【3】j=i;j=1;j--【题18】下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。请填空。例如:arraya:arrayb:456645123312main(){inta[2][3]={4,5,6,1,2,3},b[2][3];inti,j;printf(“arraya:\n”);for(i=0;i=1;i++){for(j=0;j3;j++){printf(“%5d”,a[i][j]);【1】;}printf(“\n”);}for(【2】;i++)b[i][0]=a[i][2];printf(“arrayb:\n”);for(i=0;i2;i++){for(j=0;j3;j++)printf(“%5d”,b[i][j]);【3】;}}【1】b[i][j+1]=a[i][j]【2】i=0;i2【3】printf(“\n”)编程答案:[1]#defineM50main(){inta[M],c[5],i,n=0,x;printf(“Enter0or1or2or3or4,toendwith–1\n”);scanf(“%d”,&x);while(x!=-1){if(x=0&&x=4){a[n]=x;n++;}scanf(“%d”,&x);}for(i=0;i5;i++)c[i]=0;for(i=0;in;i++)c[a[i]]++;printf(“Theresultis:\n”);for(i=0;i=4;i++)printf(“%d:%d\n”,ic[i]);printf(“\n”);}[2]main(){inta[5][5],i,j,n=1;for(i=0;i5;i++)for(j=0;j5;j++)a[i][j]=n++;printf(“Theresultis:\n”);for(i=0;i5;i++){for(j=0;j=i;j++)printf(“%4d”,a[i][j]);printf(“\n”);}}[3]#includestdio.h#includestring.hmain(){chara[80],b[]=“ab”,max;inti=1,j;printf(“Inputastring\n”);gets(a);puts(a);max=a[0];while(a[i]!=‘\0’){if(a[i]max){max=a[i];j=i;}i++;}for(i=strlen(a)+2;ij;i--)a[i]=a[i-2];a[i+1]=‘a’;a[i+2]=‘b’;puts(a);}第八章函数补充作【题1】以下正确的说法是B。建立函数的目的之一是A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存【题2】以下正确的说法是B。A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调【题3】若调用一个函数,且此函数中没有return语句,则正确的说法是D。该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值【题4】以下不正确的说法是D。C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致【题5】以下正确的说法是C。A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准【题6】以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。sub(intk,intn){inta1,a2;a2=【1】;(为:C)a1=k-【2】;(为:A)if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(“%d”,k);n++;returnn;}elsereturn-1;}main(){intn=0,k,m;for(k=10;k=99;k++){m=sub(k,n);if(m!=-1)n=m;}printf(“\nn=%d”,n);}【1】A)k*10B)k%10C)k/10D)k*10%10【2】A)a2*10B)a2C)a2/10D)a2%10【题7】折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。请选择填空。binary(inta[10],intm){intlow=0,high=9,mid;while(low=high){mid=(low+high)/2;if(ma[mid])【1】;(为:A)elseif(ma[mid])【2】;(为:B)elsereturn(mid);}return(-1);}【1】A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【2】A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【题8】以下程序的正确运行结果是D。#defineMAX10inta[MAX],i;main(){printf(“\n”);sub1();sub3(a);sub2();sub3(a);}sub2(){inta[MAX],i,max;max=5;for(i=0;imax;i++)a[i]=i;}sub1(){for(i=0;iMAX;i++)a[i]=i+i;}sub3(inta[]){i

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功