您好,欢迎访问三七文档
第1页共10页一、选择题1、以下程序段的输出结果是:()intx=17,y=3,z;printf(“%d\n”,z=(x=x/y,x%y));A)3B)0C)2D)12、以下if语句语法正确的是:()A)if(x0)B)if(x0)printf(%f,x){x=x+y;printf(%f,x);}elseprintf(%f,-x);elseprintf(%f,-x);C)if(x0)D)if(x0){x=x+y;printf(%f,x);};{x=x+y;printf(%f,x)}elseprintf(%f,-x);elseprintf(%f,-x);3、下面程序段的运行结果是:()inta=1,b=2,c=2,t;while(abc){t=a;a=b;b=t;c--;}printf(%d,%d,%d\n,a,b,c);A)1,2,0B)2,1,0C)1,2,1D)2,1,14、若m为整型变量,则以下循环执行次数是:()for(m=2;m==0;)printf(%d,m--);A)无限次B)0次C)1次D)2次5、在C语言中,以下正确的说法是:()A)实际参数与其对应的形式参数各占用独立的存储单元B)实际参数与其对应的形式参数占用同一个存储单元C)只有当实际参数和与其对应的形式参数同名时才占用同一个存储单元D)形式参数是虚设的,不占用存储单元6、以下程序的输出结果为()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、以下程序的输出结果为:()charstr[]=ab\n\012\\\;printf(%d,strlen(str));A)3B)4C)6D)128、以下程序的输出结果是:()main(){intn[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i3;i++)for(j=0;j=i;j++)s+=a[i][j];printf(%d\n,s);}A)18B)19C)20D)219、设有以下宏定义:()#defineN3#defineY(n)((N+1)*n)则执行语句:z=2*(N+Y(5+1));后,z的值为:A)出错B)42C)48D)5410、下列程序执行后输出的结果为:()f(inta){staticintb,c=3;a=b;b=++c;return(a);}main()第2页共10页{inta=2,j,k;for(j=0;j2;j++)k=f(a);printf(“%d\n”,k);}A)4B)0C)6D)511、下列程序语句的输出是:()intn=0;while(n++=2);printf(%d,n);(A)2(B)3(C)4(D)有语法错误12、下列程序语句的输出是:()inta=011;printf(%d\n,++a);(A)12(B)11(C)10(D)913、执行语句for(i=1;i++4;);后,变量i的值是:()(A)3(B)4(C)5(D)不确定14、定义intx=0,y=8,z=9后,则下面表达式的值为0的是:()(A)'x'&&'y'(B)x=y(C)x||y+z&&y-z(D)!((xy)&&!z||1)15、对下述程序段描述正确的是:()intk=0;while(k=1)k++;A)有语法错误,不能执行B)循环是无限的C)循环体语句一次也不能执行D)循环体语句执行一次16、下述程序的运行结果是:()#includestdio.hmain(){inti;for(i=1;i=5;i++){if(i%2)printf(*);elsecontinue;printf(#);}printf($\n);}(A)*#*#*#$(B)#*#*#*$(C)*#*#$(D)#*#*$17、下述程序的输出结果是:()#includestdio.hintx;voidfun();voidmain(){intx=1;if(x==1){intx=2;printf(%d,,x++);}{externintx;printf(%d,,++x);}fun();}voidfun(){printf(%d,x++);}A)2,1,1B)1,2,1C)2,2,2D)2,2,118、下面对宏定义的描述,不正确的是:()A)宏不存在类型问题,宏名无类型,它的参数也无类型B)宏替换不占用运行时间C)宏替换是先求出实参表达式的值,然后代入形参运算求值D)其实,宏替换只不过是字符替代而已19、以下程序的输出结果是:()#includestdio.hintfunc(inta,intb);voidmain()第3页共10页{intk=4,m=1,p;p=func(k,m);printf(%d,,p);p=func(k,m);printf(%d,,p);}intfunc(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}A)8,17B)8,16C)8,20D)8,820、若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是:()(A)2(B)3(C)4(D)无确定值19、下列程序段执行后,s的值为:()charch[]=”600”;inta,s=0;for(a=0;ch[a]=’0’&&ch[a]=’9’;a++)s=10*s+ch[a]-‘0’;a)600b)6c)0d)出错20、在c程序中,注释部分从哪开始,到哪结束?()a)从*/开始,到/*结束b)从REM开始,无结束标志c)无起始标志d)从/*开始,到*/结束20、针对下列语句的正确的叙述为()charx[]=”abcd”;chary[]={‘a’、‘b’、‘c’、‘d’};a)数组x和数组y等价b)数组x和数组y的长度相同c)数组x的长度大于y的长度e)数组x的长度小于y的长度22、下列程序段的输出结果为(u代表空格)()chars[10];s=“abcd”;printf(“%s\n”,s);a)abcdb)ac)abcduuuuud)编译不通过23、若j为int型变量,则下列语句的执行结果为()for(j=10;j3;j--){if(j%3)j--;--j;--j;printf(“%d”,j);}a)63b)74c)62d)7324、下列程序段的输出结果为()intx=3;do{printf(“%3d”,x-=2);}while(!(--x));a)1b)30c)1-2d)死循环25、设变量已正确定义并赋值,则符合C语言语法的表达式是:()(A)a=a+5;(B)a=b=c++(C)int(34.5%5)(D)a=a+8=b-c26、下列程序段的运行结果是:()intn=0;while(n++=2);printf(%d,n);(A)2(B)3(C)4(D)有语法错误27、若有说明:inta[3][4];则对a数组元素的正确引用是:()(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a(2)(1)45、针对以下程序段,说法正确的是()inta=5,b=0,c=0;if(a=b+c)printf(***);elseprintf(&&&);(A)有语法错误不能通过编译(B)可以通过编译但不能通过连接(C)输出***(D)输出&&&28、执行下面的程序段后,a的值为()inta,b;for(a=1,b=4;a=60;a++){if(b=23)break;if(b%3==1){b+=3;continue;}b-=5;}第4页共10页(A)7(B)8(C)9(D)1029、以下描述中错误的是()(A)函数调用可以出现在执行语句中(B)函数调用可以出现在表达式中(C)函数调用可以作为函数的实际参数(D)函数调用可以作为函数的形式参数30、以下程序的输出结果是()#defineADD(x)x+xmain(){intm=1,n=2,k=3;intsum=ADD(m+n)*k;printf(sum=%d,sum);}(A)sum=9(B)sum=10(C)sum=12(D)sum=1831、以下程序的输出结果是()voidfun(inta,intb,intc){a=456;b=567;c=678;}main(){intx=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%d”,z,y,x);}(A)30,20,10(B)10,20,30(C)456,567,678(D)678,567,45632、下面程序应能对两个整型变量的值进行交换。以下说法正确的是()main(){inta=10,b=20;printf((1)a=%d,b=%d\n,a,b);swap(&a,&b);printf((2)a=%d,b=%d\n,a,b;}swap(intp,intq){intt;t=p;p=q;q=t;}(A)该程序完全正确(B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可(C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针变量即可(D)以上说法都不正确33.执行下面的程序段后,a的值为:inta,b;for(a=1,b=1;a=100;a++){if(b=20)break;if(b%3==1){b+=3;continue;}b-=5;}A.7B.8C.9D.1034.该程序的输出结果是多少?#includestdio.hmain(){inti,j,x=0;for(i=0;i2;i++){x++;for(j=0;j=3;j++){if(j%2)continue;x++;}}printf(x=%d\n,x);}A.x=4B.x=8C.x=6D.x=1235.下面这个程序的输出是什么?第5页共10页#includestdio.hmain(){inty=10;while(y--);printf(y=%d\n,y);}A.y=0B.while构成死循环C.y=1D.y=-136C语言可执行程序从什么地方开始执行?A.程序中第一条可执行语句B.程序中第一个函数C.程序中的main函数D.包含文件中的第一个函数37.以下对C语言函数的有关描述中,正确的是:A.在C中,调用函数时,只能把实参的值传给形参,形参的值不能传给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中38.以下叙述中不正确的是:A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容C.在C中,全局变量的隐含类别是自动存储类别D.在C中,函数形参可以说明为register变量39、表示关系x=y=z的c语言表达式为:()a)(x=y)&&(y=z)b)(x=y)AND(y=z)c)(x=y=z)d)(x=y)&(y=z)40、假定a和b为int型变量,则执行以下语句后b的值为:()a=2;b=8;do{b-=a;a++;}while(b--0);a)6b)4c)–1d)541、下述对C语言字符数组的描述中错误的是:()a)字符数组可以存放字符串b)字符数组中的字符串可以整体输入、输出c)可以用关系运算符对两个字符串进行比较d)不能在赋值语句中通过赋值运算符“=”对字符数组整体赋值42、以下程序的输出结果是:()intf(intx,inty){intz;while(y){z=x%y;x=y;y=z;}return(x);}main(){inta=32,b=24,c;c=f(a,b);printf(“%d\n”,c);}a)6b)7c)8d)9二、多项选择题1、
本文标题:C语言复习题最新
链接地址:https://www.777doc.com/doc-7028275 .html