C程序第4章.docx
《C程序第4章.docx》由会员分享,可在线阅读,更多相关《C程序第4章.docx(8页珍藏版)》请在冰豆网上搜索。
![C程序第4章.docx](https://file1.bdocx.com/fileroot1/2022-11/16/7c1c42fb-865a-44a2-82a8-f1b980afef32/7c1c42fb-865a-44a2-82a8-f1b980afef321.gif)
C程序第4章
公共电子邮箱:
huayupeixun2010@
邮箱密码:
123456
第四章选择结构
输入两个数,输出较大的数。
流程图:
开始
↓
输入a和b
↓
a>=b
y↙↘n
输出a输出b
↘↙
结束
程序代码如下:
#include
main()
{inta,b;
printf(“请输入a和b:
\n”);
scanf(“%d%d”,&a,&b);
if(a>=b)
printf(“a=%d”,a);
else
printf(“b=%d”,b);
}
1、关系运算和逻辑运算
(1)关系表达式和逻辑表达式的运算结果都会得到一个逻辑值,要么为“真”,要么为“假”。
(2)非0数都表示真,真的值为1。
0表示假,假的值为0。
(3)举例:
2>3为假,表达式的值为0。
5>3为真,表达式的值为1。
(4)数学界IT界
>>
<<
≥>=
≤<=
≠!
=
===
(5)关系运算符的优先级(详见课本附录6)
算术运算符>关系运算符>赋值运算符
举例:
a=3>5+2
(6)关系运算符两边值的类型不一致的情况
如:
2>0.5,关系运算符两边的操作数的类型一致的情况下才能进行比较。
故先把2转化成2.0,然后和0.5进行比较。
两操作数类型不一致时的转换原则,请见附录5。
(7)逻辑运算符和逻辑表达式
1逻辑与(&&):
一假必假如:
3>2&&5<2
2逻辑或(||):
一真必真如:
2>3||5<6
3逻辑非(!
):
真亦假,假亦真如:
!
(2>3)
(8)区间的表示
数学表示:
0计算机表示:
x>0&&x<10(&&是“且”的意思)
(9)“短路”现象
①逻辑与(&&)中的“短路”现象
举例:
a的初值为1,经过表达式
2>3&&(a=2)后,a的值为?
答案为a的值仍为1。
②逻辑或(||)中的“短路”现象
举例:
a的初值为1,经过表达式
3>2||(a=2)后,a的值为?
答案为a的值仍为1。
2、if语句
⑴if语句的两种形式
1if(表达式)
语句
举例:
if(a>b)
a=5;
2if(表达式)
语句1
else
语句2
举例:
if(a>b)
a=1;
else
a=2;
注意:
①if和else都是关键字,系统专用,用户决不能用。
②if可单独使用,但是else必须和if配对使用。
3if只对紧跟在它后面的“一条语句”起作用。
可以是简单语句,也可以是一条复合语句。
举例:
①if(a
a=1;
②if(a
{t=a;
a=b;
b=t;}
③if(a
t=a;
a=b;
b=t;
例4.2
输入三个整数,分别放在变量a,b,c中,然后把输入的数据重新按由小到大的顺序放在a,b,c中,最后输出a,b,c的值。
分析:
abc
↓
321
↓
231(a和b比较,若a>b,
↓交换a和b的值)
132(a和c比较,若a>c,
↓交换a和c的值)
123(a和c比较,若a>c,
交换a和c的值)
演示程序:
#include
main()
{inta,b,c,t;
printf(“inputa,b,c:
”);
scanf(“%d%d%d”,&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(“%d,%d,%d\n”,a,b,c);
}
总结:
①交换两个变量的值必须借助第三个变量才能完成。
例如本题中的变量t。
②如果if管辖多条语句,多条语句必须用{}括起来,形成一条复合语句。
例4.4
如何判断能否被3整除
if(n%3==0)
printf(“n=%dYES\n”,n);
else
printf(“n=%dNO\n”,n);
(2)if后面圆括号中的表达式,可以是任意合法的C语言表达式,也可以是任意类型的数据。
举例:
if(a>b)→最为常见的形式
if(2>3)→永假的情况
if(a=3)→永真的情况
if(0)→永假
if
(1)→永真
(3)嵌套的if语句
①if(a>b)
if(a>c)
a=2;
②if(a>b)
if(a>c)
a=2;
else
b=2;
③if(a>b)
{if(a>c)
a=2;}
else
b=2;
④if(a>b)
a=2;
else
{if(a>c)
a=2;}
例4.5
编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。
#include
main()
{intg;
printf(“Enterg:
”);
scanf(“%d”,&g);
printf(“g=%d:
”,g);
if(g>=90)printf(“A\n”);
elseif(g>=80)printf(“B\n”);
elseif(g>=70)printf(“C\n”);
elseif(g>=60)printf(“D\n”);
elseprintf(“E\n”);
}
if和else的配对法则:
else总是与前面最近的至今还没有配对的if是一对。
3、条件表达式
1条件表达式的书写形式如下:
表达式1?
表达式2:
表达式3
2条件表达式的执行过程如下:
若表达式1为真,则表达式2的值作为整个条件表达式的值;若表达式1为假,则表达式3的值作为整个条件表达式的值。
3举例:
5>3?
a=2:
a=4
→整个条件表达式的值为2
2>3?
a=2:
a=4
→整个条件表达式的值为4
4、switch语句
⑴实现选择结构的语句有两种:
if语句和switch语句。
⑵switch语句形式如下:
switch(表达式)
{case常量表达式1:
语句1
case常量表达式2:
语句2
…….
case常量表达式n:
语句n
default:
语句n+1
}
⑶举例
switch(a)
{case1:
printf(“A”);
case2:
printf(“B”);
case3:
printf(“C”);
default:
printf(“D”);
}
例4.6用switch语句改写例4.5
#include
main()
{intg;
printf(“Enteramark:
”);
scanf(“%d”,&g);
printf(“g=%d:
”,g);
switch(g/10)
{case10:
case9:
printf(“A\n”);
case8:
printf(“B\n”);
case7:
printf(“C\n”);
case6:
printf(“D\n”);
default:
printf(“E\n”);
}
⑷在switch语句体中使用break语句
#include
main()
{intg;
printf(“Enteramark:
”);
scanf(“%d”,&g);
printf(“g=%d:
”,g);
switch(g/10)
{case10:
case9:
printf(“A\n”);break;
case8:
printf(“B\n”);break;
case7:
printf(“C\n”);break;
case6:
printf(“D\n”);break;
default:
printf(“E\n”);
}
总结:
break的作用:
强制跳出switch语句体。