




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言:选择结构[复制]
本章内容有:
1.if..else搭配
2.if..else多层嵌套
3.switch语句(重点)
4.会用选择结构解决生活中的问题您的姓名:[填空题]*_________________________________1.C语言中提供的合法关键字是()[单选题]*A、SwithB、cherC、CaseD、default(正确答案)答案解析:选项中大部分关键字是学习选择结构时遇到的,正确的写法应该是switch,case,char。2.若执行下面的程序时从键盘上输入3和4,
intmain()
{
inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a<b)s=b;
s=s*s;
printf("%d\n",s);
}
则输出是()[单选题]*A、14B、16(正确答案)C、18D、20答案解析:一步一步从上往下计算就可以了。a=3,b=4,s=3,如果a<b为真,3<4确实为真,则s=4,s=4*4;输出s为16.3.若执行下面的程序时从键盘上输入5,
intmain()
{
intx;
scanf("%d",&x);
if(x++>5)
printf("%d\n",x);
else
printf("%d\n",x--);
}
则输出是()[单选题]*A、7B、6(正确答案)C、5D、4答案解析:输入5,则x=5,进行x++>5时,++在x的右边,所以先进行运算,再自身加1。故5>5为假,所以执行else,与此同时,x自身加1,x=6,输出时,因为x--,所以先运算,即输出x的值为6,再自身减1,x=5.4.若执行以下程序时从键盘上输入9,
intmain()
{
intn;
scanf("%d",&n);
if(n++<10)
printf("%d\n",n);
else
printf("%d\n",n--);
}
则输出结果是()[单选题]*A、11B、10(正确答案)C、9D、8答案解析:n=9;n++,++在后,所以先进行运算再自身加1,即9<10为假,执行else部分,同时,n自身加1,n=10,else部分输出n的值为10,再n自身减1,n=9.5.下列if语句中,不正确的是()[单选题]*A、if(x>y);B、if(x==y)x+=y;C、if(x!=y)scanf("%d",&x)elsex=1;(正确答案)D、if(x<y){x++;y++}答案解析:if(x>y);这是可以的,相当于是条件成立,则执行了一个空语句。if(x!=y)scanf("%d",&x)elsex=1;scanf()语句后面少了分号。6.请读程序:
inti=0,j=0,a=6;
if((++i>0)||(++j>0))
a++;
printf("i=%d,j=%d,a=d%\n",i,j,a);
则上面程序的输出结果是()[单选题]*A、i=0,j=0,a=6B、i=1,j=0,a=7(正确答案)C、i=1,j=1,a=6D、i=1,j=1,a=7答案解析:++i是先自身加1再拿去判断,且留意逻辑||存在短路现象,A||B当A为真时,整个式子为真,所以不需要判断B了。++i此时i=1,i>0为真。整个式子为真,逻辑||短路,则++j不需要进行运算。所以j=0;i=1,a++后,输出时。a=7了.7.下列说法中正确的是()[单选题]*A、在switch语句中一定要使用break语句B、在switch语句中不一定要使用break语句(正确答案)C、break语句是switch语句的一部分D、break只能用于switch语句中答案解析:break可以用于循环和switch语句中,用于跳出循环,switch中的break作用是结束switch循环,就是说不再执行下面的case语句。扩展:如果在switch中省略了break语句,那么匹配的case值后的所有情况(包括default情况)都会被执行。break在switch可有可无,根据自己的需要。8.有如下程序
intmain()
{
inta=2,b=-1,c=2;
if(a<b)
if(b<0)
c=0;
else
c++
printf("%d\n",c);
}
该程序的输出结果是()[单选题]*A、0B、1C、2(正确答案)D、3答案解析:得留意if的范围是哪里,因为书写的原因,可能不太好看出具体的范围,但是得知道else总是和最近的尚未配对的if进行配对,所以题目中的else和第二个if配对。代码的意思是,如果a<b为真的前提下,则执行if(b<0),b<0为真c=0,b<0为假则c++。如果第一个if都不满足,则直接执行空语句,相当于最后少了个else;。只a<b为假,故c还是原来的c,没有变化。9.有如下程序
intmain()
{
intx=1,a=0,b=0;
switch(x)
{
case0:b++;
case1:a++
case2:a++;b++
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是()[单选题]*A、a=2,b=1(正确答案)B、a=1,b=1C、a=1,b=0D、a=2,b=2答案解析:考查switch语句,对号入座,如果是’1’,则从case‘1’开始执行,如果找不到对应的case,则执行default。直到遇到break,如果没遇到break,则继续往下执行。x为1,执行case1,a++后,a=1,因为没有break,继续往下执行,a++;b++后,a=2,b=1。10.intmain()
{
intx=100,a=10,b=20,ok1=5,ok2=0;
if(a<b)
if(b!=15)
if(!ok1)
x=1;
else
if(ok2)
x=10;
x=-1;
printf("%d\n",x);}程序的输出是()[单选题]*A、-1(正确答案)B、0C、1D、不确定的值答案解析:非0为真,0为假。考查if嵌套,ifelse配对。if总是与else成对出现,如果else没有出现,说明是省略了(相当于else;执行空语句)。虽然书写可能比较乱,但是你得知道else总是与最近尚未配对的if进行配对。如果if后面没有{}说明它的范围是最近的一条语句。建议大家把其书写到稿纸中,易于理解。其中这里省略了很多else。if(a<b)中嵌套了if(b!=15),if(b!=15)中嵌套了if(!ok1),if(!ok1)与else配对。if(ok2)x=10;则是嵌套在else下的。等所有都完成后,再执行x=-1;所以不管前面怎么变化,不管你到底是指执行else还是if,最后都得执行x=-1,这个相当于顺序结构。11.若有定义:floatw;inta,b;则合法的switch语句是()[单选题]*A、switch(w){case1printf("*\n");case2printf("**\n");}B、switch(a);{case1.0:printf("*\n");case2.0:printf("**\n");}C、switch(b);{case1:printf("*\n");case2:printf("**\n");default:printf("\n");}D、switch(a+b){case1:printf("*\n");default:printf("\n");case1+2:printf("**\n");}(正确答案)答案解析:考查switch语句,switch语句的格式为switch(A){casen..},其中A的值只可以为字符或者整数。case不可以出现相同的,得唯一对应,以便对号入座,default、break可有可无,根据代码的需要。注意写法,故可知答案。12.若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0)
printf("####");
else
printf("&&&&");
输出结果是:()[单选题]*A、####B、&&&&C、####&&&&D、有语法错误,无输出结果(正确答案)答案解析:考查if..else,-3<=0为真,则执行printf("####"),输出####。13.若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是()[单选题]*A、swich(a+b);{case1:y=a+b;break;case0:y=a-b;break;}B、switch(a*a+b*b){case3:case1:y=a+b;break;case3:y=b-a,break;}C、switcha{casec1:y=a-b;breakcasec2:x=a*d;breakdefault:x=a+b;}D、switch(a-b){default:y=a*b;breakcase3:case4:x=a+b;breakcase10:case11:y=a-b;break;}(正确答案)答案解析:考查switch语句,switch语句的格式为switch(A){casen..},其中A的值只可以为字符或者整数。case不可以出现相同的,得唯一对应,以便对号入座,default、break可有可无,根据代码的需要。注意写法,故可知答案。14.请读程序:
#include<stdio.h>
intmain()
{
floatx,y;
scanf("%f",&x);
if(x<0.0)
y=0.0
else
if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else
if(x<10.0)
y=1.0/x;
else
y=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0<CR>(<CR>表示回车),则上面程序的输出结果是()[单选题]*A、0.000000B、0.250000C、0.500000(正确答案)D、1.00000答案解析:考查if..else,if.else的嵌套和配对、else总是和最近尚未配对的if进行配对。x=2.0,if(x<0.0)为假,则执行elseif((x<5.0)&&(x!=2.0))为假(A&&B,当A和B都为真时才为真),则执行elseif(x<10.0)为真,则执行y=1.0/x=0.5.15.intmain()
{
intk=-3;
if(k<=0)
printf("****\n");
else
printf("&&&&\n")
}
运行以上程序后,输出的结果是()[单选题]*A、****(正确答案)B、有语法错误不能通过编译C、&&&&D、****&&&&答案解析:考查if..else,如果if(k<=0)为真,输出****。16.a=b=c=0;
x=35;
if(!a)
x--;
else
if(b)
x++;
if(c)
x=3;
else
x=4;
假定所有变量均已正确定义,下面语句段执行后的x的值是()[单选题]*A、34B、4(正确答案)C、36D、3答案解析:考查if..else嵌套搭配的使用。if.else总是成对出现的,如果else没有出现,那么就是隐藏了else;相当于执行空语句。else总是和最近尚未配对的if进行配对。if(!a)与elseif(b)x++;配对,if(b)x++;(这里隐藏了它的else),顺序往下,if(c)x=3;与elsex=4;配对。完整走遍流程:!a为真,x—后,x=34.非0为真,0为假,if(c)x=3;elsex=4;执行else部分,所以x=4.17.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()[单选题]*A、必须是正数B、可以是任意合法的数值(正确答案)C、必须是整数值D、必须是逻辑值答案解析:考查if语句。表达式的值可以是任意合法的数值,只要表达式的结果为逻辑值即可以。18.inta=3,b=2,c=1;
if(a>b>c)
a=b;
else
a=c;
则a的值是()[单选题]*A、2B、3C、1(正确答案)D、0答案解析:考查运算符的结合性,>的结合性从左至右。关系表达式的结果要么为0要么为1.a>b为真值为1,1>c为假,值为0,故执行else部分。a=c,a的值为1.19.请读程序:
#include<stdio.h>
intmain()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:switch(y)
{
case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租喷涂车间合同范本
- 变更土地合同范本
- 红色文化产业课题申报书
- 内墙腻子合同范本
- 医学课题申报书意见
- 合同范本 工商
- 发票走账协议合同范本
- 合同范本推广好处
- 美育视野下课题申报书
- 售卖物业用房合同范例
- 2025中铁集装箱运输有限责任公司招聘46人(京外地区岗位)笔试参考题库附带答案详解
- 中国农业大学人文与发展学院管理服务岗位招聘笔试真题2023
- 《中华人民共和国学前教育法》专题培训
- 晋中项目投决会报告
- 二年级下册数学课件-1.3 分草莓 北师大版(共14张PPT)
- 2022年中小学心理健康教育指导纲要
- 中国红十字会救护员培训理论考试试卷 (1)附答案
- 高架桥梁混凝土工程专项施工方案
- 银行案件风险排查实施细则
- 亚马逊品牌授权书(英文模板)
- 10级空乘《形体训练3》课程标准(共14页)
评论
0/150
提交评论