C语言复习第十九课
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十九课
※主要内容
(1)、选择结构
※主要知识点
(1)、if语句
1.不含else子句的if语句
语句格式: If(表达式) 语句;
例如: if(x>y)printf(“%d”,x);if(x>z) {x++; printf(“%d”,x);}
执行过程是: 先计算出表达式的值,如果表达式的值为真(非0值),则执行其后的if子语句,执行后再去执行if语句后面的下一条语句;如果表达式的值为假(0值),则不执行if子语句,直接执行if语句后面的下一条语句.
例如: 输入两个实数,输出其中的最大数.
#include
main()
{
float a,b;
scanf(“%f %f”,&a,&b);
if(a>b)printf(“%5.2f”,a);
if(b>a)printf(“%5.2f”,b);
}
2.含else的if语句
语句格式: If(表达式) 语句1;
else 语句2;
执行过程是: 先计算出表达式的值,如果表达式的值是真,则执行语句1,执行后再去执行if语句后面的下一条语句;如果表达式的值是假,则跳过语句1而直接执行语句2.
例如: if(x>y)
p rintf(“%d”,x);
else
p rintf(“%d”,y);
功能是: 如果x>y则输出x,否则输出y. (2)、if语句的嵌套
1、在if语句中嵌套具有else子句的if语句语句格式:
If(表达式1)
If(表达式)
语句1;
Else
语句2;
Else
语句3;
2、在if语句中嵌套不含else子句的if语句格式:
If(表达式1)
{if(表达式2) 语句1;}
else
语句2;
3、在else子句中嵌套if子句
格式: If(表达式1) 语句1;
else
If(表达式2) 语句2;
else 语句3;
if语句的配对问题
C语言规定,else 总是与它前面最近的未配对的if语句配对。
例如: 比较两个数的大小关系
void main()
{
int a,b;
scanf(“%d%d”,&a,&b);
if(a!=b)
If(a>b)printf(“A>B\n”);
Else printf(“A
Else printf(“A=B\n”);
}
(2)、条件运算符和条件表达式
如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
条件运算符为?:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2:表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
1、条件运算符可嵌套
例如:a>b?a:c>d?c:d 应理解为a>b?a:(c>d?c:d)
2、expr1、expr2、expr3类型可不同,表达式值取较高的类型
例x?…a‟:…b‟ //x=0,表达式值为…b‟; x‡0,表达式值为…a‟
x>y?1:1.5 //x>y ,值为1.0; x (3)、switch语句和break语句 1. switch语句 C语言还提供了一种用语多分支选择结构的switch语句 格式: Switch(表达式) { Case 常量表达式1 : 语句1; Case 常量表达式2 : 语句2; …….. Case 常量表达式n : 语句n; default : 语句n+1; } 执行过程是: 计算表达式的值,并逐个与后面的常量表达式的值比较,当表达式的值与整个常量表达式的值相等时,则执行它后面的语句,然后不再进行判断,继续执行后面所有case后的语句.如果表达式的值与所有的常量表达式的值都不相等时,则执行default后的语句. (注意语句后有break语句和没有break语句区别),没有break语句,语句会顺序执行下去。 在使用switch语句时还应注意以下几点: 1) 在case后的各常量表达式的值不能相同,否则会出现错误。 2) 在case后,允许有多个语句,可以不用{}括起来。 3) 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 4) default子句可以省略不用。 2、break语句 该语句只能用在switch语句或循环语句中,作用是跳出switch语句或跳出本层循环,转去执行后面的程序. 例如:计算器程序。用户输入运算数和四则运算符,输出计算结果。 main() { float a,b; char c; printf("input expression: a+(-,*,/)b \n"); scanf("%f%c%f",&a,&c,&b); switch(c) { case '+': printf("%f\n",a+b);break; case '-': printf("%f\n",a-b);break; case '*': printf("%f\n",a*b);break; case '/': printf("%f\n",a/b);break; default: printf("input error\n"); } } 本例可用于四则运算求值。switch语句用于判断运算符,然后输出运算值。当输入运算符不是+,-,*,/时给出错误提示。 练习题 一、单项选择题 (1) 选择结构程序设计的特点是() A. 自上向下逐个执行 B. 根据判断条件,选择其中一个分支执行 C. 反复执行某些程序代码 D. 以上都是 (2) 假定所有变量均已正确定义,下列程序段运行后x 的值是() a=b=c=0,x=35; if(!a) x--; else if(b); if(c) x=3; else x=4; A. 34 B. 4 C. 35 D. 3 (3) 下面的程序片段所表示的数学函数关系是()。