4.选择结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运行:input x: 21 y=25
运行:input x: -2 y=-1
(if语句)练习题
1.两次运行下面的程序,如果从键盘上分 别输入6和4,则输出结果是( A )
#include “stdio.h” void main() {int x; scanf(“%d”,&x); if(x++>5) printf(“%d”,x); else printf(“%d\n”,x--); } (A) 7和5 (B) 6和3 (C) 7和4 (D) 6和4
例 求一个数的绝对值 (if的第一种形式)(4-2.c)
#include <stdio.h> void main() { int x,y; printf(“enter x:"); scanf("%d",&x); y=x; if(y<0) y= -y; printf(“x=%d,y=%d\n",x,y); }
内嵌if
if (expr1) if (expr2) else else if(expr3) else
statement1 statement2 内嵌if statement3 内嵌if statement4
说明: if ~ else 配对原则:缺省{ }时,else总是和它上面 离它最近的未配对的if配对 if(……) if(……) if(……) else…... else…... else…...
一般形式: if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) {if (expr2) 内嵌if statement1} else statement3
if (expr1) statement1 else if(expr3) statement3 else statement4
例: if (a>b) if(b<c) c=a; else c=b; 修改: if (a>b) { if(b<c) c=a; } else c=b;
实现if ~ else 正确配对方法:加{ }
例 输入两数并判断其大小关系
#include <stdio.h> main() { int x,y; printf("Enter integer x,y:"); 运行:Enter integer x,y:12,23 X<Y scanf("%d,%d",&x,&y); Enter integer x,y:12,6 if(x!=y) X>Y if(x>y) printf("X>Y\n"); Enter integer x,y:12,12 else printf("X<Y\n"); X==Y else printf("X==Y\n"); }
运行:Enter an integer:-12 x=-12, y=12
例 输入两个数并判断两数相等否 (if的第二种形式)(4-3.c)
#include <stdio.h> void main() { int a,b; printf("Enter a:"); scanf("%d",&a); printf("Enter b:"); scanf("%d",&b); if(a==b) printf("a==b\n"); else printf("a!=b\n"); }
2、if (表达式) 语句1 else 语句2 例如: if (x>y) printf(“%d”, x); else printf(“%d”, y);
例 输入三角形边长,求面积
#include <math.h> #include <stdio.h> main() { double a,b,c,s,area; scanf("%lf,%lf,%lf",&a,&b,&c); s= (a+b+c) /2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\narea=%7.2f\n",a,b,c,area); } 输入:9.89,12.65,8.76 输出:a= 9.89, b= 12.65, c= area= 43.17
3.四种运算符优先级比较
! 算术运算符 关系运算符 && || 赋值运算符


例:a=5>3&&2||8<4-!0 结果为1
例:要判别用year表示的某一年是否闰年,闰年的条件应符合下面 二者之一: (1) 能被4整除,又能被400整除,如2000年。 (2)能被4整除,但不能被100整除,如2008年;
(if语句)练习题
3.以下程序的运行结果为____
#include “stdio.h” void main() {int x=10,y=20,t=0; if(x==y) t=x;x=y;y=t; printf(“x=%d,y=%d\n”,x,y); }
x=20,y=0
四、switch语句(对于多条件的选择) 一般形式:
if语句的3种形式
C语言提供了3种形式的if语句。 1、if (表达式) 语句 (语句也可以是复合语句) 例如:if (x>y) printf(“%d”, x);
例:输入两个实数,按代数值由小到大的顺序输出这两个数(4-5.c)
#include<stdio.h> void main() { float a,b,t; scanf(″%f,%f″,&a,&b); if(a>b) {t=a; a=b; b=t;} printf(″%5.2f,%5.2f\n″,a,b); }
判断闰年的逻辑表达式:
year%400==0||(year%4==0&&year%100!=0)
判断非闰年的逻辑表达式:
!(year%400==0||(year%4==0&&year%100!=0))
三、 if语句
if语句是用来判定所给定的条件是否满足,根 据判定的结果(真或假)决定执行给出的两种操作 之一。
运行:Enter a:12 Enter b:12 a==b 运行:Enter a:12 Enter b:9 a!=b
例 分段函数(if的第三种形式)(4-4.c) x+1 x<0 y= x+2 0<=x<10 x+3 10<=x<20 x+4 x>=20 #include “stdio.h” void main() { int x,y; printf(“input x:”); scanf(“%d”,&x); if(x<0) y=x+1; else if(x<10) y=x+2; else if(x<20) y=x+3; else y=x+4; printf(“y=%d\n”,y);}
a>b y
n
t=a a=b b=t
例:输入三个数a,b,c,要求按由小到大的顺序输出。
If a>b If a>c If b>c
将a和b对换 将a和c对换 将b和c对换
a>b y
n a>c y y
n
b>c
a和b交换
wenku.baidu.com
a和c交换
c和b交换
例:输入三个数a,b,c,要求按由小到大的顺序输出。 #include <stdio.h> void main ( ) { float a,b,c,t; scanf(″%f,%f,%f″,&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("%5.2f,%5.2f,%5.2f\n",a,b,c); }
输入:2,3,4 输出:area= 2.90 输入:2,3,6 输出: It is not a trilateral.
有的选择结构中又包含一个或多个选择结构, 称为选择结构的嵌套。
3、使用嵌套的if语句实现多层判断 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 …… else if (表达式m) 语句m else 语句n
2.逻辑运算符及其优先次序
C语言提供三种逻辑运算符: (1)&&逻辑与 (2)||逻辑或 (3)!逻辑非
!
(2)

!
:从右向左
&& (11) || (12) 低
&& :从左向右 || :从左向右
逻辑运算的“真值表”
a 真 真 假 假 b 真 假 真 假 !a 假 假 真 真 a&&b 真 假 假 假 a||b 真 真 真 假
运行:Enter s1:86 s2=4 运行:Enter s1:68 s2=2
假设把前三个else去掉,会有什么情况出现? 运行:Enter s1:68
s2=4 (错误结果)
假设把四个else都去掉,会有什么情况出现? 运行:Enter s1:68
s2=5 (错误结果)
if语句嵌套:
例 将百分制成绩S1转换为5分制成绩S2.(4-6.c) #include <stdio.h> main() { int s1,s2; printf("Enter s1:"); scanf("%f",&s1); if(s1<60) s2=1; else if(s1<70) s2=2; else if(s1<80) s2=3; else if(s1<90) s2=4; else s2=5; printf(“s2=%d\n”,s2);}
分支
if语句(条件选择语句)
为什么要用? 如果你在家,我去拜访你;
如果考试不及格,要补考; 自然语言:如果… 那么… 否则… C语言: if语句 分支语句是控制程序执行选择结构的语句 是程序实现逻辑判断的唯一形式
二、回顾条件判断 1.关系运算符及其优先次序
C语言提供6种关系运算符: < <= > >= == != 关于优先次序: 前4种关系运算符的优先级别相同,后两种也相同。 前4种高于后2种。
(if语句)练习题
2.以下程序的输出结果是( C )
#include “stdio.h” void main() {int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c++; printf(“%d\n”,c); } (A) 0 (B) 1 (C) 2 (D) 3
总结: a)if后面的表达式类型任意,一般为逻辑表达式或关系 表达式。 b)条件后面不加分号, 语句之后有分号 如:if(a==b&&x==y) printf(“a=b,x=y”); c)else不是语句,不能单独使用必须与if配对使用。 if(3) printf(“OK”); d)当if后有多个执行语句时,必须用{ }将多个语句括 起来,构成一个复合语句,而{ }之外不必有分号。 例 考虑下面程序的输出结果: #include <stdio.h> void main() { int a,b; if(a>b) {t=a; a=b; b=t;} printf(“%d,%d\n”,a,b); }
第四章 选择结构程序设计
主要内容: 一、 C语句的概念 二、回顾条件判断 三、 if语句的三种形式 四、 switch语句
一、 C语句概述
C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 函数调用语句:printf(),max() 表达式语句:表达式加分号构成。
if( )~else~ 空语句: ; switch 复合语句:用 {…}括起来的一组语句 for( )~ 程序控制语句(9种): 循环 while( )~ do~while( ) continue break 辅助控制 goto return
8.76
构成三角形的必要条件是两边之和大于第三边,因此在计算 三角形面积之前应当进行该条件的判断。(4-1.c) #include <math.h> #include <stdio.h> main() { double a,b,c,s,area; scanf("%lf,%lf,%lf",&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) { s= (a+b+c) /2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%7.2f\n",area); } else printf(“It is not a trilateral.\n”); }
相关文档
最新文档