![C语言期末复习资料(fangbiande)_第1页](http://file4.renrendoc.com/view/3b241e0eba40803f67c64bbd04532559/3b241e0eba40803f67c64bbd045325591.gif)
![C语言期末复习资料(fangbiande)_第2页](http://file4.renrendoc.com/view/3b241e0eba40803f67c64bbd04532559/3b241e0eba40803f67c64bbd045325592.gif)
![C语言期末复习资料(fangbiande)_第3页](http://file4.renrendoc.com/view/3b241e0eba40803f67c64bbd04532559/3b241e0eba40803f67c64bbd045325593.gif)
![C语言期末复习资料(fangbiande)_第4页](http://file4.renrendoc.com/view/3b241e0eba40803f67c64bbd04532559/3b241e0eba40803f67c64bbd045325594.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
所有单选题1、c语言中下列叙述正确的是 .A:不能使用do-while语句构成的循环B:do-while语句构成的循环,必须用break语句才能退出C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D评析:本题的考查点是do-while语句.选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。故本题答案为D。知识点:知识点/循环结构程序设计ハ/VHILE和DOWHILE循环结构2、以下选项中属于C语言的数据类型是 A:复数型B:逻辑型C:双精度型D:集合型答案:C评析:本题的考查点是C语言的数据类型.C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类.其中,基本类型分为整型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。故本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法.下列描述中不正确的是 .A:字符型数组中可以存放字符串B:可以对字符型数组逬行整体输入、输出C:可以对整型数组逬行整体输入、输出D:不能在赋值语句中通过赋值运算符"="对字符型数组逬行整体赋值答案:C评析:本题的考查点是对数组的理解.C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串ー次输入或输出。所以,选项C的说法是不正确的.故本题答案为C。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用.以下程序的输出结果是 .main(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d",x-,y);A:10192B:9876C:10990D:101091答案:D评析:本题的考查点是for循环语句。f。啮句的一般格式为:for(表达式1;表达式2:表达式3)语句执行中只要表达式2为真,则执行for语句中指定的内嵌语句。所以,本题在条件为真的情况下,先执行printf函数。x--是先使用后运算。故本题答案为D。知识点:知识点Z循环结构程序设计/FOR循环结构5、以下程序的输出结果是。main(){chara[10]={■l',,2','3','4',,5,,,6','7','8','9',0)(*p;inti;i=8;p=a+i;printfC'%s\n",p-3);}A:6B:6789C:'6'D:789答案:B评析:本题的考查点是通过指针引用数组元素.指针P指向数组中第8个元素,即a[8]='9I。输出时,输出字符串,且指针把a[8]作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向a[5]为’6',所以输出为6789。故本题答案为B。知识点:知识点y指针/指针数组,指向指针的指针,MAIN函数的命令行参数.能正确表示a和b同时为正或同时为负的逻辑表达式是 。A:(a>=0||b>=0)&&(a<0||b<0)B:(a>=0&&b>=0)&&(a<0&&b<0)C:(a+b>0)&&(a+b<=0)D:a*b>0答案:D评析:本题的考查点是对逻辑表达式的判断。逻辑表达式是指用逻辑运算符将关系表达式或逻辑■连接起来.选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是〇,因为没有满足条件的值;选项C中,表达式表示的是〇,因为没有满足条件的值;选项D表示的是a和b为同号.故本题答案为D。知识点:知识点/基本语句/表达式语句,空语句,复合语句.以下程序的输出结果是。main(){intn=4;while(n-)printf("%d",-n);}A:20B:31C:321D:210答案:A评析:本题的考查点是while语句的判断。n--是先使用后运算,--n是先运算后使用。n=4时,执行n-ー后,n变为3,执行ー-n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。故本题答案为A。知识点:知识点/循环结构程序设计ハWHILE和DOWHILE循环结构8、以下程序的输出结果是 main(){intk=17;printf("%d,%o,%x\n",k,k,k);}A:17,021,0x11B:17,17,17C:17,0x11,021D:17,21,11答案:D评析:本题的考查点是不同格式的数据输出.printf函数对不同类型的数据用不同的格式字符,“%d”是以带符号的十逬制形式输出整数(正数不输出符号)厂‘%。"以8逬制无符号形式输出整数(不包括前导符〇)厂‘%X”以16逬制无符号形式输出整数(不包括前导符Ox).本题答案为D。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法9、若有说明:long*p,a;则不能通过scanfi吾句正确给输入项读入数据的程序段是 A:*p=&a;scanf("%ld",p);B:p=(long*)malloc(8);scanf("%ld,p);C:scanf("%ld",p=&a);D:scanf("%ld",&a);答案:A评析:本题的考查点是格式输入函数Scanf()的使用。scanf函数输入形式为:scanf(格式控制,地址表列);选项B中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanfi吾句正确给输入项读入数据;选项C中,p=&a,求出变量a的内存地址并赋给p;选项D中,能正确给输入项读入数据;故本题答案为A。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用10、以下选项中,能定义s为合法的结构体变量的是 A:typedefstructabc{doublea;charb[10];}s;B:struct{doublea;charb[10];)s;C:structABC{doublea;charb[10];}ABCs;D:typedefABC{doublea;charb[10];}ABCs;答案:B评析:本题的考査点是结构体变量的定义。定义ー个结构体类型的变量,可采用三种方法:(1)先定义结构体类型再定义变量名;(2)在定义类型的同时定义变量;(3)直接定义结构类型变量,即不出现结构体名;选项B符合第三种定义方法。故本题答案为B。知识点:知识点/结构体(即“结构”)与共用体(即“联合”)/结构体和共用体类型数据的定义方法和引用方法11、请读程序:#include<stdio.h>main()(inta,b;for(a=lfb=l;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;)printf(H%d\n"fa);上面程序的输出结果是 。A:7B:8C:9D:10答案:B评析:本题的考查点是break语句和continue语句."%”是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复.当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8。故本题答案为B.知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构12、请选出合法的C语言赋值语句A:a=b=58B:i++;C:a=58,b=58D:k=int(a+b);答案:B评析:本题的考查点是赋值语句。选项A和G殳有用分号表示语句结束,不合法;选项D,函数名和C语言的关键字重名,不合法。故本题答案为B.知识点:知识点/基本语句/表达式语句,空语句,复合语句13、请选出可用作C语言用户标识符的ー组标识符 ①void②a3_b3③For®2adefine_123_abcDOWORDIFcasesizeofA:©B:②C:③D:®答案:B评析:本题的考查点是C语言的标识符。C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。①中的void和define都和C语言的关键字重名,不合法;③中的case和C语言的关键字重名,不合法;④中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。故本题答案为B.知识点:知识点/数据类型及其运算/C的数据类型及其定义方法14、若x和y都是int型变量,x=100.y=200,且有下面的程序片段printf("%d",(x,y));上面程序片段的输出结果是 。A:200B:100C:100200D:输入格式符不够,输出不确定的值答案:A评析:本题的考查点是逗号表达式.在(x,y)中的ッ”是一个特殊的运算符,叫做逗号运算符,它的一般形式为:表达式1,表达式2,求解过程为:先求解表达式1,再求解表达式2.整个表达式的值是表达式2的值,(x,y)的值为200,所以输出结果为200。故本题答案为A.知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用15.若x是int型变量,且有下面的程序片段for(x=3;x<6;x++) printf((x%2)?(',**%d"):("##%d\n"),x);TOC\o"1-5"\h\z上面程序片段的输出结果是 。①**3 ②##3 ③##3 ©**3##4##4 **4 **4*#5 **5**5 *#5A:©B:②C:③D:©答案:D评析:本题的考查点是条件运算符。这种条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序为:先求解表达式1(若非〇则求解表达式2(此时表达式2的值就是整个条件表达式的値,若表达式1的值为〇,则求解表达式3,此时表达式3的值就是整个条件表达式的值。故本题答案为D。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性16.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是 .A:pb=&x;B:pb=x;C:*pb=&x;D:*pb=*x答案:A评析:本题的考查点是赋值表达式。选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确的赋值表达式。选项B是将x的值当作地址赋给指针pb,pb指向ー个地址等于x值的内存单元;选项C是将x的地址赋给指针pb指向的那个地址等于x值的内存单元;选项D是不正确的语句;本题答案为A。知识点:知识点/基本语句/表达式语句,空语句,复合语句17«若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*p;p=malloc(sizeof(int));则应填入A:intB:int*C:(*int)D:(int*)答案:D评析:本题的考查点是强制类型转换。不论P是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型・).故本题答案为D。知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算18、若有以下说明和语句,请选出哪个是对c数组元素的正确引用intc[4][5],(*cp)[5];cp=c;A:cp+1B:*(cp+3)C:*(cp+l)+3D:*(*cp+2)答案:D评析:本题的考查点是数组元素的引用.cp=c这个语句是将数组c的首地址赋给了指针数组cp的第一个数组元素。选项A,cp+1是指将数组c的首地址加1,不是对数组元素的引用;选项B,*(cp+3)是地址等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C,*(cp+1)+3是地址等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的弓I用.故本题答案为D。知识点:知识点y指针/指针数组,指向指针的指针,MAIN函数的命令行参数19、若执行下面的程序时从键盘上输入3和4,main(){inta,b,s;scanf("%d%d",&a,&b);s=a;if(a<b)s=b;s=s*s;printfC%d\n",s);)则输出是 A:14B:16C:18D:20答案:B评析:本题的考查点是给变量赋值。用戶输入的3和4分别赋给了a和b,在ifi吾句逬行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16.最后的打印结果为16。故本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句20、设a.b和c都是int型变量,且a=3、b=4、c=5.则下面的表达式中,值为〇的表达式是。A:'a'&&'b'B:a<=bC:a||+c&&b-cD:!((a<b)&&!c||l)答案:D评析:本题的考査点是几种运算符的使用。该题需要弄清楚以下几点:1、几种运算符的使用方法;2、C语言中运算符的结合方向(结合性);3、C语言中运算符的优先级。根据以上规则逬行表达式拆分,运算后即可得出正确答案。本题答案为D.知识点:知识点/数据类型及其运算/C运真符的种类、运算优先级和结合性21、设a=5、b=6,c=7、d=8、m=2、n=2.执行(m=a>b)&&(n=c>d)后n的值为D答案评析本题的考查点是逻辑与运算。在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下ー个逻辑运算符才能求出表达式的解时,オ执行该运算符。本题中,(m=a>b)的值为〇,求出整个表达式的值为0,不需执行(n=c>d),所以n仍为2。故本题答案为B。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性22、设ch是cha哩变量,其值为A,且有下面的表达式ch=(ch>='A&&ch<='Z')?(ch+32):ch上面表达式的值是 答案评析本题的考查点是条件运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3.条件运算符的执行顺序:先求解表达式1,若非。则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为〇,则求解表达式3,此时表达式3的值就作为整个表达式的值。本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。故本题答案为B.知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性23、设inta=12,则执行完语句a+=a-=a*a后,a的值是 。A:552B:264C:144D:-264答案:D评析:本题的考查点是赋值表达式的求解。第一步:a*a=144;(此时a=12)第二步:a-=144相当于a=a-144,a=a-144=-132;(此时a=-132)第三步:a+=a相当于a=a+a,a=a+a=-264;所以该表达式最后的值应当为ー264.故本题答案为D.知识点:知识点/数据类型及其运算/C表达式类型和求值规则24、设有如下枚举类型定义enumlanguage{Basic=3,Assembly=6,Ada=100,COBOL,Fortran);枚举量Fortran的值为A:4B:7C:102D:103答案:C评析:本题考査的是数据类型。这个枚举中共有5个元素,前三个已有明确的赋值,而COBOL和Fortran没有明确的赋值,枚举的语法规定当枚举元素没有赋值时,其值为其前一个元素的值加一,所以COBOL的值为101,故Fortran的值应为102。故答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法25、设有以下语句,其中不是对a数组元素的正确引用的是:(其中0Vi<10)inta[10]={0,l,2,3,4,5,6,7,8,9,),*p=a;A:a[p-a]B:*(&a[i])C:p[i]D:*(*(a+i))答案:D评析:本题的考查点是通过指针引用数组元素。观察程序可知,a实际上就是数组a的首地址,所以"*(a+i)”表示的就是数组a中的第i个元素的值,逬而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用.故本题答案为D.知识点:知识点Z指针/指针数组,指向指针的指针,MAIN函数的命令行参数26、设有以下语句chara=3,b=6,c;c=aAb<<2;则c的二进制值是.A:00011011B:00010100C:00011100D:00011000答案:A评析:本题的考查点是位运算。"〈ぐ’是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;へ是异或运算符,所以,c的二进制值应为00011011.故本题答案为A.知识点:知识点A立运算/简单的位运算27、设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a的值是C:9D:-12答案:D评析:本题的考查点是赋值表达式的求解.第一步:a*a=9;(此时a=3)第二步:a-=9相当于a=a-9,a=a-9=-6;(此时a=-6)第三步:a+=a相当于a=a+a,a=a+a=-12;所以该表达式最后的值应当为ー12.故本题答案为D.知识点:知识点/数据类型及其运算/C表达式类型和求值规则28、下面程序main(){intx=100,a=10,b=20,okl=5,ok2=0;if(a<b)if(b!=15)if(!okl)x=l;elseif(ok2)x=10;x=-l;printf("%d\n",x);的输出是A:-1B:0C:1D:不确定的值答案:A评析:本题的考查点是判断语句的循环嵌套。第一个判断值为真,过渡到下ー个判断,第二个判断为真,过渡到第三个判断……如此循环,在打印输出语句的前一行,程序给变量x赋了值,为ー1,所以,无论前期如何变化,最后的x值依然为ー1.故本题答案为A.知识点:知识点/循环结构程序设计/循环的徽套29、下面程序main()(intx=32;printf("%d\n",x=x<<l);的输出是.A:100B:160C:120D:64答案:D评析:本题的考查点是位运算。<<是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二逬制数左移两位,左移ー位相当于该数乘于2I左移两位相当于该数乘以2的2次方。所以,x<<1=32*2=64.故本题答案为D。知识点:知识点/位运算/简单的位运算30、下面程序main()(inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;printf("%d\n",*(p+2));)的输出是。D:2答案:A评析:本题的考査点是通过指针引用数组元素.*p=a语句是使指针p指向数组a的第一个数组元素,因此*(p+2脚是数组a的第3个元素的值,BPa[2].故本题答案为A.知识点:知识点y指针/指针数组,指向指针的指针,MAIN函数的命令行参数31、下面程序main(){intx=10,y=3;printf("%d\n",y=x/y);}的输出是 0A:0B:1C:3D:不确定的值答案:C评析:本题的考查点是除法运算。x/y的结果约为3.33333i但是由于打印要求为整型,所以自动转换为整型(相当于截取整数位),打印结果为3.故本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法32、下面程序voidprtv(int*x){printf("%d\n",++*x);}main(){inta=25;prtv(&a);}的输出是 A:23B:24C:25D:26答案:D评析:本题的考查点国旨针变量作为函数参数。观察程序,可以发现,函数prtv()的作用是将地址等于x的内存单元中值加1,因为我们在主函数中是将变量a的地址作为实参传递给了prtv()函数,所以,函数prtv()将地址等于变量a的地址的那个内存单元中値加一,打印结果自然就是25+1=26了.故本题答案为D.知识点:知识点Z指针/指针数组,指向指针的指针,MAIN函数的命令行参数33、下面的程序main(){intx=3;do{printf("%d\n",x-=2);A:输出的是1B:输出的是1和一2C:输出的是3和〇D:是死循环答案:B评析:本题的考查点是do-while语句。在第一次循环时,先计算表达式x-=2,所以输出1,一x为〇,判断表达式的值为非零,返回重新执行该语句;在第二次循环时,表达式x-=2,即ー2,所以输出ー2,--X为ー3,判断表达式的值为零,循环结束。故本题答案为B。知识点:知识点/循环结构程序设计ハWHILE和DOWHILE循环结构34、下面的程序中错误(每行程序前面的数字是行号).#include<stdio.h>main()(floata[3]={0.0};inti;6 for(i=0;i<3;i++)scanf("%d",a[i]);7 for(i=l;i<3;i++)a[0]=a[0]+a[i];8 printf('%f\n",a[O]);9 )A:没B:第4行C:第6行D:第8行答案:C评析:本题的考查点是函数scanf()的格式输入。根据函数scanf()的语法可知,在函数中的参数表列部分,应当是欲赋值变量的内存地址,象第六行这样,将数组元素直接放在参数表列中是无法达到给数组元素赋值的目的。故本题答案为C。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用35、下面函数intfunl(char*x){char*y=x;while(*y++);return(y-x-l);}的功能是 A:求字符串的长度B:比较两个字符串的大小C:将字符串X复制到字符串yD:将字符串x连接到字符串y后面答案:A评析:本题的考查点是while。循环语句.这个函数的功能是求字符串的长度,需要注意的是,在返回长度时一定记住要减ー,否则计算出的串长度将会多一。故本题答案是A.知识点:知识点/循环结构程序设计ハ/VHILE和DOWHILE循环结构36、以下程序的输出结果是 。#include<stdio.h>main()(inti=10,j=10;printf("%d,%d\n”,++i,j-);)A:11,10B:9,10C:010,9D:10,9答案:A评析:本题的考查点是变量的自増、自减运算.++i是先对i逬行加1运算,再使用i的值;j-是先使用j值,再对j逬行减1运算。所以,程序的打印结果应当为“11,10”.故本题答案为A。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性37、以下的for循环:for(x=0,y=0;(y!=123)&&(x<4);x++);A:是无限循环B:循环次数不定C:执行4次D:执行3次答案:C评析:本题的考查点是fori吾句循环条件的判断。循环条件是表达式(y!=123)&&(x<4),因为y值始终为〇,所以表达式左边一定恒为1,当x<4时,循环可以运行,当x=4时,循环终止,所以这个循环ー共可以执行4次。故本题答案为C.知识点:知识点Z循环结构程序设计/FOR循环结构38、有以下程序:#include<stdio.h>unionpw{inti;charch[2];)a;main(){a.ch[0]=13;a.ch[l]=O;printf("%d\n".a.i);}程序的输出结果是(注意:ch[〇]在低字节»ch[l]在高字节).A:13B:14C:208D:209答案:A评析:本题的考查点是共用体类型数据的特点.根据共用体的定义可知:共用体a的成员i和成员ch[2]是共用着同一段内存空间师以,当程序给a.ch[〇]赋值后,实际上,共用体成员i的值也确定了,为13,所以打印输岀的结果应当为13.故本题答案为A.知识点:知识点Z结构体(即“结构”)与共用体(即“联合”)/结构体和共用体类型数据的定义方法和引用方法39、有以下程序main(){intc;while((c=getchar())!="\n'){switch(c-'2){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}从第一列开始输入以下数据,/代表ー个回车符.2473/程序的输出结果是 .A:668977B:668966C:66778777D:6688766答案:A评析:本题的考查点是switch。语句.getchar()函数是从犍盘接受一个字符输入;当用户键入的字符不是回车符时,会逬入一个多分支选择语句,根据表达式c-2的值逬行分支选择;putchar()是在屏幕上打印ー个字符,最后的结果应当为668977.故本题答案为A。知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构40、执行下面程序片段的结果是
intx=23;doprintf("%2d",x-);)while(!x);A:打印出321B:打印出23C:不打印任何内容D:陷入死循环答案:B评析:本题的考查点是do-while循环语句的判断。X-ー是自减运算,先使用x的值,后逬行自减运算,所以打印出来的结果应当为23.故本题答案为瓦知识点:知识点/循环结构程序设计ハWHILE和DOWHILE循环结构41、执行下面的程序段intx=35;charz="A';intB;B=((x&15)&&(z<'a));后,B的值为D:3答案:B评析:本题的考查点是逻辑与及位与运算。从整个表达式来看是个逻辑表达式,而与运算符’&&”的右边的子表达式中由于z的值为“A”,而A的ASCII码的值小于a的ASCII码值,所以这个子表达式的值为真,即1;在与运算符"&&”的左边的子表达式是个基于位运算的子表达式,将x的值与15做位与运算,表达式値不为零,所以两个子表达式的与值应当为1.故本题答案为B.知识点:知识点/位运算/位运算符的含义及使用42、表达式:10!=9的值是 .true非零值0true非零值01DB:C:ID:答案:评析:本题的考查点是关系运算符!ニ。在这种运算中,表达式的值只有两种:1或。,表达式10!=9的值应当是,故本题答案为D。知识点:知识点/数据类型及其运算/C表达式类型和求值规则43、若有说明:inti,j=7,*p=&i;则与i寸等价的语句是 。A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B评析:本题的考查点是指针变量的引用.P的地址本身和啲地址一样所以・p代表i中的数值而&j是j的地址:&j就是j中的数值所以/p=*&j和i可是等价的.故本题答案为B。知识点:知识点/指针/指针与指针变量的概念,指针与地址运算符44、以下程序的输出结果是 main(){char*s="12134211";intv[4]={0,0,0,0),k.i;for(k=O;s[k];k++){switch(s[k]){case"l":i=O;case"2":i=l;case"3":i=2;case"4":i=3;}v[i]++;)for(k=0;k<4;k++)printf("%d",v[k]);}A:4211B:0008C:4678D:8888答案:B评析:本题的考查点是switch语句的应用.在每次执行switch后面括号内的表达式s[k]时,要先取当前s[k]的值与case后的字符常量逬行比较,找到与之匹配的分支后,即转去执行该分支中的语句。switch语句中,某分支执行完毕,若未遇到break语句,则接着执行剩余的其它分支,直到遇到break语句.此题中,因为没有break语句,所以总会执行到i=3,即总是v[3]在递加。故本题答案为B.知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构45、有如下程序main(){intn=9;while(n>6)n-;printf("%d",n);}}该程序的输出结果是 A:987B:876C:8765D:9876答案:B评析:本题考查点是While语句循环次数的问题。符合n>6的n只有7,8,9;所以循环次数为3.选项C、D可以排除.又因n在输出之前要执行n--,所以输出结果只能是876.本题答案为B.知识点:知识点Z循环结构程序设计ハWHILE和DOWHILE循环结构46、设有说明语句:chara='\72’;则变量aA:包含1个字符B:包含2个字符C:包含3个字符D:说明不合法答案:A评析:本题考查点是转义字符的应用。转义字符常量‘'XX,可以把、后面的数字转换为对应的ASCII字符,、72,表示的是ASCII码等于72的那个字符,即为“H”,所以在字符变量中存储的只是”H“这ー个字符.故本题答案为A.知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算47、若变量已正确定义并赋值,下面符合C语言的表达式是.A:a:=b+lB:a=b=c+2C:int18.5%3D:a=a+7=c+b答案:B评析:选项A和C显然错误:对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左值不能为常量或表达式。本题答案为B.知识点:知识点/基本语句/表达式语句,空语句,复合语句48、若已定义x和y为double类型,则表达式x=l,y=x+3/2的值是.A:1B:2C:2.0D:2.5答案:C评析:这是ー个逗号表达式,它的值应为表达式y=x+3/2的值,而前一个表达式已给X赋值1,在没有逬行类型转换的情况下,3/2的值为1.所以x+3/2的值应为2.0.本题答案为U知识点:知识点/基本语句/表达式语句,空语句,复合语句49、若变量a、i已正确定义,且i已正确赋值,合法的语句是 .A:a==lB:++i;C:a=a++=5D:a=int(i);答案:B评析:选项D显然是错的,而选项A没有分号结束,不是C语句;a++=5违反了赋值表达式左值必须为一个变量(不能是常量或表达式)的规定.本题答案为B.知识点:知识点/基本语句/表达式语句,空语句,复合语句50、有如下程序main(){inty=3,x=3,z=l;printf("%d%d\n",(++x,y++),z+2);}运彳友程序的输出结果是 D答案评析逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3.本题答案为D.知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用51、有如下程序main(){intx=l,a=0,b=0;switch(x){case0:b++;a++;a++;b++;printf("a=%d,b=%d\n",a,b);}该程序的输出结果是 。A:a=2,b=lB:a=l,b=lC:a=lrb=OD:a=2fb=2答案:A评析:在这介switch语句中,因为x的值为1,所以执行case1:后面的a++,这样a=1。但又由于其下没有break语句,所以其后面的语句(a++;b++)也将破执行,这样ー来,a=2,b=1。本题答案为A。知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构52、有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n”,y);)该程序输出结果是 A:0.000000B:0.250000C:0.500000D:1.000000答案:c评析:本题考查的是IF…ELSE语句的使用。x=2.0,符合第二个IF语句的条件x<10.0,所以执行y=l.0ホ语句,即y=1.0/2.0=0.500000。本题答案为U知识点:知识点/选择结构程序设计/用IF语句实现选择结构53、有如下程序main(){inta=2rb=-lfc=2;if(a<b)if(b<0)c=0;elseC++;printf("%d\n",c);}该程序的输岀结果是 D答案评析由于条件(a<b)并不满足,所以if(a<b)后面的语句并没有槌执行,c仍然等于2.本题答案为C知识点:知识点/选择结构程序设计/用IF语句实现选择结构54、有如下程序mainO{inti.sum;for(i=l;i<=3;sum++)sum+=i;printf("%d\n",sum);)该程序的执行结果是A:6B:3C:死循环D:0答案:C评析:在循环过程中,i的值一直没有被改变,所以这是ー个死循环。本题答案为C知识点:知识点/循环结构程序设计/FOR循环结构55、有如下程序main(){intn=9;while(n>6){n-;printf("%d",n);}}该程序段的输出结果是 A:987B:876C:8765D:9876答案:B评析:符合n>6的n只有7,8,9;所以循环次数为3.C,D可以排除。又:n在输出之前要执行n一,所以输出结果只能是876.本题答案为民知识点:知识点/循环结构程序设计ハWHILE和DOWHILE循环结构56、设有说明语句:charaハ72';则变量aA:包含1个字符B:包含2个字符C:包含3个字符D:说明不合法答案:A评析:转义字符常量‘'XX’可以把、后面的数字转换为对应的ASCII字符,ヽ72'就是'H'.本题答案为A。知识点:知识点/基本语句/表达式语句,空语句,复合语句57、有如下程序段int*p,a=10,b=l;p=&a;a=*p+b;执彳デ亥程序段后,a的值为A:12B:11C:10D:编译出错答案:B评析:执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11.本题答案为B。知识点:知识点/指针/指针与指针变量的概念,指针与地址运算符58、对于基类型相同的两个指针变量之间,不能逬行的运算是.A:<B:=C:+D:-答案:C评析:指针之间不能逬行加运算.本题答案为C.知识点:知识点/指针/指针与指针变量的概念,指针与地址运算符59、有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=l;i<=NUM;i++)printf("%d\n",i);}该程序中的for循环执行的次数是.A:5B:6C:7D:8答案:B评析:在C语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+1+1,即2*2+1+1,值为!6。因此,for循环执行的次数为6.本题答案为B。知识点:知识点Z循环结构程序设计/FOR循环结构60、有如下程序段inta=14,b=15,x;charc='A";x=(a&&b)&&(c<B');执彳デ亥程序段后,x的值为A:trueB:falseC:0D:1答案:D评析:a&&b的值为true,cv'B'的值也为true,所以(a&&b)&&(c<'B')的值为true。但x是in理变量,所以9&&13)&&(<:<岀’)的值最后要从1J。。1型转换为而1型赋给人这样x的值应为エ本题答案为D.知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算61、有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数値为9的表达式是。A:*p+9B:*(p+8)C:*p+=9D:p+8答案:B评析:P是指针,p+8是地址值,D是错的;*p是p的目标变量,即a[0],值为1,所以・p+9的值是10.而*p+=9值是重新给a[0]赋了值(1+9);所以A和C也是错的。p+8是地址值,指向a[8],那么・(p+8)的值就是a[8]的值,即9。本题答案为B。知识点:知识点Z指针/指针数组,指向指针的指针,MAIN函数的命令行参数62、有如下程序main()(intn[5]={O,O,O),i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}该程序的输出结果是 .A:不确定的值B:2C:1D:0答案:D评析:由代码可知,题中的for循环值执行2次(i=0和1),所以只对a[0]和a[l]重新赋了值,而a[k]即a[2]的值并没有变,仍为0。本题答案为D。知识点:知识点/循环结构程序设计/FOR循环结构63、有如下程序main()inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i]Q]];printf("%d\n",s);}该程序的输出结果是.A:18B:19C:20D:21答案:A评析:题中的外循环只执行了2次:第1次:a[l][0]=3,a[l][l]=4,所以s=7;第2次:a[2][0]=5,a(2][l]=6,a[2][2]=0,所以s=7+5+6+0=18。本题答案为A。知识点:知识点/循环结构程序设计/循环的嵌套64、有如下定义structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16,);根据上述定义,能输出字母M的语句是 A:printf("%c\n",class[3].name);B:printf("%c\n",class[3].name[l]);C:printf("%c\n",class[2].name[l]);D:printf("%c\n",class[2].name[0]);答案:D评析:选项A将输出A;选项B将输出d;选项C将输出a;选项D将输出M。本题答案为D.知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用65、以下对结构体类型变量的定义中,不正确的是.A:typedefstructaa{intn;floatm;}AA;AAtdl;B:#defineAAstructaaAA{intn;floatm;}tdl;C:struct{intn;floatm;}aa;structaatdl;D:struct{intn;floatm;}tdl;答案:C评析:在答案C中,aa是ー个结构体变・,而不是结构体名,所以structaatdl;是非法的.本题答案为c知识点:知识点Z结构体(即“结构”)与共用体(即”联合”)/结构体和共用体类型数据的定义方法和引用方法66、下列叙述中正确的是 。A:C语言编译时不检查语法B:C语言的子程序有过程和函数两种C:C语言的函数可以嵌套定义D:C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数答案:D评析:选项A的错误在于编译过程中是检查语法的,若发现源程序有语法错误,则系统会提示出错信息;选项B的错误在于C语言中,子程序的作用是由函数来完成的,无过程的概念;选项C的错误在于函数不可以嵌套定义,但可以嵌套调用。本题答案为D.知识点:知识点ZC语言的结构網序的构成,MAIN函数和其他函数67、以下列出C语言常量中,错误的是 。A:OxFFB:1.2e0.5C:2LD:'\72'答案:B评析:C语言中的指数形式,字母E之前必须有数字,且E后面指数必须为整数.本题答案为民知识点:知识点/数据类型及其运算/C的数据类型及其定义方法68、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是A:x/y*zB:x*(l/(y*z))C:x/y*l/zD:x/y/z答案:A评析:按照自左向右的运算逻辑,选项A是先做x/y,然后再乘以x,显然与题意不符.本题答案为A.知识点:知识点/数据类型及其运算/C的数据类型及其定义方法69、若a为int类型,且其值为3,则执行完表达式a+=a-=a*aB,a的值是 .A:-3B:9C:-12D:6答案:C评析:C语言中对赋值运算的运算顺序是自右向左。本题中,计算a*a之后,a的值依然为3.表达式a*a的值为9;a-=9,a=3-9=-6;a+=-6,a=-6+-6=-12.本题答案为c知识点:知识点/数据类型及其运算/C表达式类型和求值规则70、设x、y、的为int型变量,则执彳描句:x=y=3;t=++x||++y;后,y的值为.A:不定值B:4C:3D:1答案:C评析:C语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一旦运到某式的值为非零时,表明整个表达式定为真,余下的语句则不再逬行运算。本题中,++x的值为真,则++y并没有逬行运算,所以y值不变。本题答案为Q知识点:知识点/基本语句/复合语句71、若变量已正确说明为float类型,要通过语句scanf("%f%f%f”,&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:A:102233B:10.0,22.0,33.0C:10.022.033.0D:102233答案:B评析:C语言中,数据输入时,必需严格按照scan個句中的格式符来逬行输入,不需要分隔符,否则作为有效字符读入.选项中B中的逗号将被做为有效字符读入。本题答案为B。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用72、若a、b.cl、c2、x,y均是整型变量,正确的switch语句是 。®switch(a-f-b);{casel:y=a+b;break;case0:y=a-b;break;}②switch(a*a+b*b){case3:casel:y=a+b;break;case3:y=b-a;break;}@switcha{casecl:y=a-b;break;casec2:x=a*b;break;default:x=a+b;switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:casell:y=a-b;break;)A:©B:②C:③D:@答案:D评析:选项A的错误在于switch语句后面不该加分号;选项B的错误在于switch语句要求每ー个case的常・表达式的值必须互不相同;选项C的错误在于变量a应该用括号括起来,case后面应该跟上常量表达式,而不是变量。本题答案为D.知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构73、有以下程序段intk=0;while(k=l)k++;while循环执行的次数是一A:无限次B:有语法错,不能执行C:一次也不执行D:执行1次答案:A评析:乍ー看,还以为程序要表达的意思是当k等于1的时候做k++,但是C语言里关系表达式的等于应该是"==ー个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=l的值总为1,while后面的表达式恒为真,当然会逬入死循环。本题答案为A。知识点:知识点y循环结构程序设计ハ/VHILE和DOWHILE循环结构74、以下程序执行后sum的值是.main(){inti,sum;for(i=l;i<6;i++)sum+=i;printf("%d\n",sum);C:不确定D:0答案:c评析:变量sum在使用时未赋初值,所以无法确定sum最终的值.本题答案为C知识点:知识点Z循环结构程序设计/FOR循环结构75、下面程序的输出结果是 main(){intaD={1,2,3,4,5,6,7,8,9,0).*P;p=a;printf("%d\n",*p+9);}A:0B:1C:10D:9答案:C评析:本题中,p=a,则表明指针p指向数组a的第一个元素,即a[0]•指针运算符"*”的优先级髙于加法运算符”+",所以"*P+9”相当于a[0]+9,BP10.本题答案为C.知识点:知识点Z指针/指针数组,指向指针的指针,MAIN函数的命令行参数76、设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述中不正确的是 A:struct是结构体类型的关键字B:example是结构体类型名C:x,y,z都是结构体成员名D:structex是结构体类型答案:B评析:example是结构体变量名。本题答案为B。知识点:知识点Z结构体(即“结构")与共用体(即"联合”)/结构体和共用体类型数据的定义方法和引用方法77、以下程序的输出结果是 .main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+l)];for(i=0;i<3;i++)k+=p[i]*2;printf(M%d\nH,k);}A:20B:21C:22D:23答案:BiWr:按照程序的流程走一遍,我们可以得到,p[0]=0,p[l]=2,p[3]=6;做三次k+=p[i]*2.相当于k=5+0*2+2*2+6*2=21.本题答案为B.知识点:知识点/循环结构程序设计/循环的僚套78、以下程序的输出结果是 #defineSQR(X)X*Xmain(){inta=16,k=2,m=l;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);)A:16B:2C:9D:1答案:B评析:本题所考查的是宏定义.C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右逬行置换。在做这条题时,我们也不妨将运用置换法。得到:a/=k+m*k+m/k+m*k+m=16/7=2.注:a为整形,所以在做除法时,自动取整.本题答案为B。知识点:知识点/基本语句/复合语句79、若定义了以下函数:voidf( )*p=(double*)malloc(10*sizeof(double));P是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是A:double*pB:float**pC:double**pD:float*p答案:C评析:通过程序中给出的语句,我们可以判断,*p是一个指向double型指针的指针.因此,要通过p把动态分配存储单元的地址传回主调函数,应该使用double**p.本题答案为C。知识点:知识点/指针ノ返回指针值的指针函数80、假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是 0IP IqdatanextA:free(q);p->next=q->next;B:(*p).next=(*q).next;free(q);C:q=(*q).next;(*p).next=q;free(q);D:q=q->next;p->next=q;p=p->next;free(p);答案:BiWr:选项A的错误在于,已经先把q结点给释放,无法再进行余下语句了;选项C和D的错误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的ー个结点。本题答案为B.知识点:知识点/结构体(即“结构")与共用体(即“联合“)/用指针和结构体构成链表81、以下程序的输出结果是 .main(){intx=05;charz="a';printf("%d\n",(x&l)&&(z<'z"));}A:0B:1C:2D:3答案:B评析:关系表达式(x&l)&&(z<'z'),(x&l)为真,(z<'z')也为真,两个相与,自然也为真,以整型输出,则输出1.本题答案为B.知识点:知识点/位运算/简单的位运算82、设xツ均为int型变量,Hx=10,y=3,则以下数据的输出结果是printf('%d,%d\n-,x-,-y).A:10,3B:9,3C:9,2D:10,2答案:D评析:本题主要考查C语言的自减运算符。C语言的自减运算符有前置与后置两种形式。当自减运算符前置时,变量先自减ー后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减ー。本题答案为D.知识点:知识点Z基本语句/数据的输入与输出,输入输出函数的调用83、X.Y.Z被定义为int型变量,若从犍盘给X*Y、Z输入数据,正确的输入语句是 。A:INPUTX,Y,Z;B:scanf(',%d%d%d",&X,&Y,&Z);C:scanf("%d%d%d",X,Y,Z);D:read("%d%d%d",&X,&Y,&Z);答案:B评析:本题考查C语言的格式化输入语句.C语言中没有INPUT与read语句,scanf()语句的格式为:scanf(“格式字符串”,变量地址1,变量地址2,...);本题答案C中,应为变量地址。本题答案为B。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用84、以下程序的输出结果是。main(){inta=3;printf("%d\n",(a+=a-=a*a));B:1C:2D:-12答案:D评析:本题考查C语言的赋值运算符。a+=b就等于a=a+b,a-=b就等于a=a-b。本题答案为D。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用85、设a、b,c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为 ・A:0B:1C:2D:3答案:A评析:本题考查C语言的比较运算符与逻辑运算符。C语言中比较表达式的运算结果为〇或1。0代表不成立,1表示成立。本题答案为A。知识点:知识点Z基本语句/表达式语句,空语句,复合语句86、阅读以下程序main(){intx;scanf(“%d“,&x);if(x--<5)printf("%d\n",x);elseprintf("%d\n",x++);I程序运行后,如果从機盘上输入51则输出结果是 。答案:B评析:本题考查C语言中的自增(++)与自减(-)运算符。C语言中“++“与“一”运算符有前置与后置两种形式,前置时变量先自增ー或自减一后再参与表达式的运算,后置时变量先参与表达式的运算后再自增ー或自减ー。本题答案为B。知识点:知识点/选择结构程序设计/用IF语句实现选择结构87、假定w、x、y、z、m均为int型变量,有如下程序段:w=l;x=2;y=3;z=4m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;则该程序段执行后,m的值是答案:D评析本题考查C语言的条件运算符。C语言中条件运算符的表达式为:表达式?数1:数2当表达式为非零时条件运算符的表达式的值为数1,否则为数2。本题答案为D。知识点:知识点/基本语句/复合语句88、t为int类型,逬入下面的循环之前,t的值为〇,while(t=l){……}则以下叙述中正确的是 .A:循环控制表达式的值为〇B:循环控制表达式的值为1C:循环控制表达式不合法D:以上说法都不对答案:B评析:本题考查C语言的while循环语句。本题的t=l是ー个赋值表达式,其值为变量的值,所以while语句的循环控制表达式的值为,本题答案为B。知识点:知识点/循环结构程序设计ハ/VHILE和DOWHILE循环结构89、以下程序的输出结果是^main(){intnum=0;while(num<=2)num++;printf("%d\n",num);}D)lQ12D)lQ12B)123A)B)0D:c・・ABcD案析A1234答评本题考查C语言的while循环语句。C语言中while语句的一般形式如下:while(表达式)(语句部分;}该语句的执行过程是:先计算表达式的值,若成立(即值为非零)则重新执彳箍句部分(循环体),然后再次计算表达式的值,并重复上述过程,直到表达式的值为”假“(值为零)时,退出循环,并转下一语句去执行.本题答案为C.知识点:知识点y循环结构程序设计ハ/VHILE和D。WHILE循环结构90、以下各选项企图说明一种新的类型名,其中正确的是^.A:typedefvlint;B:typedefv2=int;C:typedefintv3;D:typedefv4:int答案:C评析:本题考查C语言的类型定义。C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名.本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法91.设有以下函数;f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));A)B)C)D)777789107911137A:A)B:B)C:C)D:D)答案:A评析:本题考查的是C语言的静态数据类型。静态数据类型的变量的值在退出了函数时依然存放在内存中,且只初始化一次.本题答案为A。知识点:知识点/循环结构程序设计/FOR循环结构92、以下选项中,非法的字符常量是^A:'\t'B:'\17'C:"\n"D:\xaa'答案:C评析:本题考查C语言的字符常量与转义字符.C语言中字符常量是以单引号括起来的单个字符,或为以“ヾ与三位八进制数值或两位十六逬制数值代替单个字符.本题答案为C知识点:知识点/数据类型及其运算/C的数据类型及其定义方法93、若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是 .A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B评析:本题考查C语言中指针赋值运算。指针是一种特殊的变量,它是用来存放变量地址的变量.指针定义时可以为其赋初值.只有指针被赋了值后才能对其使用.本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句94、以下定义语句中,错误的是 .A:inta[]={1,2};B:char*a[3];C:chars[10]="test";D:intn=5,a[n];答案:D评析:本题考查C语言数组的定义与初始化。在C语言中数组的初始化可以对部分元素,数组的定义,不能含有变量.本题答案为D.知识点:知识点/数据类型及其运算/C的数据类型及其定义方法95、以下程序的输出结果是main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf(,%d%d%d",a[2],a[5],a[8]);}A:258B:741C:852D:369答案:C评析:本题使循环语句给数组元素赋值。C语言中for循环语句的一般形式为:for(表达式1;表达式2;表达式3)(语句部分;}本题答案为C知识点:知识点Z循环结构程序设计/FOR循环结构96、以下程序的输出结果是^main(){charst[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));)A:99B:520C:1320D:2020答案:B评析:本题主要考查C语言的字符串与库函数。C语言中字符串是以‘、〇’字符结束的,且strlen()函数计算的是'、〇'字符前的所有字符的个数。本题中strlen(sリ应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小.所以本题的sizeof(sり为2〇.本题答案为B。知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算97、以下程序输出正确的是^=.amovep(int*p,int(*a)[3],intn){intij;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;})main(){int*p,a[3][3]={{l,3,5}f{2,4,6}};p=(int*)malloc(100);amovep(p(ar3);printf("%d%d\n",p[2],p[5]);free(p);}A:56B:25C:34D:程序错误答案:A评析:本题主要考查的是指针与数组的操作。可以用malloc()函数为指针分区内存空间,用free。函数释放指针变量所用内存空间。本题答案为A。知识点:知识点Z循环结构程序设计/FOR循环结构98、以下程序的输出结果是structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=l;h[0].y=2;h[l].x=3;h[l].y=4;h[O].p=&h[l];h[l].p=h;printf("%d%d\n",(h[O].p)->x,(h[l].p)->y);}A:12B:23C:14D:32答案:D评析:本题考查的是C语言中结构体与链表。本题中是ー个含有两个结点的循环链表。C语言中结构体的定义为:struct结构体类型名(成员表列;};本题答案为D。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用99、以下程序的输出结果是^main(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=10)break;if(b%3==l){b+=3;continue;))printf("%d\n",a);}A:101B:6C:5D:4答案:D评析:本题主要考查考生对C语言中的循环语句和程序的执行逻辑.本题中for循环语句共执行3次,所以a的值累加3次,结果为4.本题答案为D.知识点:知识点"S环结构程序设计/FOR循环结构.以下程序的输出结果是ー=.unionmyun{struct{intx,yfz;}u;intk;}a;main(0{a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n",a.u.x);}A:4B:5C:6D:0答案:D评析:本题主要考查C语言中构造类型,联合体与结构体。结构体中的成员使用各自的存储区,而联合体中的成员使用共同的存储区。本题答案为D。知识点:知识点ノ基本语句/数据的输入与输出,输入输出函数的调用.以下程序的结果是inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}A:100200B:57C:200100D:75答案:B评析:本题主要考查的是C语言中的变量作用域。全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。所以本题主函数的局部变量a,b把同名的全程变量屏蔽了.本题答案为B。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用102、以下选项中不属于C语言的类型和是 “A:signedshortintB:unsignedcharC:singedlongD:longshort答案:D评析:C语言中归纳起来,基本类型数据有以下几种:[singed]char;unsigedchar;[signed]short[int];unsignedshort[int];[signed]long[int];unsighedlong[int];float;double.本题答案为D。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法103、若有说明语言:inta,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是 。A:scanf("%d%d%d",&a,&b,d);B:scanf(-%d%d%d",&a,&b,&d);C:scanf("%d%d%d",a,b,d);D:scanf("%d%d%d",a,b,*d);答案:A评析:在scan楣句中,要为某ー变量赋值,引用的是该变量的地址,所以在这里要为a,b,c赋值可以写成两种形式,除了采用答案B的形式外,还可以写成scanf("%d%d%d",&a,&b,d)。本题答案为A。知识点:知识点Z基本语句/表达式语句,空语句,复合语句104、在16位C编译系统上,若定义longa;.则能给a蹴40000的正确语句是 .A:a=20000+20000B:a=4000*10C:a=30000+10000D:a=4000L*10L答案:D评析:除D之外的选项的右边的表达式都超过了16位带符号整数的范围(32767).本题答案为D.知识点:知识点/基本语句/表达式语句,空语句,复合语句.以下叙述正确的是 .A:可以把define和if定义为用户标识符B:可以把define定义为用户标识符,但不能把if定义为用户标识符C:可以把if定义为用户标识符,但不能把define定义为用户标识符D:define和i偷不能定义为用户标识符答案:B评析:if属于系统定义的32个标准标识符之一,所以不可以供用户定义.define不在其中.本题答案为B.知识点:知识点/数据类型及其运算/C的数据类型及其定义方法.若定义:inta=511,*b=&a:1则print优%d\n”,*b):的输出结果为 ・A:无确定值B:a的地址C:512D:511答案:D评析:本题,首先定义了一个整型变量a,并将它赋值为511,然后又定义了一个指针变量,将它赋值为变・a的地址,在输出语句中,输出项是・b,而・b=a,所以输出结果应该是511.本题答案为D.知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用.以下程序的输出结果是main(){inta=5,b=4,c=6,d;printf("%d\n",d=a>c?(a>c?a:c):(b));}A:5B:4C:6D:不确定答案:C评析:本题最重要的分析d=a>c?(a>c?a:c):(b)),首先运算括号内的式子a>c?a:c,它的值是c的值6I即式子化成d=a>c?6:4.显然a>c,所以将6赋给d.本题答案为C知识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级读书日活动方案6篇
- 2024-2025学年四川省江油市太白中学高一上学期12月月考历史试卷
- 2025年工程项目策划安全生产合作协议书
- 2025年自动抄表系统项目立项申请报告模范
- 2025年工程机械部件项目立项申请报告模范
- 2025年众筹平台项目融资合同
- 2025年养殖园区合作经营合作协议书
- 2025年农村邮政服务合同样本
- 2025年不锈钢产品质量保证合同
- 2025年麦田房产策划交易保证金协议书
- 甲基异丁基甲酮化学品安全技术说明书
- SURPAC软件地质建模操作步骤
- (中职)化学分析技术项目一 走进化学分析实验室教学课件
- 探放水工培训教材
- 秘书实务完整版课件全套ppt教程
- 新版神经系统疾病的病史采集和体格检查ppt
- 义务教育《历史》课程标准(2022年版)
- 螺栓扭紧力矩表
- 国家标准硬度转换表
- 第02章 滑模变结构控制基础
- landmark compass培训材料
评论
0/150
提交评论