C语言习题四选择结构程序设计_第1页
C语言习题四选择结构程序设计_第2页
C语言习题四选择结构程序设计_第3页
C语言习题四选择结构程序设计_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、习题四 选择结构程序设计1. 设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是 .A、if(x+); B 、 if(x>y && y!=0); C、 if(x>0) x-D、if(y<0) ;else y+; else x+;解析:本题考查的是 if 语句。 if 后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。选项 A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x-是表达式而不是语句,所以在编译时会出现错误信息。故本题答案选C。2. 有以下程序main() int i;for(i

2、=1;i<=40;i+) if(i+%5=0)if(+i%8=0) printf ("%d",i);printf("n"); 执行后的输出结果是 。A、5 B 、 24 C 、32 D 、40解析:本题考查的是 if 语句的应用。在满足 for 语句条件下,第一个 if 语句的条件是指 i 先对5取余后, 再自行加 1;第二个 if 语句的条件是指: i=i+1 后,再对 8取余。故本题答案选 C。3. 在嵌套使用if语句时,(语言规定else总是。A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C和之前与其最近的且不带else

3、的if配对 D、和之前的第一个if配对解析:本题考查的是if语句的使用规则。在嵌套使用if语句时,C语言规定else总是和之前与其最近的 且不带 else 的 if 配对。故本题答案为 C。4. 有以下程序main() int i=1,j=2,k=3;if(i+=1&&(+j=3|k+=3)printf("%d %d %dn",i,j,k); 程序运行后的输出结果是 。A、 1 2 3 B 、 2 3 4 C 、 2 2 3 D 、 2 3 3解析:本题考查的是条件判断语句。本题中执行 " i+=1&&(+j=3|k+=3) &qu

4、ot;时,先执行 i+=1 ,由 于i+是先运算,后自加,所以表达式 "i+=1 "的值为真,其值为1,然后执行括号中的表达式,由于 +j 是先自加,后运算,所以表达式 "+j=3"的值为真,根据短路原理,右边的表达式 "k+=3"不再进行运 算,直接得出括中表达的值为 1,相与后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的 值分别为 2,3,3。故本题的答案为 D。5. 有以下程序:main() int i;for(i=0;i<3;i+)switch(i)case 0:printf("%d&qu

5、ot;,i);case 2:printf("%d",i);default:printf("%d",i);程序运行后的输出结果是 。A、022111 B 、021021 C 、 000122 D 、 012解析:此题考点是switch语句。switch语句执行完一个case后面的语句后,流程控制转移到下一个case 继续执行。 “case 常量表达式 ”只是起语句标号作用,并不是在该处进行条件判断。在执行 switch 语句时, 根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。如果想在执 行一个case分支后,使

6、流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目 的。本题中没有使用break终止switch语句的执行。在此题中当i=0时,执行第一个case语句,因为它后面 没有 break ,所以一直到执行完 default 语句结束,再执行下一循环。故本题答案为C。6. 下列条件语句中,功能与其他语句不同的是 。A、if(a) printf("%dn",x); else printf("%dn",y);B、if(a=0) printf("%dn",y); else printf("%dn&q

7、uot;,x);C、if (a!=0) printf("%dn",x); else printf("%dn",y);D、if(a=0) printf("%dn",x); else printf("%dn",y);解析:此题考的是if语句中逻辑表达式值的判断。if(a)表示a值为真(即不等于0都为真)的话,就 输出x的值,否则输出y的值;if(a=0)表示如果a与 0等值,即a不为真,就输出y的值,否则输出x的值,此 与选项A等价;再看选项C, a不等于0,即为真,输出x,否则输出y,与前两个都同意;而选项 D恰好与

8、前几项 的意思相反,它是a为0时,输出x,为真时输出y。故本题答案为Do7. 有以下程序main() char k; int i;for(i=1;i<3;i+) scanf("%c",&k);switch(k) case '0': printf("anothern");case '1': printf("numbern");程序运行时,从键盘输入:01/,程序执行后的输出结果是 oA another B 、another C 、another D 、numbernumber number

9、number numberanother number解析:此题考点是switch语句。本题中没有使用break终止switch语句的执行,本题当k为0时,执行完 case '0'后将继续执行case '1'。故本题答案为C。8. 以下 4个选项,不能看作一条语句的是 oA、 ; B 、 a=0,b=0,c=0; C 、 if(a>0); D 、 if(b=0)m=1;n=2;解析: if 语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号

10、 ”将几个语句括起来成为一个复合语句。 选项D中没有将两个操作语句括起来, 不能看作一条语句。故本题答案为 Do9. 以下程序的输出结果是 omain() int a=-1,b=1, k;if(+a<0)&&!(b-<=0)printf("%d %dn",a,b);elseprintf("%d %dn",b,a);A、-1 1 B 、 0 1 C 、1 0 D、0 0解析:本题的考查点是if条件的判断。+a是先运算后使用,b-是先使用后运算。执行+a后,a值为0, 不满足条件,所以a为0,b仍为1,接下去执行else语句,输出

11、1 0。故本题答案为C。10. 有以下程序main() int c;while(c=getchar() )!='n') switch(c-'2') case 0: case 1: putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break; A、668977 B 、668966 C 、 66778777 D 、6688766解析: 本题的考查点是 switch() 语句。 getchar() 函数是从键盘接受一个字符输入; 当用户键入的字符 不是回车符

12、时,会进入一个多分支选择语句,根据表达式 c-'2' 的值进行分支选择; putchar() 是在屏幕上 打印一个字符,最后的结果应当为 668977 。故本题答案为 A。11. 有定义语句: int a=1,b=2,c=3,x; ,则以下选项中各程序段执行后, x 的值不为 3的是A、 if (c<a) x=1;else if (b<a) x=2;else x=3;C、 if (a<3) x=3;if (a<2) x=2;if (a<1) x=1;解析:本题的考查点是B、 if (a<3) x=3;else if (a<2) x=2;

13、else x=1;D、 if (a<b) x=b;if (b<c) x=c; if (c<a) x=a;if语句。选项A,因为前面两个条件都不满足,所以执行最后一种操作,x=3;选项B, a<3成立,执行第一种操作,x=3;选项C,a<3成立,执行第一种操作,x=3; a<2成立,执行第二种 操作,此时x=2; a<1不成立,最后的不执行,所以执行此段程序后 x=2;选项巾,a<b成立,执行x=b,此时x=2; b<c成立,执行x=c,此时x=3; c<a不成立,不执行x=a,所以执行此段程序后x=3。故本题答案为C。12. 以下关于

14、逻辑运算符两侧运算对象的叙述中正确的是 A、只能是整数0或1B、只能是整数0或非0整数C可以是结构体类型的数据D 、可以是任意合法的表达式解析:本题考查的是C语言运算符的基本应用。 逻辑运算符两侧的运算对象不但可以是 0和1,也可以是 任意基本类型或指针类型的数据,还可以是任意合法表达式。故本题答案为D。13. 若x是int型变量,且有下面的程序片段for(x=3;x<6;x+) printf(x%2)?("*%d"):("#%dn"),x);上面程序片段的输出结果是 。 *3#3 #3 *3#4#4*4*4#5*5*5#5A、B 、 C、 D、14有以下计算公式萨! (x<0)若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是 A if(x>=0) y=sqrt(x);else y=sqrt(-x);C、if(x>=0) y=sqrt(x);B、y=sqrt(x);if(x<0) y=sqrt(-x);D、y=sqrt(x>=0?x:-x);if(x<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论