当前位置:首页 >> 学科竞赛 >>

C第三章


C语言
无锡润智图书有限公司

无锡润智图书有限公司制作

第三章
一、考试要求 了解

选择结构程序设计
掌握

理解

C语言 中的 逻辑 值
理解if语句的执行过程

switch语句的执行过程 continue、

break语句在 switch中的作用

常见的六种关系运算 符、三种逻辑运算符 及其优先级,掌握关 系表达式、逻辑表达 式的运算 if语句的格式 条件运算符 ? :和 条件表达式 switch语句的一般形 式

无锡润智图书有限公司制作

二、本章节近年考点分析

无锡润智图书有限公司制作

三、课堂探析
(一)问题探析

(二)巩固练习
(三)课堂总结

无锡润智图书有限公司制作

第一节

关系运算符和逻辑运算符

课堂探析

无锡润智图书有限公司制作

(一)问题探析 【问题1】 (2009年3月)有以下程序: # include<stdio. H> main() { int x scanf(”%cr,&x); if(x<=3); else if(x!=10) printf(-% d\n,x); } 程序运行时,输入的值在哪个范围才会有输出结果_____。 A)不等于10的整数 B)大于3且不等10的整数 C)大于3或等于10的整数 D)小于3的整数
无锡润智图书有限公司制作

【思路分析】考查条件表达式中含有逻辑运算符 的情况。题目中if的条件表达式有两个要求,一 个是if(x<一3);另一个是else if(x! =10),那么 分析程序运行情况,在x为大于3且不等10的整数 时,总是会有输出结果的,而其他x的取值则不 会有输出结果,因为不会执行语句printf(”%d\rf, x); 答案B

无锡润智图书有限公司制作

【问题2]已知字母A的ASCII码值为65,若变量kk为char型, 以下不能正确判断出kk中的值为大写字母的表达式是___。 A)kk>=’A’&& kk<=’Z’ B)!(kk>=’A’||kk<=’Z’) C)(kk+32)>=’a’&&(kk+32)<=’z' D) isalpha(kk)&&(kk<91) 【思路分析】 本题主要考查逻辑运算。对于正确判断kk为大写字母的表 达式,当表达式为真时,kk为大写字母。大写字母的 ASCII码值在65~90之间,对应的小写字母的ASCII码值在 97~122之间,因此选项A、C都是正确的表达式。选项D中 isalpha(kk)用于判断kk是否是字母,ASCH代码值小于91 的字母为大写字母,因此选项D是正确的表达式。选项B中 的表达式可以转换为kk<'A’&& kk>’z’,无法判断kk中的值 是否为大写字母。 答案:B 无锡润智图书有限公司制作

【问题3】当变量c的值不为2、4、6时,值也为“真”的表 达式是____。 A)(c==-2)||(c==-4)||(c==-6) B)(c>-2)&&(c<-6)||(c!=-3)||(c!=5) C)(c>-2)&&(c<-6)&&!(c%2) D)(c>-2 )&&(c<-6)&&(c%2==1) 【思路分析】选项A表示当变量c的值为2、4、6中的 任意一个时,表达式的值为真,不满足条件;选项 B表示,当c的值不等于3时为真,c的值不等于5时为 真,-2<c<-6时为真,可见当c的值为2、4、6时满足 条件,c为其他的值也可满足条件,如c =8;选项C 表示,-2<c<-6并且c要能被2整除时表达式的值为 真,满足条件的值只有2、4、6;选项D中的表达式 可以转换为选项C,同样是不满足条件的。

答案:B
无锡润智图书有限公司制作

【问题4】以下程序运行后的输出结果是____。 # include <stdio. h> main() { int x=20; printf(“%d”,O<x<20); printf(“%d”,0<x&&x<20) 【思路分析】本题考查关系表达式和逻辑表达式的运算。 在表达式O<x<2中,“<”运算符是自左至右的结合方向 , 先执行“0<X ”,得值1,再执行“x<20”得值1。在表达 式 O< x&&x<20中逻辑运算符“&&”右边的值为0,所以表达 式值为O,调用printf函数输出上述值。 答案:1 0
无锡润智图书有限公司制作

(二)巩固练习 一、选择题 1.若要求在if后一对圆括号中表示a不等于0的关系,则能 正确表示这一关系的表达式为_______ 。 D A) a<>0 B) !a C) a=0 D) a
2.为表示关系x≥y≥z,应使用的表达式_______ 。 C A) (x>=y) and (y>=z) B) x>=y>=z C) x>=y&&y>=z D)(x>=y)&(y>=z) 3.为表示关系x>=y或x<=z,应使用的表达方式是______ 。 D A)(x≥y)||(x≤z) B) (x>=y)OR(x<=z) C ) (x>=y) | (x<=z) D) !(x<y)&&(x>z) 4.设a、b和c都是int型变量,且a=7,b=18,c=29;则以下表 达式中,值为0的表达式是____ B 。 A) a<=b B)!(a<b)&&!(c||1) C)a||b+c&&b-c D)a&&b
无锡润智图书有限公司制作

二、填空题

1.C语言中用_______表示逻辑值“真”,用_______表示逻辑“假 2.C语言的关系运算符中,______、 ______、 ______、 _______优先级高于__________ 、___________。 3.C语言中,逻辑运算符按优先级从高低排列,依次为___ 、 ______ 、______。 4.C语言中,逻辑运算符_______的优先级高于算术运算符%。 5.与数学式a=b或a≠c对应的C语言表达式是_______。 6.与数学|a|<20对应的C语言表达式是_______。 答案:1.非0 0 2.> < >= <= == != 3.! && || 4.! 5.a==b||a!=c 注意:不能写成a=b||a<>c。 6.a<20&&a>-20
无锡润智图书有限公司制作

(三)课堂总结

1、逻辑运算的结果用逻辑值“真”或“假”表示。 通常用0代表“假”,用非0代表“真”。 2、用关系运算符(<、<=、>、>=、==、!=)将两个 表达式连接起来的式子,称关系表达式。 3、逻辑运算符的优先次序: !(高)——&&(中)——||(低) 4、用逻辑运算符将关系表达式或逻辑值连接起来的 式子称逻辑表达式。

无锡润智图书有限公司制作

第二节 if语句和条件表达式

课堂探析

无锡润智图书有限公司制作

(一)问题探析 【问题1】若变量已正确定义,有以下程序段: int a=3,b=5,c=7: if(a>b)a=b;c=a; if(c!=a)c=b; printf(-%d,%d,% d\n ,a,b,c); 其输出结果是_____。 A.程序段有语法错 B. 3,5,3 C. 3,5,5 D. 3,5,7 【思路分析】本题考查if条件语句。a-3,b=5,因此a>b条件不 成立,c-a-3。此时c!-a条件不成立,不执行c=b;语句,c的值 仍然为5。结果a-3,b=5,c-3。 答案:B
无锡润智图书有限公司制作

【问题2】有以下程序: # include <stdio. h> main() ( int x=1,y=2,z=3; if(x>y) if(y<z) printf(“%d”,++z); else printf(“%d”,++y); printf(”%d\r”,x++); ) 程序运行的结果是_____。 A. 3 31 B. 4 1 C. 2 D. 1 答案:D

【思路分析】本题主要考查 嵌套的if语句。C语言规定: else子句总是与最前面最近的 不带else的if相结合,与书写 格式无关。本题中的el。。 语句与第二个if语句配对。 x-l,y=2,x>y不成立,直接 退出if语句,执行 printf(”%d\r”,x++);,首 先输出x的值1,然后将x的值 加1。

无锡润智图书有限公司制作

【问题3】有以下计算公式:

Y? Y?

x ( x ? 0) ? x ( x ? 0)

若程序前面已在命令行中包括math.h文件, 不能够正确计算上述公式的程序是____。 A. if(x>=O) y= sqrt(x); else y=sqrt( -x); B. y = sqrt(x); if(x<0) y = sqrt( - x) ; C. if(x>= O) y= sqrt(x); D. y= sqrt(x>= 0? x: - x) ;

无锡润智图书有限公司制作

【思路分析】本题考查的重点是分段数学公式的 求解。选项D是正确的,它是用问号表达式 “expl? exp2:exp3”来代替if_else语句,其运 算过程是:先对expl求值,如果expl值为真,对 exp2求值并将所求结果作为整个问号表达式的值。 若expl的值为假,对exp3求值并将结果作为整个 问号表达式的值。因而程序“y= sqrt(x>=0?x:x)”是先判断x>=O,若为真,则计算结果为 sqrt( X),否则计算结果为sqrt( - X),且该函数 包含于math.h头文件中。 答案:D

无锡润智图书有限公司制作

【问题4】 下列能满足 “当x的值为奇数时值为真”的表达式是________。 A. x%2==0 B. !x%2!=0 C. (x/2*2-x)!=0 D. !(x%2)
【思路分析】当x的值为奇数时,x%2==0为假,故选项A是 错的。选项B中运算符“!”的优先级最高,其次是“%”, 最低的是“!=”。当x的值为奇数时,x!=0,x为真,!x为假 (0),0%2等于0,0!=0为假,故选项B是错的。选项C中,不 管x是奇数还是偶数,x/2*2一定是偶数,因为x/2*2可以看成 (x/2)*2,当x的值为奇数时,偶数减奇数一定不为0,故(x/2*2x)!=0为真,故选项C是对的。当x的值为奇数时,x%2等于 1,!1为假,即!(x%2),故选项D是错的。 答案:C
无锡润智图书有限公司制作

(二)巩固练习 1、设有条件表达式“(EXP)?i++:j--”,则以下表达式 中与“(EXP)”完全等价的是 B ____。 A.(EXP==O) B.(EXP! =0) C.(EXP= =1) D.(EXP! =1) 2、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值 是____ A 。(2010年3月) A. 1 B. O C. 2 D.不知道a的值,不能确定 3、以下程序的功能是:输出a、b、c 3个变量中的 最小值。请填空。(2007年9月) # include <stdio.h> main() { int a,b,c,tl,t2; Scanf(“%d%d%d”,&a,&b,&c); tl = c<tl?________________ a:b c:tl printf(“% d\n” , t2) ; 无锡润智图书有限公司制作 }

4、表达式a+=a-=a=9的值是________________ 。 D A. 9 B. -9 C. 18 D. O 5、若k是int型变量,且不下面的程序片段: K=-3; If(k<=0) printf(“####”); Else printf(“&&&&”); 上面程序片段的输出结果是________ 。 D A. #### B. &&&& C. ####&&&& D.有语法错误,无输出结果

无锡润智图书有限公司制作

6、以下程序段中,与语句k=a>b?(b>c?1:0):0; A 功能相同的是______ 。 A. if((a>b)&&(b>c))k=1; else k=O: B. if(a>b)||(b>c)k=1; else k=0; C. if(a<=b)k=0; else if(b<=c)k=1: D. if(a>b) k=1; else if(b>c)k=1: else k=0:

无锡润智图书有限公司制作

(三)课堂总结 1、C语言中提供了3种形式的if语句:不合else的if 语句、if-else语句和if-else-if语句。 2、if和else的配对规则为:else总是与它前一个最 近的if配对。 3、条件表达式的一般形式为:表达式 ? 表达式2 : 表达式3

无锡润智图书有限公司制作

第三节

switch语句

课堂探析

无锡润智图书有限公司制作

(一)问题探析
C 。 【问题1】以下叙述中正确的是______ A) break语句只能用于switch语句体中 B) continue语句的作用是使程序的执行流程跳出包含它 的所有循环 C) break语句只能用在循环体内和switch语句体内 D)在循环体内使用break语句和continue语句的作用相同 【思路分析】只能在循环体内和switch语句体内使用break 语句。当break出现在循环体中的switch语句体内时,其作 用只是跳出该出switch语句体。break出现在循环体中,但 并不在switch语句体内时,则在执行break后,跳出本层循 环。
无锡润智图书有限公司制作

【问题2】以下选项中与if(a= =1)a-b;else a++;语句 功能不同的switch语句是_______ 。 B A) switch(a) B) switch(a==1) { case l:a= b;break; { case 0:a= b;break; default: a++; case l:a++: } } C) switch(a) D) switch(a==1) { default: a++;break; { case l:a=b.break: case l:a=b; case 0:a++; } } 【思路分析】在 switch语句的执行过程中,执行完 case后面 的语句后,如果遇到break语句的话就停止,否则将继续执行 下一个case中的语句,直到遇到break语句。switch语句中 的参数如果是逻辑表达式,那么将根据逻辑表达式的值是 “假” 或“真”而分别执行case 0和case 1中的语句。所以可以看 出 无锡润智图书有限公司制作 选项B的功能恰好与题目中的描述相反。

【问题3】以下程序的运行结果是_____。 main() { int a= 2,b= 7,c=5; switch(a>0) { case l:switch(b<0) { case l:switch("@"); break; } }case 2:printf("!"); break; } case 0:switch(c==5) { case 0:printf("*"); break; case l:printf("#"); break; case 2:printf("$"); break; } default: printf("&"); } printf("\n"); } 无锡润智图书有限公司制作

【思路分析】刚开始时,switch后面的表达式a>0为真(1),与 case 1匹配,然后执行case 1后面的switch语句,表达式b<0 值为0,没有与其匹配的语句,返回外层,因为外层没有break 语句,顺序执行case 0后面的switch语句,表达式“c==5”值为 1,与其后面的case 1匹配,因此输出#,遇到break返回外层, 又因为外层没有break语句,顺序执行default后的语句,输出 &。 答案:#&。

无锡润智图书有限公司制作

(二)巩固练习 1、有以下程序: # include <stdio. h> main( ) { int x=1,y=0,a=0,b=0; switch( x) { case l: switch(y) { case O: a++ ; break; case l: b++ ; break; case 2: a++ ; b++; break; } printf("a=%d,b=%d\n",a,b) ; } } D 程序的运行结果是_______ 。 A. a=l,b=0 B. a=2,b=2 C. a=l,b-l
无锡润智图书有限公司制作

D. a=2,b=l

2、若有定义语句int a,b; double x,则下列选项中没有错 误的是C ____。 A.switch(x%2) B.switch ((int)x/2.0) { case O:a++;break; { case O:a+ +;break; case l:b++;break; case l:b++;break; default: a++;b++; default: a++;b++; } } C.switch ((int)x%2) D.switch ((int)x%2) { case O:a++;break; { case 0.0: a++;break; case l:b++;break; case l.0: b++;break; default: a++;b++; default: a++;b++; } }

无锡润智图书有限公司制作

3、下列叙述正确的是D ____。 A.break语句只能用于switch语句 B.在switch语句中必须使用default C.break语句必须与switch语句中的case配对 D.在switch语句中,不一定使用break语句

无锡润智图书有限公司制作

4、有以下程序: # include <stdio. h> main() { int c=O,k; for(k=l;k<3;k++) switch (k) { default:c+=k; case 2:C++;break; case 4:c+=2;break; ) printf(”%d\n”,,,c); ) 程序运行后的输出结果是A ____。 A.3 B. 5 C.7 D.9
无锡润智图书有限公司制作

(三)课堂总结

1、switch语句是C语言中的一种专门用于处理多分 支结构的条件选择语句,又称开关语句。使用switch 语句直接处理多个分支(当然包括两个分支)。 2、只能在循环体内和switch语句体内使用break语 句。当break现在循环体中的switch语句体内时,其 作用只是跳出该出switch语句体。break出现在循环 体中,但并不在switch语句体内时,则在执行break 后,跳出本层循环。

无锡润智图书有限公司制作

第四节

分支结构程序应用实例

课堂探析

无锡润智图书有限公司制作

(一)问题探析 【问题1】编程:输入两个整数,输出其中的大数。 【思路分析】 方法一:输入两个数a,b。把a先赋予变 量max,再用if语句判别max和b的大小,如max小 于b,则把b赋予max。因此max中总是大数,最后 输出max的值。 答案:main() { int a,b,max; printf("\n input two numbers: "); scanf("%d%d",&a,&b); max=a; if (max<b) max=b; printf("max=%d",max); } 无锡润智图书有限公司制作

方法二: 改用if-else语句判别a,b的大小,若a大, 则输出a,否则输出b。
main(){ 答案: int a, b; printf("input two numbers: scanf("%d%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b); }

");

无锡润智图书有限公司制作

【问题2】编程实现:判别键盘输入字符的类别。 【思路分析】本例要求判别键盘输入字符的类别。可以 根据输入字符的ASCII码来判别类型。由ASCII码表可 知ASCII值小于32的为控制字符。 在“0”和“9”之间的 为 数字,在“A”和“Z”之间为大写字母, 在“a”和“z” 之间 为小写字母,其余则为其它字符。 这是一个多分支选 择的问题,用if-else-if语句编程,判断输入字符ASCII 码所在的范围,分别给出不同的输出。例如输入为 “g”,输出显示它为小写字符。

无锡润智图书有限公司制作

答案: #include"stdio.h" main(){ char c; printf("input a character: "); c=getchar(); if(c<32) printf("This is a control character\n"); else if(c>='0'&&c<='9') printf("This is a digit\n"); else if(c>='A'&&c<='Z') printf("This is a capital letter\n"); else if(c>='a'&&c<='z') printf("This is a small letter\n"); else printf("This is an other character\n"); }
无锡润智图书有限公司制作

【问题3】本程序是要求输入一个数字,输出一个对应星期 的英文单词。 【思路分析】本程序是要求输入一个数字,输出一个英文 单词。但是当输入3之后,却执行了case3以及以后的所有 语句,输出了Wednesday 及以后的所有单词。这当然是 不希望的。为什么会出现这种情况呢?这恰恰反应了switch 语句的一个特点。在switch语句中,“case 常量表达式” 只相当于一个语句标号, 表达式的值和某标号相等则转向 该标号执行,但不能在执行完该标号的语句后自动跳出整 个switch 语句,所以出现了继续执行所有后面case语句的 情况。 这是与前面介绍的if语句完全不同的,应特别注意。 为了避免上述情况,C语言还提供了一种break语句,专用 于跳出switch语句,break 语句只有关键字break,没有参 数。在后面还将详细介绍。修改例题的程序,在每一case 语句之后增加break 语句, 使每一次执行之后均可跳出 switch语句,从而避免输出不应有的结果。
无锡润智图书有限公司制作

在使用switch语句时还应注意以下几点: 1.在case后的各常量表达式的值不能相同,否则会出现错误。 2.在case后,允许有多个语句,可以不用{}括起来。 3.各case和default子句的先后顺序可以变动,而不会影响程 序执行结果。 default子句可以省略不用。

无锡润智图书有限公司制作

答案:main() { int a; printf("input integer number: "); scanf("%d",&a); switch (a) { case 1:printf("Monday\n"); case 2:printf("Tuesday\n"); case 3:printf("Wednesday\n"); case 4:printf("Thursday\n"); case 5:printf("Friday\n"); case 6:printf("Saturday\n"); case 7:printf("Sunday\n"); default:printf("error\n"); } } 无锡润智图书有限公司制作

(二)巩固练习
1、编程实现:比较两个数的大小关系。

无锡润智图书有限公司制作

无锡润智图书有限公司制作

无锡润智图书有限公司制作

无锡润智图书有限公司制作

无锡润智图书有限公司制作

放映结束

无锡润智图书有限公司制作


相关文章:
普通化学第三章习题
普通化学第三章习题_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 普通化学第三章习题_理学_高等教育_教育专区。今日推荐 ...
无机及分析化学答案(第二版)第三章
无机及分析化学答案(第二版)第三章_理学_高等教育_教育专区。第三章 定量分析...10?3 L =0.2018mo1?L?1 c(Na S O )= 2 2 3 每毫升 Na2S2O3 ...
必修3第三章《概率》测试题
高一数学必修 3 第三章《概率》测试题一、选择题 1、下列说法正确的是( A. B. C. D. ) 任何事件的概率总是在(0,1)之间 频率是客观存在的,与试验次数...
物理化学第三章课后答案 傅献彩 第五版
物​理​化​学​第​三​章​课​后​答​案​ ​ ...​物​理​化​学​课​后​答​案​ ​ ​第​五​...
会计基础 第三章 要点
会计基础 第三章 要点_财会/金融考试_资格考试/认证_教育专区。第三章第一节...A.资产=负债+所有者权益=权益 B.期末资产=期末负债+期初所有者权益 C.期末...
第三章 训练5
第三章 训练2 第三章 训练3 第三章 训练4 第三章 训练6 第三章 训练7 ...Ⅰ和Ⅱ物理性质有所不同 C.Ⅰ和Ⅱ化学性质相同 D.Ⅰ和Ⅱ含 12C 的质量分数...
高中数学必修一第三章函数的应用知识点总结
高中数学必修一第三章函数的应用知识点总结_数学_高中教育_教育专区。第三章 ...bx ? c ? 0(a ? 0) 有两相等实根,二次函数的图象与 x 轴有一 个...
高中物理必修一第三章知识点
第三章 《相互作用》一、三种性质力 1、 重力 (1)重力是由于地球的吸引而产生的力; (2)重力的大小:G=mg,重力加速度:从赤道到两极 g 值 ,在极地 G 最...
流体力学第三章
第三章习题简答 3-1 已知流体流动的速度分布为 一条流线。 解:由流线微分...即 y 3 ? 6x 2 y + C = 0 将 x=1,y=1 代入上式,可得 C=5,则 ...
大量会计基础第三章练习题与答案
第三章 会计等式与复式记账 一、单选题 1、复式记账法的理论基础( )。 A、会计恒等式 B、会计科目 C、 会计准则 D、会计主体 2、以下关于损益类账户“主营...
更多相关标签:
c语言第三章答案 | 数码宝贝tri第三章 | 悲怆第三章 | fgo第三章 | 诺娃隐秘行动第三章 | 第三章的章节目标套装 | 诺娃的隐秘行动第三章 | 挑战模式第三章 |