C\C++程序设计复习题及答案一、选择题1、一个C语言程序总是从(C)开始执行A)书写顺序的第一个函数B)书写顺序的第一条执行语句C)主函数main()D)不确定2、以下能正确定义二维数组的是()A.inta[][3];B.inta[][3]=2{2*3};C.inta[][3]={};D.inta[2][3]={{1},{2},{3,4}};3、设intx=3,y=4,z=5,则下列表达式中的值为0的是(D)A)‘x’&&’y’B)x||y+z&&y-zC)x=yD)!((xy)&&!z||1)4、执行以下程序段后,i的值是(C)inti=10;switch(i+1){case10:i++;break;case11:++i;case12:++i;break;default:i=i+1;}A)11B)13C)12D)145、语句while(!e);中的条件!e等价于(A)A)e==0B)e!=1C)e!=0D)运行时出错6、下列数据中,为字符串常量的是()。(A)‘A’(B)“house”(C)Howdoyoudo.(D)’$abc’7、用inta[4]={1,2};对数组进行初始化后,数组元素a[3]的值是(B)A)随机值B)0C)1D)F8、在执行charstr[10]=“china\0”;strlen(str)的结果是(A)A)5B)6D)7D99、若有定义,char*p=”computer”;则语句printf(“%c”,*(p+2))运行结果是(B)A)随机值B)mC)oD)omputer10、有以下程序()main(){inti=0,x=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf(%d\n,s);}程序运行后的输出结果是A.10B.13C.21D.程序进入死循环11、以下定义语句中正确的是()A.chara='A'b='B';B.floata=b=10.0;C.inta=10,*b=&a;D.float*a,b=&a;12、设有intx=11;则表达式(x++*l/3)的值为()。(A)3(B)4(C)11(D)1213、在说明一个结构体变量时系统分配给它的存储空间是(D)A)该结构体中第一个成员变量所需存储空间B)该结构体中最后一个成员变量所需存储空间C)该结构体中占用最大存储空间的成员变量所需存储空间D)该结构体中所有成员变量所需存储空间的总和14、用C语言编写的代码程序(B)A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行15、C语言中用于结构化程序设计的三种基本结构是(A)A)顺序结构、选择结构、循环结构B)if、switch、breakC)for、while、do-whileD)if、for、continue16、下列选项中,不能用作标识符的是(D)A)_1234_B)_1_2C)int_2_D)2_int_17、有以下程序main(){intm=0256,n=256;printf(%o%o\n,mn,n);}程序运行后的输出结果是()A.02560400B.0256256C.256400D.40040018、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子:(x)/(y×z)的c语言表达式是()。(A)x/y*z(B)x*(1/(y*z))(C)x/y*1/z(D)x/y/z19、有以下程序intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s);i++)d+=s[i];printf(%d\n,d);}程序运行后的输出结果是()A.9B.11C.19D.2120、以下叙述中正确的是(A)A)局部变量说明为static存储类,其生存期将得到延长B)全局变量说明为static存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同21、有以下程序()main(){chara='a',b;print(%c,,++a);printf(%c\n,b=a++);}程序运行后的输出结果是A.b,bB.b,cC.a,bD.a,c22、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是(B)A)for(i=1,p=1;i=5;i++)p*=i;B)for(i=1;i=5;i++){p=1;p*=i;}C)i=1;p=1;while(i=5){p*=i;i++;}D)i=1;p=1;do{p*=i;i++;}while(i=5);23、有以下程序(a)main(){chara='a',b;printf(%c,,++a);printf(%c\n,b=a++);}程序运行后的输出结果是a)b,bB)b,cC)a,bD)a,c24、有以下程序main(){inti;for(i=0;i3;i++)switch(i){case0:printf(%d,i);case2:printf(%d,i);default:printf(%d,i);}}程序运行后的输出结果是()A.022111B.021021C.000122D.01225、假定w、x、y、z、m均为int型变量;有如下程序段:w=1;x=2;y=3;z=4;m=(wx)?w:x,m=(my)?m:y;m=(mz)?m:z;则该程序段执行后,m的值是()。(A)4(B)3(C)2(D)126、已定义c为字符型变量,则下列语句中正确的是(c)A)c='97';B)c=97;C)c=97;D)c=a;27、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定28、以下定义语句中,错误的是()。(A)inta[]={1,2};(B)char*a[3];(C)chars[10]=text;(D)intn=5,a[n];29、以下能正确定义数组并正确赋初值的语句是(d)A)intN=5,b[N][N];B)inta[1][2]={{1},{3}};C)intc[2][]={{1,2},{3,4}};D)intd[3][2]={{1,2},{34}};30、有以下程序(a)main(){inti;for(i=0;i3;i++)switch(i){case1:printf(%d,i);case2:printf(%d,i);default:printf(%d,i);}}执行后输出结果是A)011122B)012C)012020D)12031、s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()A.if(s1s2)S;B.if(strcmp(s1,s2))S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S;32、以下叙述中正确的是(c)A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点33、下列叙述中正确的是(d)A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有集合类型C)C语言中有逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型34、以下叙述中正确的是(a)A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号{和}只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分35、若有定义:inta=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为()。(A)1.4(B)1(C)2.0(D)236、设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述不正确的是()。(A)struct是结构体类型的关键字(B)example是结构体类型名(C)x,y,z都是结构体成员名(D)structex是结构体类型37、执行x=51+2&&2||2*44-!0后,x的值为()。(A)-l(B)O(C)1(D)538、有以下函数定义:(c)voidfun(intn,doublex){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A)fun(inty,doublem);B)k=fun(10,12.5)C)fun(x,n);D)voidfun(n,x)39、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是()A.abs(x-y)10B.x-y-10&&x-y10C.!(x-y)-10||!(y-x)10D.(x-y)*(x-y)10040、在以下函数调用语句中fun1(x,10,(x,10),fun2(y,10,(y,10)));函数fun1参数的个数为(B)A)8B)4C)5D)编译出错41、一个C语言的源程序中()。(A)必须有一个主函数(B)可以有多个主函数(C)必须有主函数和其他函数(D)可以没有主函数42、在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则(B)A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调用43、若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是()A.p+1B.*(p+3)C.*(p+1)+3D.*(p[0]+2])44、有以下程序(d)main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i7&&p[i]%2){k=k+p[i];i++;}printf(%d\n,k);}执行后输出结果是A)58B)56C)45D)24二、阅读程序,写出程序运行结果(1)#includestdio.hmain(){charch=’A’;ch=(ch=’A’&&ch=’Z’)?(ch+32):ch;printf(“%c”,ch);}程序的运行结果是:a(2)#includestdio.hmain(){intsum=0,i=11;while(i=10){sum=sum+i;i++;}printf(“%d”,sum);}程序的运行结果是:0(3)main(){inti=1,sum=0;while(i10)sum=sum+1;i++;printf(i=%d,sum=%d,i,sum);}程序的运行结果是:运行出现错误(4)以下程序运行后的输出结果是___24___。main(){intp[7]={11,13,14,15,16,17,18};inti=0,j=0;while(i7&&p%2==1)j+=p[i++];printf(%d\n,j);}(5)#includestdio.hmain(){charstr[]=”1a2b3c”;inti;for(i=0;str[i]!=’\0’;i++)if(str[i]=’0’&&str[i]=’9’)printf(“%c”,str[i]);}程序的运行结果是:123(6)main(){intx=23;do{printf(%d,x--);}while(!x);}该程序的执行结果是(23)(7)intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(%d\n,r);}该程序的输出结果是(15)。(8)main(){inta,b;a=5;b=8;p(a,b);p(a+b,a);}p(intx,inty){y=x+y;printf(“%d%d”,x,y);}