当前位置:文档之家› C语言程序设计(第四章

C语言程序设计(第四章


内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
/*ch4_4.c*/
#include <stdio.h>
main()
{ int x,y;
运行:Enter integer x,y:12,23
printf("Enter integer x,y:");
else
非0 index=0;
statemnt1 statemnt2 statemnt3 statemntn
说明: if后面的表达式类型ቤተ መጻሕፍቲ ባይዱ意
语句可以是复合语句 如:if(ifx()a==b&if(&xx!==0=)y) printf(“a=b,x=y”);
if(if!(x3)) priinf(tfx(=“=O0K)”);
结合方向:自右向左
取expr2值
如 a>b?a:c>d?c:d a>b?a:(c>d?c:d)
取expr3值
expr1、expr2、expr3类型可不同,表达式值取较高的 类型
例 x?‘a’:‘b’ //x=0,表达式值为‘b’; x‡0,表达式值为‘a’ x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5
printf(“score>60\n”);
break;
……..
break语句(也称为中断语句) 形式:break;(只能用于switch结构或者循环结构之中) 作用:中止switch结构或循环结构的执行,转去执行相应结构 的下一条语句。
goto语句 形式:goto 标识符 作用:无条件去执行标识符所指的语句,然后顺着那条语 句往下执行。
修改: if (a==b) { if(b==c) printf(“a==b==c”); } else printf(“a!=b”);
实现if ~ else 正确配对方法:加{ }
例 考虑下面程序输出结果: main() { int x=100,a=10,b=20; int v1=5,v2=0; if(a<b) if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; printf(“%d”,x); }
执行过程:
…... [ else
statementn ]
=0
例:ifex(spar1lary>1000)
index=0.4;
非el0se if (salareyx>p8r200) =0 index=0.3;
else if (salary>600) else if (sala非ry0>400)
index=0=0.2; expinr3dex=0.1;
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
说明:(1)goto语句后的标识符表示转移的目的地,在程 序中该标识符必须存在。
(2)在目的地处的标识符后必须有冒号。 (3)因此在结构化程序设计中要慎用,最好不用goto语句。
例 switch(score) { case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); }
运行:Enter an integer:-12 integer:-12--->absolute value :12
例 输入两个数并判断两数相等否
/*ch4_2.c*/ #include <stdio.h> main() { int a,b;
printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a==b)
例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
例 注意区分“=”与“==” int a=0,b=1; if(a==b) printf(“a equal to b”); else printf(“a not equal to b”);
&& (11) || (12) 低
! :从右向左 && :从左向右 || :从左向右
– 短路特性:逻辑表达式求解时,并非所有的逻辑运算 符都被执行,只是在必须执行下一个逻辑运算符才能 求出表达式的解时,才执行该运算符
例 a&&b&&c //只在a为真时,才判别b的值;
只在a、b都为真时,才判别 c的值
X<Y
scanf("%d,%d",&x,&y); if(x!=y)
Enter integer x,y:12,6 X>Y Enter integer x,y:12,12
if(x>y) printf("X>Y\n");
X==Y
else printf("X<Y\n");
else
printf("X==Y\n");
– 逻辑运算符和表达式
逻辑运算符
– 种类: ! && || – 逻辑运算真值表
a
b
!a
!b
















a&&b a||b








–C语言中,运算量: 运算结果:
0表示“假”, 非0表示“真”, 0表示“假”, 1表示“真”,
优先级: 结合方向:
! (2) 高
&& (11) || (12) 低
[default:
语句组 ;
break;]
❖执行过程:
}
❖说明: E1,E2,…En是常量表达式,且值必须互不相同 语句标号作用,必须用break跳出 case后可包含多个可执行语句,且不必加{ } switch可嵌套 多个case可共用一组执行语句
如: ……
case ‘A’:
case ‘B’:
case ‘C’:
}
例 求一个数的绝对值
/*ch4_1.c*/ #include <stdio.h> main() { int x,y;
printf("Enter an integer:"); scanf("%d",&x); y=x; if(y<0)
y= -y; printf("\ninteger:%d--->absolute value:%d\n",x,y); }
第四章
选择结构程序设计
• 关系表达式 • 逻辑表达式 • 条件表达式 • if 语句 • switch 语句
关系运算符和表达式
关系运算符
<
– 种类:< <= == >= > != – 结合方向:自左向右
<= >
优先级6(高)
– 优先级别: 例 c>a+b
//c>(a+b)
>=
== !=
优先级7(低)
! :从右向左 && :从左向右 || :从左向右
例 a=4;b=5;
!a a&&b a||b
值为0 值为1 值为1
!a||b
值为1
4&&0||2 值为1 5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1 ‘c’&&‘d’ 值为1
优先级: 结合方向:
! (2) 高
! :从右向左 && :从左向右 || :从左向右
例 a<=x && x<=b // (a<=x) && (x<=b)
a>b&&x>y //(a>b)&&(x>y)
a==b||x==y //(a==b)||(x==y)
!a||a>b
//(!a)||(a>b)
优先级: 结合方向:
! (2) 高
&& (11) || (12) 低
选择型程序设计
– if语句(条件选择语句)
if语句的三种形式 – 形式一: • 格式:if (expression)
=0 expr
非0 statement
statement
• 执行过程:
例形:式if 二(x>:y) 格p式rin:tf(i“f %(edx”p,rxe)s;sion)
非0
=0
相关主题