C语言练习题资料.docx
- 文档编号:25921623
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:50
- 大小:41.40KB
C语言练习题资料.docx
《C语言练习题资料.docx》由会员分享,可在线阅读,更多相关《C语言练习题资料.docx(50页珍藏版)》请在冰豆网上搜索。
C语言练习题资料
第二部分程序控制结构
一、单项选择题。
1.以下叙述中错误的是______。
A、C语句必须以分号结束B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句
解析:
本题考查的是C语句。
"空语句出现在任何位置都不会影响程序运行"这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。
故本题答案为C。
2.设变量x和y均已正确定义并赋值。
以下if语句中,在编译时将产生错误信息的是______。
A、if(x++);B、if(x>y&&y!
=0);C、if(x>0)x--D、if(y<0){;}
elsey++;elsex++;
解析:
本题考查的是if语句。
if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。
选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x--是表达式而不是语句,所以在编译时会出现错误信息。
故本题答案选C。
3.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);}
printf("\n");}
执行后的输出结果是______。
A、5B、24C、32D、40
解析:
本题考查的是if语句的应用。
在满足for语句条件下,第一个if语句的条件是指i先对5取余后,再自行加1;第二个if语句的条件是指:
i=i+1后,再对8取余。
故本题答案选C。
4.在嵌套使用if语句时,C语言规定else总是______。
A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对
C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对
解析:
本题考查的是if语句的使用规则。
在嵌套使用if语句时,C语言规定else总是和之前与其最近的且不带else的if配对。
故本题答案为C。
5.有以下程序
main()
{inti=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n",i,j,k);}
程序运行后的输出结果是______。
A、123B、234C、223D、233
解析:
本题考查的是条件判断语句。
本题中执行"i++==1&&(++j==3||k++==3)"时,先执行i++==1,由于i++是先运算,后自加,所以表达式"i++==1"的值为真,其值为1,然后执行括号中的表达式,由于++j是先自加,后运算,所以表达式"++j==3"的值为真,根据短路原理,右边的表达式"k++==3"不再进行运算,直接得出括中表达的值为1,相与后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的值分别为2,3,3。
故本题的答案为D。
6.有以下程序:
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case0:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);}}
程序运行后的输出结果是______。
A、022111B、021021C、000122D、012
解析:
此题考点是switch语句。
switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行。
“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。
在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
如果想在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。
可以用一个break语句来达到此目的。
本题中没有使用break终止switch语句的执行。
在此题中当i=0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,再执行下一循环。
故本题答案为C。
7.下列条件语句中,功能与其他语句不同的是______。
A、if(a)printf("%d\n",x);elseprintf("%d\n",y);
B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C、if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
解析:
此题考的是if语句中逻辑表达式值的判断。
if(a)表示a值为真(即不等于0都为真)的话,就输出x的值,否则输出y的值;if(a==0)表示如果a与0等值,即a不为真,就输出y的值,否则输出x的值,此与选项A等价;再看选项C,a不等于0,即为真,输出x,否则输出y,与前两个都同意;而选项D恰好与前几项的意思相反,它是a为0时,输出x,为真时输出y。
故本题答案为D。
8.有以下程序
main()
{chark;inti;
for(i=1;i<3;i++)
{scanf("%c",&k);
switch(k)
{case'0':
printf("another\n");
case'1':
printf("number\n");}
}}
程序运行时,从键盘输入:
01↙,程序执行后的输出结果是______。
A、anotherB、anotherC、anotherD、number
numbernumbernumbernumber
anothernumber
解析:
此题考点是switch语句。
本题中没有使用break终止switch语句的执行,本题当k为0时,执行完case'0'后将继续执行case'1'。
故本题答案为C。
9.以下4个选项,不能看作一条语句的是______。
A、{;}B、a=0,b=0,c=0;C、if(a>0);D、if(b==0)m=1;n=2;
解析:
if语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。
选项D中没有将两个操作语句括起来,不能看作一条语句。
故本题答案为D。
10.以下程序的输出结果是______。
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))
printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);
}
A、-11B、01C、10D、00
解析:
本题的考查点是if条件的判断。
++a是先运算后使用,b--是先使用后运算。
执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出10。
故本题答案为C。
11.有以下程序
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;}}
}
A、668977B、668966C、66778777D、6688766
解析:
本题的考查点是switch()语句。
getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据表达式c-'2'的值进行分支选择;putchar()是在屏幕上打印一个字符,最后的结果应当为668977。
故本题答案为A。
12.有定义语句:
inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是______。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)