计算机二级C语言辅导 第四章选择结构
计算机二级c语言第四章选择结构习题与答案

第四章选择结构一、选择题1、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==12、设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m3、设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A)(!a==1)&&(!b==0) B)(a < b)&& !c||1C)a && b D)a||(b+b)&&(c-a)4、有以下程序main(){ int a,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b); }程序运行后的输出结果是A)6,1 B)2,1 C)6,0 D)2,05、有以下程序main(){int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k); }程序运行后的输出结果是A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 36、有以下程序main(){int a=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",d++ +1);elseprintf("%d",++d +1);printf("%d\n",d); }程序运行后的输出结果是A) 2 B) 3 C) 43 D) 447、下列条件语句中,功能与其他语句不同的是A) if(a) printf("%d\n",x); else printf("%d\n",y);B) if(a==0) printf("%d\n",y); else printf("%d\n",x);C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);D) if(a==0) printf("%d\n",x); else printf("%d\n",y);8、以下4个选项中,不能看作一条语句的是A){;} B)a=0,b=0,c=0;C) if(a>0); D)if(b==0) m=1;n=2;9、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是A)if((a>b) &&(b>c) ) k=1; B)if((a>b) ||(b>c) ) k=1else k=0;C)if(a<=b) k=0; D) if(a>b) k=1;else if(b<=C) k=1; else if(b>c) k=1;else k=0;10、有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a < b);printf("%d,%d\n",k,m); }程序运行后的输出结果是A)0,0 B)0,1 C)1,0 D)1,111、有定义语句:int a=1,b=2,c=3,x; 则以下选项中各程序段执行后,x的值不为3的是A) if (c < a) x=1; B) if(a<3) x=3;else if (b < a) x=2; else if (a < 2) x=2;else x=3; else x=1;C) if (a < 3) x=3; D)if (a< b) x=b;if (a < 2) x=2; if (b< c) x=c;if (a< 1) x=1; if (c< a) x=a;12、有以下程序main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k); }执行后输出结果是A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 13、有以下程序main(){ int a=5,b=4,c=3,d=2;if(a>b>c) printf("%d\n",d);else if((c-1>=d)==1)printf("%d\n",d+1);else printf("%d\n",d+2) }执行后输出结果是A)2 B)3 C) 4 D)编译时有错,无结果14、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是A)6 B)0 C)2 D)115、以下程序的输出结果是main(){int a=5,b=4,c=6,d;printf("%d\n",d=a>b?(a>c?a:c):(b)); }A)5 B) 4 C)6 D)不确定16、以下程序的输出结果是main(){ int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d); }A)1 B)0 C)非0的数 D)-117、设 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) 0 B) 1 C)2 D) 318、阅读以下程序:main(){int x;scanf("%d",&x);if(x--<5) printf("%d",x);else printf("%d",x++);}程序运行后,如果从键盘上输入5,则输出结果是A)3 B) 4 C) 5 D) 619、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为A)不定值 B)4 C)3 D)120、若执行以下程序时从键盘上输入9,则输出结果是A) 11 B) 10 C) 9 D) 8main(){int n;scanf("%d",&n);if(n++<10) printf("%d\n",n);else printf("%d\n",n--);}21、有如下程序main(){float x=2.0,y;if(x<0.0) y=0.0;else if(x<10.0) y=1.0/x;else y=1.0;printf("%f\n",y);}该程序的输出结果是A)0.000000 B)0.250000C)0.500000 D)1.00000022、有如下程序main(){int a=2,b=-1,c=2;if(a< b)if(b< 0) c=0;else c++;printf("%d\n",c);}该程序的输出结果是A) 0 B)1 C) 2 D) 323、设 int x=1, y=1; 表达式(!x||y--)的值是A)0 B) 1 C) 2 D) -124、语句:printf("%d",(a=2)&&(b= -2));的输出结果是A)无输出 B)结果不确定 C)-1 D)125、有以下程序段int k=0,a=1,b=2,c=3; k=a< b ? b:a; k=k> c ? c:k;执行该程序段后,k的值是A)3 B)2 C)1 D)026、若整型变量a、b、c、d中的值依次为:1、4、3、2。
全国计算机等级考试二级C-第四章 选择结构 精品推荐

第四章 选择结构
第四章 选择结构
4.1 关系运算和逻辑运算
4.2 if语句和if语句构成的选择结构 4.3 条件表达式构成的选择结构 4.4switch语句以及switch语句和break语 句构成的选择结构 4.5 语句标号和goto语句
选择结构
C语言提供了可以进行逻辑判断的若干 选择语句,由这此选择语句可构成程序中的 选择结构,通常又称为分支结构。
【例】
main() { char c='k'; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf("%d,%d\n",’a’+5<c,-i-2*j>=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y); printf("%d,%d\n",i+j+k==-2*j,k==j==i+5); }
•与运算符&&和或运算符||均为双目运算符。具有左结合性。 非运算符!为单目运算符,具有右结合性。 •运算符优先级的关系可表示如下:!(非)→&&(与)→||(或) •逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术 运算符。
按照运算符的优先顺序可以得出:
a>b && c>d 等价于 !b==c||d<a 等价于 a+b>c&&x+y<b 等价于 (a>b)&&(c>d) ((!b)==c)||(d<a) ((a+b)>c)&&((x+y)<b)
计算机二级C语言chp4_选择结构

4.4 if语句及嵌套if语句
练习1:从键盘输入某科考试成绩,输出优秀、及 格与不及格等级,其中90分以上为优秀,60~90分 为及格,60分以下为不及格。
练习2:从键盘输入一字符,若为英文字符则原样 输出,若为数字字符则输出其ASCII码值
4.4 if语句及嵌套if语句
4.4.3 if-else语句—双分支 1. 语句形式: if (表达式) {语句块1} else {语句块2} 2.说明: 如果表达式的值为“真”,则执行语句块1; 如果表达式的值为“假”,则执行语句块2; 如果语句块中只有一条语句,则大括号“{ }”可以省略。
4.3 条件运算符和条件表达式
注意事项:
(1)表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式 或函数表达式。 例如: a>b?(a=100): ( b=100) a>b?printf(“%d”,a):printf(“%d”,b); (2)表达式2和表达式3的类型可以不同,低级别要向高级别的转换
printf(“y=%d\n”,y);
}
4.4 if语句及嵌套if语句
思考与实践:请画出如下程序的流程图
main() {int x; scanf(“%d”,&x); if (x>=80) if (x>=90) (printf(“优秀\n”); else printf(“良好\n”); else if (x>=70) printf(“中等\n”); else if (x>=60) printf(“及格\n”); else printf(“不及格\n”); printf(“y=%d\n”,y); }
4.2 逻辑运算符和逻辑表达式
何为逻辑?
思考1:如何判断变量x的值是否在[5~10]之外?
c语言程序设计教程第4章选择结构

选择结构由选择语句(也称分 选择结构由选择语句( 支语句)组成, 支语句)组成,选择语句控制程序 执行流程的方式是:根据给定条件, 执行流程的方式是:根据给定条件, 选择执行两个或两个以上分支程序 段中的某一个。选择语句有(if) 段中的某一个。选择语句有(if) 条件语句和开关语句(switch)。 条件语句和开关语句(switch)。 4.1 4.2 4.3 条件语句 中断语句 开关语句
4.3
开关语句
开关语句是switch 语句 开关语句是 switch语句 , 也称多选择语 switch 语句, 句 , 它是可以根据给定的条件, 从多个分支 它是可以根据给定的条件 , 语句序列中选择执行一个分支语句。 语句序列中选择执行一个分支语句。
已知成绩mark 要求显示对应五级制的评定, mark, 【 例 3.3】 已知成绩 mark , 要求显示对应五级制的评定 , 评 定条件: 定条件:
#include “iostream.h” void main( ) 算法: 算法: 1、输入mark 输入mark { float mark; 2、若mark≥90 则输出 mark≥ cin>>mark; “优” cout<<“mark”<<mark; 否则, mark≥80, 否则,若mark≥80, 则输出“ 则输出“良” if (mark >= 90) 否则, 否则,若 cout<< "优"; "优 mark≥70,则输出“ mark≥70,则输出“中” else if ( mark>=80) 若 cout<< "良"; "良 mark≥60,则输出“及格” mark≥60,则输出“及格” 否则, 否则, else if ( mark>=70) 输出“不有格” 输出“不有格” cout<< "中"; "中 else if (mark>=60) cout<< "及格"; "及格 及格"; else cout<< "不及格"; "不及格 不及格"; }
二级C语言选择结构程序设计

这么旳话,上面旳程序片段便出现了严重旳逻辑 矛盾。从语义上分析,我们希望else子句和第一 种if语句匹配。为了实现这一点,我们能够用一 对大括号将第二个if语句括起来。
if (a==b) {
关系体现式是指利用关系运算符将两个体现式连 接起来形成旳式子。
关系运算旳成果为逻辑值,因为C语言中没有逻 辑类型,所以当运算成果为真时,用整数1表达, 当运算成果为假时,用整数0表达。
关系体现式旳值也是一种逻辑值,即1或0。
假设变量已如下定义:
int a=3,b=2,c=1,d=5,f; a>b 体现式值为1 a>b==c 等价于(a>b)==c,体现式旳值为1 b+c<a 等价于(b+c)<a,关系体现式旳值为0 d=a>b 等价于d=(a>b),d旳值为1 f=a>b>c>d 等价于f=(((a>b)>c)>d),f旳值为0
4.3.3 if语句嵌套
编写程序时我们会遇到根据多种不同旳条件,分 别去执行不同操作旳情况。这时就需要使用嵌套 旳if语句来实现了。
在if语句内部和else子句内部能够包括任何类型旳 语句,经过在if语句和else子句内部嵌套其他if语 句能够形成if语句旳嵌套形式 。
两级if语句嵌套旳一般格式
} if (a<c) {
t=a; a=c; c=t; } if (b<c) {
t=b; b=c; c=t; } printf(“%d,%d,%d”,a,b,c); }
(3)在嵌套旳if语句中,确保else子句和相应旳 if语句正确匹配是非常关键。else子句不能单独使 用,每个else子句必须属于前面出现旳某个if语句。 考虑下面旳程序片段:
C语言全国计算机二级等级考试教程第四章选择结构(章节带习题)

2
a a
2 1
b 1
b
1
4.2 if语句和用if语句构成的选择结构
4.2.1 if语句
C语言的if语言有两种形式: if(表达式) 语句 关键字 不满足 单分支if语句 不含else子句 关键字 if(表达式) 语句1 else 语句2 不满足 双分支if语句 含else子句
表达式 满足 语句
表达式 满足 语句1
表达式2
表达式1
真
假
表达式3
真
假
表达式4
真
语句1 语句2 语句3
假
语句n
真
语句4
4.2 if语句和用if语句构成的选择结构
4.2.2 嵌套的if语句
例4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上 的等级为A,60分以下的等级为E,其余每10分为一个等级。 Enter g:72<CR> 成绩(g)大于等于90分以上(g>=90):A g=72:C 成绩(g)大于等于80分以上(g>=80):B 程序的意思为: 成绩(g)大于等于70分以上(g>=70):C Enter g:55<CR> 成绩(g)大于等于60分以上(g>=60):D g=55:E 成绩(g)不及格(g<60):E #include <stdio.h> 假 g>=90 main() {int g; 真 g>=80 假 printf("Enter g:");scanf("%d",&g) 真 printf("g=%d:",g); g>=70 假 if(g>=90) printf("A\n"); 真 假 g>=60 else if(g>=80) printf("B\n"); else if(g>=70) printf("C\n"); 真 else if(g>=60) printf("D\n"); 输出A 输出B 输出C 输出D 输出E else printf("E\n"); }
计算机二级C语言课件第4章选择结构改

//只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1;
第
(m=a>b)&&(n=c>d)
//结果m=0,n=1
四
章
见P95
例如:要判别某一年是否为闰年。P95 判断闰年的条件是符合下面二者之一:
1.能被4整除,但不能被100整除 2.能被4整除,又能被400整除。 可以用一个逻辑表达式来表示: (year%4==0&&year%100!=0) ||
a>b&&x>y //(a>b)&&(x>y)
a==b||x==y //(a==b)||(x==y)
第 四
!a||a>b
//(!a)||(a>b)
章
C
语
言
程 序
例 a=4;b=5;
设 计
!a
值为0
a&&b
值为1
a||b !a||b 4&&0||2
值为1 值为1
值为1
第
5>3&&2||8<4-!0
四 章
(a是a、b中的小者) (a是三者中最小者) (b是三者中次小者)
#include <stdio.h> int main() { float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b) 如果 a>b,将a和b对换 { t=a; a=b; b=t; } a是a、b中的小者
第4章 选择结构程序设计
C语言知识点:第4章 选择结构

7. 分支结构程序设计
作用:根据条件控制程序流向。 条件的组成:各种类型的常量、变量、表达式(常用:关系/逻辑表达式)
8. 单分支 if 语句
1、如果令狐冲的 C 语言考试成绩大于 90 分,师父就奖励他一本武功秘笈 使用 if 条件结构可以解决 if 条件结构是根据条件判断之后再做处理 基本的 if 条件结构 if ( 条件 ) { //语句 ~2~
C 语言程序设计知识点
主讲教师:杨剑
第 4 章:选择结构
1. 本章目标
熟练使用多重 if 结构 熟练使用嵌套 if 结构 熟练使用 switch 结构 理解条件运算符的用法
2. 结构化程序设计的核心思想
采用顺序、选择和循环三种基本结构作为程序设计的基本单元 只有一个入口; 只有一个出口; 采用“自顶向下、逐步求精”和模块化的方法进行结构化程序设计
C 语言程序设计知识点
主讲教师:杨剑
case 3: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } 如果需要每个 case 执行完后跳出, 在每个 case 后不要忘记写 break; int mingCi = 1; switch (mingCi){ case 1: printf ("出任武林盟主"); case 2: printf ("出任武当掌门"); case 2: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } case 后面的常量必须各不相同
C 语言程序设计知识点
主讲教师:杨剑
D. y=sqrt(x>=0?x:-x); 答案:B
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表达式2 =0 y=0;
语句]
非0
=0 表达式3
非0
语句1
语句2
语句3
语句n
说明1: if后面的表达式类型任意
if(x) if(x!=0) 如:if(i!fx(a)==b&&ifx(=x==y0) ) printf(“a=b,x=y”);
语句if(可3) 以p是ri复ntf合(“O语K句”);
如果有 a>b?a:b+1 相当于a>b?a:(b+1),而不相当于 (a>b?a:b)+1
③条件运算符的结合方向为“自右向左”。如: a>b?a:c>d?c:d 相当于: a>b?a:(c>d?c:d)
如果a=1,b=2,c=3,d=4,则条件表达式的值等于4。
Switch语句
switch语句是一种分支控制语句。 特点:是可以根据一个表达式的多种值, 选择多个分支,因而也称为分情况语句 和开关语句。实际问题中常常需要用到 多分支结构,例如,学生成绩分档次(85 分以上为“A”等,70~84分为“B”等, 60~69分为“C”等……)。
值,并以它的结果作为整个表达式的值。
例: x=10; if (x>9) y=100; else y=200;
• 可以用下面的条件运算符来处理: x=10; y=(x>9)?100:200;
• 注意:
①条件运算符要求有3个操作对象。 ②条件运算符的优先级别比关系运算符和算术运算符都
低。因此
y=(x>9)?100:200 括号可以不要,可写成 y=x>9?100:200
Switch语句
❖ 执行过程: switch(表达式)
当“表达式”=“常量表达式1”时, 从“语句1”开始执行;
{
case 常量1:语句1;
case 常量2:语句2; 当“表达式”=“常量表达式2”时,
……
从“语句2”开始执行;
case 常量n:语句n;
default: 语句n+1;
}
当“表达式”=其它值时,从“语
l(逻辑真);否则为0(逻辑假)。
例如:
int a=5,b=3;
a||b
结果为l。
(a<b)| |(a>0) 结果为l,因为a>0的值为l。
在谈到逻辑运算时,我们常用一个真值表来表示,如下:
a b !a !b a&&b a||b 真真假假 真 真 真假假真 假 真 假真真假 假 真 假假真真 假 假
关系表达式
3、 关系运算符的结合律
C语言规定关系表达式采取左结合律。表达式 中出现优先级别为同一级别的运算符时,按从 左到右结合方向处理。例如: int a=2,b=3,c=1 a>b<c先计算a>b,结果是0,再计算0<c, 关系表达式的值为:1 6>3<2先计算6>3,结果是1,再计算1<2, 关系表达式的值为:1
x=y; y=x; else
x++; y++;
printf(“%d,%d\n”,x,y);
}
补足程序段--1
#include <stdio.h>
m输ain入( )两个整数,按从小到大的顺序 输出{它isnct们ana。f,(b",%t;d, %d", &a, &b);
if (a>b) { t=a; a=b; b=t; }
4.1.3逻辑运算符
C语言没有逻辑类型数据,进行逻辑判断时: • 数据的值为非0,则认作逻辑真, • 数据的值为0,则认作逻辑假; 而逻辑表达式的值为真,则用整形数1表示。
逻辑表达式的值为假,则用整形数0表示。
逻辑运算符有3个:!、&& 、 | |
表示逻辑非、逻辑与、逻辑或运算。
注:由于C语言依据判断数据是否为非0或0 来判断逻辑真和逻辑假,所以逻辑运算的 操作数类型可以是字符型、整型或浮点型。
语句1
语句1
语句2
语句2
» 执行过程:
例:if (x>y)
形式二: 格式:if (表达式)
非0
printf(“%d”,x); x=表y;达式 =0
语句1
例:if (x>y) max=x; else
语句1
语句2
else max=y;
语句2
x=y;
语句3
执行过程:
语句3
形式三: » 格式:
if ( 表达式1 )
在iiff(语‘a’句) 和preinlstfe(“语%句d”中,’a若’)例; 考虑下面程序的输出结果:
有多个操作语句,则应
#include <stdio.h>
用花括号{} 将它们括起
main()
成为一个复合语句。
{ int x,y;
scanf(“%d,%d”,&x,&y);
if(x>y)
错误!
?!
结果: 60~69 <60 错误输入
输入“C”,求输出结果。
main()
{
运行结果:
char s;
60~69
scanf(“%c”,&s); switch(s)
<60 错误输入
{
case ‘A’ : printf(“85~100\n”);
case ‘B’ : printf(“70~84\n”);
为理解与、或、非的含义,引入三个电路,如图所示。
在上图中,我们给出三个指示灯的控制电路, 根据串、并联电路的工作原理,我们可以得出:
①在图(a)中,只有当两个常开按钮同时按下时, 指示灯才会亮;与 ②在图(b)中,只要两个常开按钮中任何一个按 下,指示灯都会亮;或 ③在图(c)中,没有按按钮时,电路是接通的, 所以指示灯亮,按下按钮时,指示灯反而不亮。 非
逻辑表达式
1、 逻辑运算表达式的构成
• 用逻辑运算符将表达式连接起来就构成了逻辑 表达式。例如,
• !(a>b)
对关系表达式的值取非
• (a>b)&&(b>c) 逻辑与运算
对两个关系表达式进行
• (a>b)&&(b>c)| |(b==0)
2、 逻辑运算符优先级
C语言逻辑运算符的优先级规定如下: ①优先级顺序为!→&&→| |。 ② ! 高于算术运算符, &&,| |低于关系运算符。
• 例如:1.0/3.0 *3.0= =1.0 ? 由于1.0/3.0得到的值用有限位保存,是近似值,
所以1.0/3.0*3.0≠1.0。
4.1.2关系表达式
1、 关系表达式的构成
• 关系表达式是用关系运算符将两个表达式连接起 来,进行关系运算的式子。例如:
a+b>b+c
比较两个算术表达式的值
a<=2*b
比较变量的值和算术表达式的值
′a′<′b′ 比较两个字符ASCII码值
关系表达式
2、 关系运算符的优先级
(1)<、<=、>和>=为同一级,= =和!=为同一级。 前者优先级高于后者。
(2)关系运算符优先级低于算术运算符。 例如:
a+b>b+c等效于(a+b) >(b+c)。 (2+a)= =(b-a)等效于2+a= =b-a。
4.3 条件运算符和条件表达式
• C语言提供了一个可以代替某些if-else语句的简 便易用的操作符“?”和“:”,该操作符是三目运算 符,其一般形式是:
表达式1 ?表达式2:表达式3
操作符?的作用:在计算表达式1之后,
如果数值为true(真),则计算表达式2,并将结果 作为整个表达式的数值;
如果表达式1的值为false(假),则计算表达式3的
第四章
选择结构
4.1.1 关系运算符
C语言有6种关系运算符:
<、<=、>、>=、==、!=
关系成立:关系运算的值为1(表示逻辑真); 关系不成立:关系运算的值为0(表示逻辑假)。
例如:
5>3
值为1
5<=3 值为0
5==3 值为0
5!=3 值为1
注意:浮点数是用近似值表示的。
“= =”用于两个浮点数的判断时,由 于存储误差,会得出错误的结果。
case ‘C’ : printf(“60~69\n”);
case ‘D’ : printf(“<60\n”);
default : printf(“错误输入\n”);
}
}
不好意思我, 的成绩 我属于C级!应该是
60~69!
什么!“<60”? “错误输入”? 怎么会这样?!
解决方法——break语句语句2
else if (表达式3 ) 语句3
执行例过:程if :(x>1000) …... y=0.4; else if (x>80[0e)lse y=0.3;
else 表达式el1se
if if
=(x0>600) (x>400)
y=0.2; y=0.1;
非0else
句n+1”开始执行;
Switch语句中使用break语句:
switch (表达式) { case 常量1 : 语句系列1;break; case 常量2 : 语句系列2;break; …… case 常量m : 语句系列m;break; default : 语句系列m+1; }
❖执行过程:
switch
}