clrscr(); /*清屏*/
选择结构
一、单分支选择语句
1. 格式
if(表达式) 语句
2. 功能
当表达式的值为非0(真、条件成立)时,执行“语句”。否则执行if之后的下一句。
3. 说明
(1)表达式可以是任意类型的表达式(结果是数值型),但通常是关系或逻辑表达式。也可以是数值型的常量或变量(它们是最简单的表达式)。
(2)“语句”可以是以分号结束的单个语句,也可以是一个复合语句。不可以是多个语句。
4. 举例
例1、任意读入两个整数,然后输出其中的较大者。
main()
{int x,y;
scanf("%d%d",&x,&y);
if(x>y)printf("%d\n",x);
if(y>=x)printf("%d\n",y);
}
二、双分支if语句
【格式】
if(表达式)
语句1
else
语句2
【功能】
【说明】
1.“语句1”和“语句2”可以分别是以分号结束的单个语句,也可以分别是一个复合语句。都不可以是多个语句。
2. else子句不可以独立存在。
改写上例:任意读入2个整数,输出较大数。
main()
{int x,y;
scanf("%d%d",&x,&y);
if(x>y)
printf("%d\n",x);
else /*暗含两种情况:
printf("%d\n",y);
}
例如:任意读入2个整数,按从小到大的顺序输出这2个数。
【法1】
main()
{int x,y;
scanf("%d%d",&x,&y);
if(x
printf("%d,%d\n",x,y);
else
printf("%d,%d\n",y,x);
}
【法2:借助第三数,完成两数的交换】
让x中放较小数,y中放较大数。
main()
{int x,y;
int t; /*中间变量*/
scanf("%d%d",&x,&y);
if(x>y)
{t=x; x=y; y=t;}
printf("%d,%d\n",x,y);
}
【基本算法一:两数交换,借助第三数】
t=x; x=y; y=t;
【思考:本题改成“任意读入3数,从小到大输出”】
三、多分支if语句
【格式】
if(表达式1)
语句1
else if(表达式2)
语句2
else if(表达式3)
语句3
……
else
语句n+1
【功能】
【注意】else和if之间有空格。
最后的else子句可以省。
【举例】
例1、批发铅笔,批发量x,
100≤x<300,打7折;
300≤x<500,打5折;
500≤x<1000,打4.5折;
x>=1000,打4折。其余不
打折。求顾客应付款。(1元/支)
【法1:多分支选择语句】
main()
{int x;
float cost;
scanf("%d",&x);
if(x>=1000)
cost=1*x*0.4;
else if(x>=500)
cost=1*x*0.45;
else if(x>=300)
cost=1*x*0.5;
else if(x>=100)
cost=1*x*0.7;
else
cost=1*x;
printf("cost=%f\n",cost);
}
%m.nf(m、n是正整数,通常m>n,
m表示整个实数所占显示宽度,包含小数点,实数宽度不够时,左补空格;
n表示小数点右边的位数。)
例如:printf("%6.2f\n",3.14159);
UU3.14(U代表空格)
又如:printf("%3.4f\n",3.14159);
3.1416
【注意】%m.nf的格式可以省写成“%.nf”,即可将m省略。
%-m.nf(若数宽度不够,则右补空格)
%.nf(m可以省,满足小数点后保留n位,该实数实际需要占多少位,就占多少位。)
关于整数:
%md: 输出的整数若位数不足m位,左补空格。
%-md: 输出的整数若位数不足m位,右补空格。
例:任意读入一个年份,判断其是否为闰年。
(能被400整除,或能被4整除且不能被100整除的,就是闰年)
四、if语句的嵌套(if语句中含有另一个if语句)
例1:铅笔打折的改写。
main()
{int x;
float cost;
scanf("%d",&x);
if(x<100)
cost=1*x;
else
if(x<300)
cost=1*x*0.7;
else
if(x<500)
cost=x*1*0.5;
else
i