您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > C语言第五章习题带答案-2012.10.30更新
-1-练习5-1答案一、选择题1.合法的数组说明语句是(B)。A.inta[]=string;B.inta[]={0,1,2,3,4,5};C.chara=string;D.chara[5]={'0','1','2','3','4','5'};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[2]={10,9,8};5.对以下说明语句的正确理解是(B)。inta[10]={6,7,8,9,10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确二、填空题6.求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。#includestdio.hmain(){intm[16],n,i,t,count=0;longa,k;printf(Resultis:\n);for(n=10;n200;n++){k=0;t=1;a=n*n;for(i=1;a!=0;i++){①m[i]=a%10;a/=10;}for(;i1;i--){k+=m[i-1]*t;②t*=10;-2-}if(③k==n*n)printf(%2d:%10d%10d\n,++count,n,n*n);}}则①为(m[i]=a%10;)、②为(t*=10;)、③为(k==n*n)。7.设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。则①是(i=1)、②是(b[i]=a[i-1]+a[i];)、③是(i%3)。main(){inta[10],b[10],i;for(i=0;i10;i++)scanf(%d,&a[i]);for(①;i10;i++)②for(i=1;i10;i++){printf(%3d,b[i]);if(③==0)printf(\n);}}8.下面程序用“顺序查找法”查找数组a中是否存在某一关键字。则①是(break;)、②是(i==8)。main(){inta[8]={25,57,48,37,12,92,86,33};inti,x;scanf(%d,&x);for(i=0;i8;i++)if(x==a[i]){printf(Found!Theindexis:%d\n,i+1);①;}if(②)printf(Can'tfound!);}三、读程序,写结果9.若有以下输入(CR代表回车),则下面程序的运行结果是(SearchSuccessful!Theindexis:5)。52CRmain(){inta[8]={6,12,18,42,44,52,67,94};intlow=0,mid,high=7,found,x;found=0;scanf(%d,&x);while((low=high)&&(found==0))-3-{mid=(low+high)/2;if(xa[mid])low=mid+1;elseif(xa[mid])high=mid-1;else{found=1;break;}}if(found==1)printf(SearchSuccessful!Theindexis:%d\n,mid);elseprintf(Can'tsearch!\n);}-4-练习5-2答案一、选择题1.已知:inti,x[3][3]={1,2,3,4,5,6,7,8,9};,则下面语句的输出结果是(C)。for(i=0;i3;i++)printf(%d,x[i][2-i]);A.159B.147C.357D.3692.以下对二维数组a的正确说明是(C)。A.inta[3][];B.floata(3,4);C.doublea[1][4];D.floata(3)(4);3.已知:inta[3][4];,则对数组元素引用正确的是(C)。A.a[2][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)4.已知:inta[3][4];,则对数组元素的非法引用是(D)。A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]5.以下能对二维数组a进行正确赋初值的语句是(B)。A.inta[2][]={{1,0,1},{5,2,3}};B.inta[][3]={{1,2,3},{4,5,6}};C.inta[2][4]={{1,2,3},{4,5},{6}};D.inta[][3]={{1,0,1},{},{1,1}};6.以下不能对二维数组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};7.已知:inta[3][4]={0};,则下面正确的叙述是(D)。A.只有元素a[0][0]可得到初值0B.此说明语句是错误的C.数组a中每个元素都可得到初值,但其值不一定为0D.数组a中每个元素均可得到初值08.若有说明:inta[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是(B)。A.2B.3C.4D.无确定值9.若二维数组a有m列,则在a[i][j]前的元素个数为(B)。A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1二、填空题10.下面的程序是求出数组a矩阵的两条对角线上的元素之和,则①是(j=2)、②是(j=0或j-1)。#includestdio.hmain(){inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;for(i=0;i3;i++)for(j=0;j3;j++)if(i==j)sum1=sum1+a[i][j];for(i=0;i3;i++)for(①;②;j--)if(i+j==2)sum2=sum2+a[i][j];printf(sum1=%d,sum2=%d\n,sum1,sum2);}11.从键盘上输入若干(不超过1000个)学生的成绩,计算出平均成绩,并输出低于-5-平均分的学生的成绩,用输入负数结束输入。则①是(a)、②是(a)、③是(sum/n)、④是(x[i]ave)。#includestdio.hmain(){floatx[1000],sum=0,ave,a;intn=0,i;printf(Entermark:);scanf(%f,&a);while(a0&&n1000){sum+=①;x[n]=②;n++;scanf(%f,&a);}ave=③sum/n;printf(Output:\n);printf(ave=%f\n,ave);for(i=0;in;i++)if(④)printf(%f\n,x[i]);}12.下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空,①是(j=2或j3)、②是(b[j][i]=a[i][j];)、③是(i=2或i3)。main(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(arraya:\n);for(i=0;i=1;i++){for(j=0;①;j++){printf(%5d,a[i][j]);②;}printf(\n);}printf(arrayb:\n);for(i=0;③;i++){for(j=0;j=1;j++)printf(%5d,b[i][j]);printf(\n);}}13.下面程序的功能是检查二维数组是否对称(即:对所有i和j都有a[i][j]=a[j][i])。请填空,①是(i=j+1注i值赋为0…j+1皆可,赋为j+1效率最高)、②是-6-(found=1)。main(){inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};inti,j,found=0;for(j=0;j4;j++)for(①;i4;i++)if(a[j][i]!=a[i][j]){②;break;}if(found)printf(No);elseprintf(Yes);}-7-练习5-3答案一、选择题1.为了判断两个字符串s1和s2是否相等,应当使用(D)。A.if(s1==s2)B.if(s1=s2)C.if(strcpy(s1,s2))D.if(strcmpy(s1,s2)==0)2.调用strlen(abcd\0ef\0g)的返回值是(A)。太狡猾了A.4B.5C.8D.93.已知:charstr1[10],str2[10]={books};,则在程序中能够将字符串books赋给数组str1的正确语句是(B)。A.str1={books};B.strcpy(str1,str2);C.str1=str2;D.strcpy(str2,str1);4.下面程序段的运行结果是(B)。(注:□代表空格)charc[5]={'a','b','\0','c','\0'};同样的狡猾printf(%s,c);A.'a''b'B.abC.ab□cD.ab□5.下面程序段的运行结果是(D)。(注:□代表空格)chara[7]=abcdef;charb[4]=ABC;strcpy(a,b);printf(%c,a[5]);A.□B.\0C.eD.f二、填空题6.以下程序是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则第一个不同字符为'd'和'e',输出为-1.请填空,①是('\0')、②是(str1[i]-str2[i])。#includestdio.hmain(){charstr1[100],str2[100],c;inti,s;printf(Enterstring1:);gets(str1);printf(Enterstring2:);gets(str2);i=0;while((str1[i]==str2[i]&&str1[i]!=①))i++;s=②;printf(%d\n,s);}7.下面程序的功能是在三个字符串中找出最小的。请填空,①是(strcmp(str[0],str[1])0?str[0]:str[1])、②是(s)。或①是(str[0])、②是(strcmp(s,str[1])0?s:str[1])。。#includestdio.h-8-#includestring.hmain(){chars[20],str[3][20];inti;for(i=0;i3;i++)gets(str[i]);strcpy(s,①strcmp(str[0],str[1])0?str[0]:str[1]);if(strcmp(str[2],s)0)strcpy(s,str[2]);printf(%s\n,②s);}8.下面程序的功能是在任意的字符串a中将与字符'c'相等的所有元素的下标值分别存放在整型数组b中,请填空,①是(a[i]=='c')、②是(k++)。#includestdio.hmain(
本文标题:C语言第五章习题带答案-2012.10.30更新
链接地址:https://www.777doc.com/doc-2908386 .html