if语句的一般形式

其中的语句可以是简单语句,复合语句也可以是另一个if语句等。
最常用的3种if语句形式:
(1) if (表达式) 语句1 (没有else子句)
(2) if (表达式) 语句1
else 语句2 (有else子句)
(3) if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
┆
else if(表达式m) 语句m
else 语句m+1
(在else部分又嵌套了多层的if语句)
如下程序:
if(number > 500) cost = 0.15;
else if (number > 300) cost = 0.10;
else if (number > 100) cost = 0.075;
else if (number > 50) cost = 0.05;
else cost=0;
等价于:
if (number > 500) cost = 0.15;
else
if (number > 300) cost = 0.10;
else
if (number > 100) cost = 0.075;
else
if (number > 50) cost = 0.05;
else cost = 0;
例题1:输入两个实数,按由小到大的顺序输出。
解题思路:
通过键盘输入两个数a和b,在输出数据之前,使a中存放小的数,b中存放大的数。当输入的数据为a>b时,需要将a和b的值进行交换。
将两个变量进行交换时,要借助于第三个变量,将其中一个变量的值先保存起来再交换。

---》
---》
#include <stdio.h>
int main()
{ float a,b,c;
scanf("%f,%f",&a,&b);
if(a>b)
{ c=a;
a=b;
b=c;
}
printf("%5.2f,%5.2f\n",a,b);
return 0;
}
例题2:输入3个数a,b,c,要求按由小到大的顺序输出。
解题思路:保证a最小,c最大
if a>b,a和b对换 (a是a、b中的小者)
if a>c,a和c对换 (a是三者中最小者)
if b>c,b和c对换 (b是三者中次小者)
顺序输出a,b,c
#include <stdio.h>
int 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);
return 0;
}
例题3:猜数游戏:如果猜对,显示“**正确**”否则显示“**错误**”。
解题思路:
通过键盘输入一个整数,用变量guess存放,如果输入的数据与程序中给定的数据magic相等,则输出“**正确**”,否则输出“**错误**”。对于两种不同的情况,可用if语句的双分支形式进行判断处理。
#include <stdio.h>
int main( )
{
int magic=123,guess;
printf("请输入数据:\n");
scanf("%d",&guess);
if (guess= =magic)
printf("**正确**\n");
else
printf("**错误**\n");
return 0;
}
2.if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套
一般形式:

例题1:
有一函数:
编程序,输入x值,要求输出相应的y值。
解题思路:方法1
(1) 先后用3个独立的if语句处理:
输入x
若 x < 0, 则y =-1
若 x = 0, 则y = 0
若 x > 0, 则y = 1
输出x和y
scanf("%d",&x);
if(x<0) y = -1;
if(x==0) y = 0;
if(x>0) y = 1;
printf("x=%d,y=%d\n",x,y);

解题方法2:用if的嵌套
程序1: 程序2:
if(x<0) if(x>=0)
y =-1; if(x>0) y=1;
else else y=0;
if(x==0) y=0; else y=-1;
else y=1;
程序3: 程序4:
y=-1; y=0;
if(x!=0) 错 if(x>=0) 错
if(x>0) y=1; if(x>0) y=1;
else y=0; else y=-1;
IF语句在EASYX图形程序中的应用
配合if语句,实现红色、蓝色交替画线:
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640, 480);
for(int y=100; y<200; y+=10)
{
if ( y/10 % 2 ==1) // 判断奇数行偶数行
setcolor(RGB(255,0,0));
else
setcolor(RGB(0,0,255));
line(100, y, 300, y);
}
getch();
closegraph();
}

