内容正文:
第三章
分支程序设计
1
OK
条件语句
2
3.2 条件语句(if语句)
02
if语句:if语句通常被称为选择语句或分支语句。
一般形式:
if (表达式)语句;
说明:
1.执行if语句时,先对“表达式”进行求值,如果计算结果非0(为“真”),则执行其后的“语句”,否则跳过其后的“语句”。
表达式
语 句
真(非0)
假(0)
3
3.2 条件语句(if语句)
02
if语句:if语句通常被称为选择语句或分支语句。
一般形式:
if (表达式)语句;
说明:
2.“表达式”的类型可以为任何类型的表达式。
例如:算术表达式-3+‘d’ 值为65 结果为“真”
赋值表达式a=0 值为0 结果为“假”
赋值表达式a=5 值为5 结果为“真”zhi
表达式
语 句
真(非0)
假(0)
4
3.2 条件语句(if语句)
02
if语句:if语句通常被称为选择语句或分支语句。
一般形式:
if (表达式)语句;
说明:
3.“语句”可以是一条简单语句,也可以是符合语句。
例如:if(x<y)
x=x+1;
if(x<y){x=x+1;
y=y+1;}
表达式
语 句
真(非0)
假(0)
5
3.2 条件语句(if语句)
02
例3-1: 输入一个成绩score,如果成绩大于60,则显示“pass”,否则不显示。
main( )
{
int score;
scanf("%d", &score );
if ( score >= 60 ) printf("pass
");
}
运行结果:
1. 输入:65↙
输出: pass
2. 若输入:56↙,则无输出
6
3.2 条件语句(if……else语句)
02
if……else语句
一般形式:
if (表达式)
语句1;
else
语句2;
表达式
语 句 1
语 句 2
真(非0)
假(0)
7
3.2 条件语句(if语句)
02
例3-2:从键盘输入一个正整数,如果该数为6的倍数,就输出一个“Yes!”,否则输出一个“No!”。
main( )
{ int x;
printf("请输入一个正整数:");
scanf("%d", &x );
if ( x%6 ==0 )
printf("Yes!
");
else
printf( "No!
");
}
运行结果:
1. 请输入一个正整数:36↙
Yes!
2. 请输入一个正整数:15↙
No!
8
3.2.3 if语句嵌套
02
一般形式:
if (表达式) 语句1;
else if(表达式2) 语句2;
else if(表达式3)语句3;
else 语句4;
假
表达式1
语 句 1
表达式2
语 句 2
表达式3
语 句 3
语 句 4
假
假
真
真
真
9
3.2.3 if语句嵌套
02
例3-3有一个函数:
x ( x < 1 )
y= 2 x -1 ( 1 ≤ x < 10 )
3 x -10 ( x ≥10 )
编写程序,输入x的值,输出y的值:
#include <stdio.h>
main( )
{
float x, y;
printf("请输入x的值:");
scanf("%f", &x );
if ( x < 1 ) y = x;
else if ( x < 10 ) y = 2 * x -1;
else y = 3 * x -10;
printf("y值为:%.2f
", y );
}
10
3.2.3 if语句嵌套
02
x<1
y=x
x<10
y=2*x-1
y=3*x-10
假
假
真
真
if
else if
else
#include <stdio.h>
main( )
{
float x, y;
printf("请输入x的值:");
scanf("%f", &x );
if ( x < 1 ) y = x;
else if ( x < 10 ) y = 2 * x -1;
else y = 3 * x -10;
printf("y值为:%.2f
", y );
}
11
3.2.3 if语句嵌套
02
例3-3有一个函数:
-1 ( x < 0 )
y= 0 ( x = 0 )
1 ( x > 0 )
编写程序,输入x的值,输出y的值:
#include <stdio.h>
main( )
{
int x, y;
printf("请输入x的值:");
scanf("%d", &x );
if ( x < 0 ) y = -1;
else if ( x == 0 ) y = 0;
else y = 1;
printf("y值为:%d
", y );
}
12
3.2.3 if语句嵌套
02
[2018年高考]
从键盘上输入三个正整数a、b、c,判断能否以这三个数为边构成三角形。若可以,则计算三角形的面积且保留两位小数,若不可以,则输出“不能构成三角形”。
(提示:三角形的面积公式为 ,其中 )
13
3.2.3 if语句嵌套
02
#include <stdio.h>
#include <math.h>
main( )
{ int a,b,c;
float p,s;
printf("请输入三个正整数:");
scanf("%d%d%d", &a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{p=1.0/2*(a+b+c);
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("由%d,%d,%d组成的三角形的面积是%.2f
",a,b,c,s);
}
else
printf("%d,%d,%d这三个数构不成三角形",a,b,c);
}
14
3.2 条件语句(if语句)
02
例3-1:下面程序的输出结果是:
#include <stdio.h>
main()
{ int a=1,b=2;
if(a>b)
{a++; b++;
}else
{
a=0; b=10;
}
printf(“a=%d,b=%d
”,a,b);
}
15
3.2.4 条件表达式
02
一般形式:
表达式1?表达式2:表达式3
计算表达式3的值
表达式1
计算表达式2的值
真(非0) 假(0)
若表达式1的结果为真(或非0),则条件表达式的值等于表达式2的值;若表达式1的结果为假(或为0),则结果为表达式3的值
16
3.2.4 条件表达式
02
例如:
m=(x>y)?x:y;
表示将x和y中较大的值赋给m。若x>y,则将x的值赋给m,否则将y的值赋给m
说明:
①条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。
x>y?x:y-1 等价于 (x>y)?x:(y-1)
②条件运算符的结合性是“右结合性”,即自右向左,可理解为先从右边开始加括号。
a==b?(c=0):a>b?(c=2):(c=-2) 等价于 a==b?(c=0):(a>b?(c=2):(c=-2))
判断:若a=4,b=3,c=3,执行后的值为?若a=3,b=4,c=3呢?
17
3.2 条件语句(if语句)
02
例3-1:若有定义int i=-2,n;,则执行语句“n=++i==0?99:i==-1?11:22;”后,n的值是:
18
3.2 条件语句(if语句)
02
例3-1: 编写一个程序,判断一个字符是否为大写英文字母,若是,则转换为小写字母。
main( )
{ char ch;
scanf("%c", &ch );
ch = ( ch >= 'A' && ch <= 'Z' ? ch +32 : ch );
printf("%c
", ch );
}
19
$$