计算机C语言—(附上机问题汇总)

上传人:宝路 文档编号:47834245 上传时间:2018-07-05 格式:PPT 页数:62 大小:273.15KB
返回 下载 相关 举报
计算机C语言—(附上机问题汇总)_第1页
第1页 / 共62页
计算机C语言—(附上机问题汇总)_第2页
第2页 / 共62页
计算机C语言—(附上机问题汇总)_第3页
第3页 / 共62页
计算机C语言—(附上机问题汇总)_第4页
第4页 / 共62页
计算机C语言—(附上机问题汇总)_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《计算机C语言—(附上机问题汇总)》由会员分享,可在线阅读,更多相关《计算机C语言—(附上机问题汇总)(62页珍藏版)》请在金锄头文库上搜索。

1、答疑时间 每周三下午2:30-5:30 信息中心810 自愿第5章 选择结构程序设计选择结构是三种基本结构之一,特点是:根据给定条件 :成立时执行一组操作,不成立时执行另一组操作。C中选择结构利用if语句实现。5.1 关系运算符和关系表达式关系运算是比较运算,结果为逻辑值“真”或“假”。(前已讨论算术、赋值 、逗号。现讨论关系、逻辑表达式、条件,前两者的值域为真或假,即1或0 )。5.1.1 关系运算符及其优先级关系运算符有6种:、 = :优先级为6级= = 、!= :优先级为7级 结合性为从左到右关系运算符和其它运算符优先级的比较:高 逻辑运算符:! (2) 算术运算符:* 、/、%(3)

2、+、- (4)关系运算符:、 =(6) = 、!=(7)逻辑运算符:scanf(“%d”,d=a printf (“a=%d, b=%d, c=%d, d=%dn”, a, b, c, d);1 a=1,b=5,c=3,d=10 a=0,b=0,c=0,d=0 输入:输出:例T5-0-3.cmain( )int a,b=0,c=0,d=0; scanf(“ %d”, d=a | | (b=5) | | (c=3) ;printf (“a=%d, b=%d, c=%d, d=%d, n”,a, b, c, d);1 a=1,b=0,c=0,d=10 a=0,b=5,c=0,d=5 输入:输出:在

3、C中,巧妙地使用逻辑表达式,可以表示一个复杂的问题如:关于闰年问题:符合下列条件之一,均为闰年。(1)能被4整除并且不能被100整除(2)能被4整除并且能被400整除其逻辑表达式为:(year % 4 = =0 float y=-5.6;if(x) printf (“x=%dn”,x);if(y) printf (“y=%fn”, y);if(0) printf(“ 0=%dn”, 0);if(xy) printf (“x-y=%fn”, x-y);if(y -100)x+;y+;printf(“x=%d, y=%fn”, x, y);运行结果: y= -5.6000000=48x- y=5.

4、600000x=1, y=-4.6000002. 第二种形式的条件语句if(表达式) 语句1else 语句2例T5-0-5.cmain( ) int x,y; printf (“please input x, yn”);scanf (“%d %d”,if(xy) printf (“x=%dn”,x);else printf (“y=%dn”,y);运行结果:please input x,y2 _ 5 输出:y=534 _ 28 x=34 表达式语句1语句2真假3. 第三种形式的条件语句if(表达式1) 语句1else if(表达式2) 语句2else if(表达式3) 语句3else if(表

5、达式m) 语句melse 语句 n右图为:m=4n=5表达式1假真表达式2表达式3表达式4语句5语句4语句3语句2语句1真真真假假假例: 商店售货按购物的款数分别给予不同的优惠折扣。设变量:n:购物金额, c:优惠折扣百分比,a:优惠后的实际款数T5-0-6.c main( ) float n, c, a; scanf (“%f”, if(n500) c=0.15; else if(n300) c=0.10; else if(n100) c=0.075; else if(n50) c=0.05; else c=0; a=n* (1-c); printf (“a=%fn”, a); 输入: 输出

6、: 800 680.000000 480 432.000000 200 185.000000 80 76.000000 30 30.000000说明:1.执行if语句时,先判断表达式的值,为真时(非0),执行其后 语句,为假(0)时不执行其后的语句,表达式可以是常量、变量 、各种表达式。2.if的各内嵌语句用“ ; ”号结束,但仍然是一个语句而非2个。3.if和else后面的内嵌语句若有多句,用 括起构成复合语句 。例T5-1.c 输入两个实数,按代数值由小到大输出。main( )float a, b, t; scanf(“%f, %f”, if(ab) t=a; a=b; b=t; (/*这

7、里不用;*/)printf (“%5.2f, %5.2fn”,a,b); 输入: 输出:3.6,-3.2 -3.20, 3.602.5,8.9 2.50, 8.90例T5-2.c输入三个数,按从小到大的顺序输出(请同学们自己 思考)main( ) float a, b, c, t; scanf(“%f, %f, %f”,if(ab) t=a; a=b; b=t;if(ac) t=a; a=c; c=t;if(bc) t=b; b=c; c=t;printf (“%5.2f, %5.2f,%5.2fn”, a, b, c);t a b c7 5 3 7 5 7 3 5 3 7 5 67 3 5

8、7输入: 输出: 7,5,3 3.00,5.00,7.00 1,8,6 1.00,6.00,8.005.3.2 if 语句的嵌套嵌套:在if语句中,又包含1到多个if 语句一般形式:if( ) if( ) 语句1else 语句2elseif( ) 语句3 else 语句4条件成立时的内嵌语句条件不成立时的内嵌语句总体上是哪种形式?使用内嵌的if语句时,应区分表面形式与实际对应关系 如: if( ) if( ) 语句1elseif( ) 语句2else 语句3 编程者希望把中间的else与第一行的if匹配,虽然书写上是对 齐的,但编译系统并非如此执行(总体上是形式几?几层嵌套 ?)。在C语言中,

9、if与else 的配对原则是: 从最内层开始,else总是与它上面最近的,未曾配对的if 配对。因此,上述问题在编译时的真正效果是: if( ) 等价于下述表示: 当条件成立时执行下面虚框中的 内容 if( )if ( ) 语句1elseif( ) 语句2else 语句3是中间else的子句总体上是哪种形式?嵌套的是形式几?为了使程序清晰,不至出错,采取的方法是:(1) 使内嵌的if也包含else,如上面的问题可进行如下描述 :if( )if( ) else elseif( ) else .(2) 若if和else数目不等,为实现设计者的企图,可用 实现,如上述问题可进行如下描述:if( )

10、if( ) 语句1 elseif( ) 语句2else 语句3如此一来,else不是和复合语句匹配而 是与其前面的if匹配,总体上是哪种形式?去 掉后属于哪种形式?有一符号函数 例T5-3.cmain( )int x, y; scanf(“%d”,if(x0)用不同方法编程,判正确与否(参考书上流程图)输入: -12340 756 输出:x= -1234, y= -1 x=0, y=0x=756, y=1例T5-3-1.cmain( )int x, y; scanf(“%d”,if(x=0)if(x0) y=1;else y=0;else y=-1;printf(“x=%d, y=%dn”,x

11、, y);输入:12 -24 0 输出:x=12, y=1x= -24, y= -1x= 0, y =0例T5-3-2.cmain( )int x, y; scanf(%d”,y= -1;/* 0*/if(x !=0) if(x 0 ) y=1;else y=0; / *此else 和谁匹配 ?-1*/printf(“x=%d, y=%dn”,x, y);怎么改?输入: 输出: -5 x= -5, y=00 x=0, y= -18 x=8, y=1例T5-3-3.c(请同学们自己思考)main( )int x, y; scanf(%d”,y= 0; /*-1*/if(x =0) if(x 0

12、) y=1;else y=-1; /*0*/ printf(“x=%d, y=%dn”,x, y);输入: 输出: -5 x= -5, y=0 0 x=0, y=-1 8 x=8, y=1 5.3.3 条件运算符有时,在判断了if后的表达式以后,都执行一个赋值 表达式且给同一个变量赋值,如max条件表达式的一般形式:其中: ? : 是条件运算符号 ,是唯一的3目运算 符max=(ab)?a:b;(表达式1)?(表达式2):(表达式3)条件表达式的执行过程是:真:求解表达式2并作为整个表达式的值(3不执行)计算表达式1假:求解表达式3并作为整个表达式的值(2不执行)x=(ab)?a:b 当 a=9,b=5时 ,x=9说明如下几点: max= a b ? a : b(思考:这是一个什么表 达式?) 1.条件运算符?:的优先级为13级max=(a b) ? a : b max= a b ? a : b (=为14级)max=a b ? a : (b+1) max=ab ? a: b+1 (+为4级)总结:条件运算符的优先级 高于赋值,低于其他2.条件运算符的结合方向:从右向左如有表达式: a b ? a : c d ? c : da,b,c,d的取值如下: 表达式值 如下 : a b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号