文档介绍:该【c语言编程练习题必考题 】是由【闰土】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【c语言编程练习题必考题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。c语言编程练习题
第一部分 单选题(50题)
1、数组名作为函数参数时,传递的是?( )
【答案】:答案解析:数组名传参本质是首元素地址(指针传递),函数中可通过指针访问数组,故选C。
2、若inta=7,*p=&a;执行++*p;后a的值是?( )
C.&a
【答案】:答案解析:++*p等价于++(*p),先解引用取a的值,再加1(a=8),故选B。
3、do-while循环中,循环体至少执行几次?( )
【答案】:答案解析:do-while“先执行后判断”,无论条件是否满足,循环体至少执行一次,故选B。
4、以下关于数组的说法正确的是?( )
【答案】:答案解析:数组下标从0开始,数组名是常量(不可赋值),元素类型必须相同,长度定义后固定,故选C。
5、若intx=9;执行以下代码后输出结果是?( )if(x>10)printf("A");elseif(x>8)printf("B");elseif(x>6)printf("C");elseprintf("D");
D.
【答案】:答案解析:x=9>8,执行第二个分支,输出B,故选B。
6、以下关于数组的说法正确的是?( )
【答案】:答案解析:A数组长度定义后固定,B元素必须同类型,D数组名是常量(不可赋值),C正确,故选C。
7、函数参数传递中,地址传递的特点是?( )
【答案】:答案解析:地址传递(指针)传递变量地址,形参通过地址修改实参值,值传递是副本,故选C。
8、以下关于指针的说法错误的是?( )
、数组、函数
(如++、--)
【答案】:答案解析:指针不能指向自身(类型不匹配),A、B、D说法正确,故选C。
9、以下转义字符表示换行的是?( )
A.\t
B.\n
C.\
D.\r
【答案】:答案解析:\t是制表符,\n是换行符,\是反斜杠,\r是回车符,故选B。
10、若inti=1;执行do{printf("%d",i);i++;}while(i<=0);输出结果是?( )
【答案】:答案解析:do-while先执行一次(输出1,i=2),再判断i<=0为假,循环结束,故选A。
11、以下关于指针的说法正确的是?( )
【答案】:答案解析:指针在数组遍历、字符串处理、参数传递中均有核心作用,故选D。
12、以下关于空指针的定义正确的是?( )
A.#defineNULL0
B.#defineNULL(void*)0
*p=NULL;
【答案】:答案解析:A、B是NULL的常见定义,C是定义空指针,均正确,故选D。
13、continue语句只能用于以下哪种结构?( )
【答案】:答案解析:continue仅用于循环语句(for/while/do-while),用于跳过本次循环,故选A。
14、若inta=5,*p=&a;则&*p的值是?( )
B.&a
【答案】:答案解析:&*p等价于p,即&a(a的地址),故选B。
15、以下指针的算术运算中,单位是?( )
【答案】:答案解析:指针算术运算(如p++)偏移量是指向类型的大小(如int指针+1偏移4字节),故选B。
16、C语言中,注释的正确写法是?( )
A.//单行注释
B./*多行注释/
C.--注释
【答案】:答案解析:C语言支持//单行注释和/...*/多行注释,--不是注释符号,故选D。
17、若inta=3,b=5;执行以下代码后输出结果是?( )if(a>b)printf("A");elseprintf("B");
【答案】:答案解析:a=3<b=5,条件为假,执行else分支,输出B,故选B。
18、若inti=0;执行while(i<5){i++;if(i==3)continue;printf("%d",i);}输出结果是?( )
【答案】:答案解析:i=3时continue,跳过printf,输出1、2、4、5,故选A。
19、若inta=7;执行if(a%3==1)printf("A");elseif(a%3==2)printf("B");elseprintf("C");输出结果是?( )
【答案】:答案解析:7%3=1?7/3=2余1?不,7%3=1?7-3*2=1,条件1成立?哦7%3=1,应输出A?不对,7%3=1,第一个条件成立,输出A?重新计算:7÷3=2余1,a%3=1,执行第一个分支,输出A,故选A(原解析修正:之前误算,正确结果A)。
20、若inta=10,b=20,*p=&a,q=&b;执行p=q;后p的值是?( )
C.&a
D.&b
【答案】:答案解析:p=q使p指向b,*p=b=20,故选B。
21、若intx=3,y=5;则表达式x>y?x:y的结果是?( )
【答案】:答案解析:三元运算符格式“条件?值1:值2”,x>y为假,取y=5,故选B。
22、以下哪个是C语言中的赋值运算符?( )
A.==
B.=
C.+=
D.!=
【答案】:答案解析:=是赋值运算符,==是等于判断,+=是复合赋值,!=是不等于判断,故选B。
23、函数嵌套调用是指?( )
【答案】:答案解析:嵌套调用是函数A调用函数B,函数B调用函数C,递归是调用自身,故选B。
24、以下函数无返回值的是?( )
(){return0;}
(){printf("hello");}
(){;}
(){return'b';}
【答案】:答案解析:void类型函数无返回值,A、C、D均有返回值,故选B。
25、以下哪个不是C语言的关键字?( )
【答案】:答案解析:then不是C语言关键字,if(条件)、else(否则)、for(循环)均是,故选C。
26、以下关于数组初始化的说法正确的是?( )
【答案】:答案解析:数组可部分赋值(未赋值元素默认0),A数组可不用初始化,B可少于长度,D数组元素可修改,故选C。
27、以下关于函数的说法正确的是?( )
【答案】:答案解析:A函数可无返回值(void),B不能嵌套定义(可嵌套调用),D函数名不能重定义,C递归调用正确,故选C。
28、以下函数定义正确的是?( )
(){printf("hello");}
(inta){printf("%d",a);}
(){return5;}
【答案】:答案解析:A无参无返回值,B有参无返回值,C无参有返回值,均符合语法,故选D。
29、以下函数调用错误的是?( )
();
(5);
(3,4);
(需看函数定义)
【答案】:答案解析:调用需匹配函数定义,A对应无参函数,B对应单参函数,C对应双参函数,均可能正确,故选D。
30、指针作为函数参数时,传递的是?( )
【答案】:答案解析:指针传参本质是传递变量地址,函数中通过指针可修改实参值,故选D。
31、若intx=10;则表达式x%3的结果是?( )
【答案】:答案解析:%是取余运算符,10除以3商3余1,故选A。
32、若inta=6;执行a/=3;后a的值是?( )
【答案】:答案解析:a/=3等价于a=a/3=6/3=2,故选A。
33、若intx=6;执行if(x<5)printf("A");else{printf("B");printf("C");}输出结果是?( )
【答案】:答案解析:x=6不满足if,执行else代码块,输出BC,故选B。
34、若inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};则a[1][2]的值是?( )
【答案】:答案解析:a[1][2]是第二行第三列,值为6,故选B。
35、以下if语句中,赋值语句和判断语句混淆的是?( )
(x==5)
(x=5)
(x!=5)
(x>5)
【答案】:答案解析:x=5是赋值(将5赋给x),x==5是判断(x是否等于5),B混淆了两者,故选B。
36、以下定义指向二维数组的指针正确的是?( )
[2][3],(*p)[3]=a;
[2][3],*p=a;
[2][3],p=a[0];
[2][3],*p=&a;
【答案】:答案解析:A是指向3列数组的指针(匹配二维数组a的行),B、C、D类型不匹配,故选A。
37、以下函数声明正确的是?( )
(intx,inty);
(int,int);
(intx;inty);
【答案】:答案解析:函数声明可写参数名或只写类型,A、B正确,C用分号错误,故选D。
38、递归函数的终止条件是?( )
【答案】:答案解析:递归函数必须有终止条件(否则无限递归栈溢出),终止条件是不再调用自身的判断,故选C。
39、若charstr[]="Clanguage";则字符串长度是?( )
【答案】:答案解析:字符串长度以\0结束,"Clanguage"含10个字符(不含\0),故选A。
40、若inta=4;执行a-=2;后a的值是?( )
【答案】:答案解析:a-=2等价于a=a-2,4-2=2,故选A。