C语言程序设计 选择结构
1 0 0
推广,C语言用非零代表"真",用零代表"假"。 if(b)…… →if(b!=0)…… if(a=a+4)…… →a=a+4;if(a!=0)…… if(3)……. →条件恒成立 C语言可能不对整个表达式进行计算。 if (4||a==b)… if(0 && a==b)… 实型变量不能进行相等的比较。 if(pi==3.14)…… if(pi-3.14<1.0e-005 && pi-3.14>-1.0e-005)……
if (表达式) 语句1;
表达式 假 语句1 真
flag=0;
…… if (beta>=0) flag=1;
……
例:输入一个整数 a,判断它是偶数还是奇数?
分析:若 a 是偶数, a % 2==0
#include <stdio.h> void main( ) { int a; printf ("input a number: "); scanf ("%d", &a); if ( a % 2 == 0 ) printf ("%d is an even\n", a); else printf("%d is an odd\n", a); } 注意:该方法只适用于整数。
ge=data%10 输出length length>4
假 真 真
输出wan
假
错误提示
length=5 wan=data/10000 wan=0
假 真
顺 序 输 出
length>3
假
输出qian
输出bai 输出shi
length>2
假
真
真
length>1 length-输出ge 输出ge
真
qian=data%10000/1000 qian=0且length=4
注意:
1. else 语句不能单独出现,必须与if 配对出现,采用就近配对原则; 2. 第二个if语句是第一个if 语句的"语句1",为明显区分,建议加括号。
例:输入年份,判断是否是闰年
闰年的条件: 1. 年份能被400整除; 2. 年份能被4整除但不能被100整除;
#include <stdio.h> void main ( ) { int year,flag; printf ( "Which year ? "); scanf ("%d",&year); 真 if ( year % 400 == 0 ) flag = 1; else { if ( year % 4 == 0 && year % 100 != 0flag=1 ) flag = 1; else flag = 0; } if ( flag == 1 ) printf ("%d年是闰年\n",year); else printf ("%d年不是闰年\n",year); }
beta>=0?
Y
N
计算x1
x1=-9999
N
beta>=0?
Y
计算x2
N
x2=-9999
Y
beta>=0?
输出无解 结束
输出计算结果
#include <stdio.h> #include <math.h> main() { float a,b,c,x1,x2,beta; scanf("a=%f,b=%f,c=%f",&a,&b,&c); beta=b*b-4.0*a*c; if (beta>=0) x1=(-b+sqrt(flag*beta))/(2.0*a); else x1=-9999; if (beta>=0) x2=(-b-sqrt(flag*beta))/(2.0*a); else x2=-9999; printf("x1=%8.3f\n",x1); if (beta>=0) printf("x2=%8.3f\n",x2); printf("results=%8.3f,%8.3f",x1,x2); } else
2)比较 d 和圆半径 r 的大小
输出结果 结束
#include <stdio.h> #include <math.h> void main() { float x, y, d,r; int key; printf ("input x, y,r: "); scanf ("%f,%f", &x, &y,&r); d = sqrt ( x * x + y * y ); if ( d >= r ) if (d==r) key=1; // 在圆上 else key=2; /*在圆外*/ else key = 0; // 在圆内 printf ("(%.1f, %.1f ) : %d\n", x, y, key); }
printf("beta<0,can't be treated");
}
条件表达式
关系表达式
关系运算符 > >= 含义 大于(>) 大于等于(≥) 优先级
<
<= == !=
小于(<)
小于等于(≤) 等于(=) 不等于(≠)
高
低
关系表达式有具体的计算结果:条件满足时为"真",条件不满足时为"假"。 if 语句在计算条件表达式后,若结果为"真"则执行“语句1”,若结果为"假 "则执行“语句2”。 例: if (a>0) p++; else m++; if (x<=3.0) ok=1; else ok=0; if (x1!=x2) equal=1; else equal=0; if (-3<x<3) action=1; else action=0;
开始 从键盘输入year 假 真
条件一? 假
条件二?
flag=1
flag=0
输出结果 结束
例:给一个不多于5位的正整数:
① 求出它是几位数; ② 分别输出每一位数字; ③ 按逆序输出各位数字。
开始 从键盘输入data data≤99999并且data>0
真
shi=0且length=2
假
真
length--
假
作业:编写完整的程序,由键盘输入4个数,按由大到小的顺序排列并输出结果。
if 语句的嵌套
if ( 表达式1 ) if ( 表达式2 ) 语句1 else 语句2 else if ( 表达式3 ) 语句3 else 语句4
基本if语句:
if (表达式) 语句1 else 语句2
else 与最近的 if 匹配!!
将多条语句用{ }包含起来,可以出现在任何允许出现单个 语句的地方。 例:输入3个数,按由大到小排列。 if (a<b)
{
真 a<b? 假 真 a<c? 假 真 b<c? 交换b,c 交换a,c 交换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; }
例:设平面上一点M,其坐标为(x, y),若M落在圆心 在坐标原点的半径为r的圆上,则置 key = 1, 落在圆 外置 key = 2,落在圆内置 key = 0。
y
开始
M(x,y)
r
0 x
从键盘输入x,y 计算d
真
d≥r?
假
假
分析:
d=r?
真
key=1
key=0 key=2
1)求点 M 到原点的距离 d
注意事项:
优先级
! (非 ) 高 a=b>c → a=(b>c) c>a+b → c>(a+b) a>b==c → (a>b)==c a==b<c → a==(b<c)
算数运算符
关系运算符 &&、| | = (赋值) 低
!a>b- 4 → (!a)>(b-4) a=!b>5&&!c<d||'c'+3>d → a=(!b>5)&&(!c<d)||('c'+3>d) 写出: f ( x)
C语言程序设计
选择结构
什么是选择结构?
根据所指定的条件是否满足,决定从给定的两组操作中选 择其一。 选择结构是程序智能化的基础。 C语言的选择结构语法: if ( 条件表达式 ) 语句1 else 语句2 解释:如果条件满足则执行“语句1”,否则执行“语句2”。 注意:
① 当条件满足时,只执行“语句1”,不执行“语句2”;反之亦然; ② “语句1”和“语句2”都需要有分号作为结束标志; ③ “语句2”后面的分号同时也是if 语句的结束标志。
?
条件表达式
逻辑表达式
用于将多个关系表达式串起来表示更复杂的条件。
逻辑运算符 && || ! 条件a 真 真 假 假 条件b 真 假 真 假 !a 假 假 真 真 含义 与(AND) 或(OR) 非(NOT) !b 假 真 假 真 a&&b 真 假 假 假 a||b 真 真 真 假
例: if (x>-3 && x<3) action=1; else action=0;