1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,第,6,章,if,语句的应用,6.1 if,语句的应用,if,语句是一选择结构,根据条件的判定结果,(,真或假,),决定执行哪一分支,.,(一).,if,语句在,C,中有二种基本的形式:,判断条件,语句块,真,(,非,0),假,(0),(1),.,if(,表达式),语句块;,此处不要分号(;),例6.1,从键盘输入一批数,统计正数的和,当输入0时程序结束,.,#include,int main(),int x,sum=0;,scanf(%d,for(,;,x,;,scanf(%d,&x),if(x0),su
2、m=sum+x;,printf(正数和为:%dn,sum);,return 0;,ch6_6_1.c,例6.1,_1,改写上述程序,.,#include,int main(),int x,sum=0;,scanf(%d,for(,;,x,;),if(x0),sum=sum+x;,scanf(%d,&x),;,printf(正数和为:%dn,sum);,return 0;,ch6_6_1_1.c,例6.2,假设要输入某个同学8门课的成绩,如果输入某课程的成绩大于85分,则输出“该课程成绩优秀,!”,,同时输出目前有几门课程成绩是优秀了。最后输出该学生的总分和平均分。,#include,int m
3、ain(),int i=1,cj=0,yx=0;,float sum=0,avg=0;,for,(i=1;i=85),printf(t,该门课程的成绩优秀!,n);,yx+;,printf(t,累计,%d,门课程的成绩优秀!,n,yx);,.,sum+=cj;,avg=sum/8;,printf(“t,该同学,8,门课程的总分:,%0.1f,平均分:,%0.1f n,sum,avg);,return 0;,ch6_6_2.c,(2).,if(,条件表达式),语句块 1;,else,语句 块2;,判断条件,语句块,1,真,(,非,0),假,(0),语句块,2,6.2 if else,语句的应用,
4、在,C,语言中,凡是能用简单语,句的地方,都可使用复合语句,,因此,上式中的语句块,1,,语句块,2,可以是复合语句,.,if-else,语句是一,双分枝选择结构,例6.3,判断从键盘输入的数是正数还是负数,输 入0结束程序运行。,#include,int main(),int x=1;,printf(n,请输入一整数(输入,0,程序退出):,);,scanf(%d,.,ch6_6_3.c,while(x),if(x0),printf(,输入的整数,%d,是正数,.n,x);,else,printf(,输入的整数,%d,是负数,.n,x);,printf(n,请输入一整数(输入,0,程序退出)
5、);,scanf(%d,return 0;,例6.4,从键盘输入10个整数,把所有的正数相加,所有的负数相加,最后输出所有的正数和、负数和。,#include,void main(),int nsum=0,n=0,psum=0,p=0;,int i,x;,for(i=1;i=0),psum+=x;,p+;,else,nsum+=x;,n+;,printf(n,有,%d,个正数,和为,%dn,有,%d,个负数 和为,%dn,p,psum,n,nsum);,续行符,:,示例:,输入,2,个数,如果它们的值不相等,则交换并输出它们的值;否则,输出,“,equal,”,。,交换,a,和,b,值的
6、方法:,temp,=a;,a=b;,b=,temp,;,例,:,交换2个不相等的数 代码,:,a,b,temp,第三步,第二步,第一步,#,include,void main(),int a,b,temp;,printf(input a,b:);,scanf(%d%d,if,(a!=b),temp=a;,a=b;,b=temp;,printf(a=%d,b=%dn,a,b);,else,printf(equaln);,复合语句,input a,b:,2 10,a=10,b=2,input a,b:,12 12,equal,示例:输入3个整数,输出其中的最大值,#,include,void ma
7、in(),int a,b,c,max;,/*max,中放最大值,*/,printf(input a,b,c:);,scanf(%d%d%d,max=a;,if(max b)max=b;,if(max=90)、,良(80=,grade89)、,中(70=,grade79)、,及格(60=,grade69)、,不及格(,grade=90),printf(,你的成绩是优,!n);,else,if,(grade=80),printf(,你的成绩是良,!n);,else,if,(grade=70),printf(,你的成绩是中,!n);,ch6_6_5.c,else,if,(grade=60),prin
8、tf(,你的成绩为及格,!n);,else,printf(,你的成绩为不及格,!n);,return 0;,例,:,输入,x,计算下列分段函数,f(x).,x+1,x 1,f(x)=x+2,1x2,x+3,x 2,#include,void main(),double x,y;,printf(请输入x:);,scanf(%,lf,if,(x1),y=x+1;,else,if,(x0),if(ab),x=a;,else,x=b;,从程序的书写的格式来看,好像,else,是与第一个,if,配对.但实际上是和第二个,if,配对.,如果一定要改变配对关系,可使用花括号来确定配对关系(构造一个复合语句)
9、if(m0),if(ab),x=a;,else,x=b;,思考题(卷例):,*,执行下列语句:,i=0;if(i2)if(i2),if,(ic&a+cb&b+ca),if,(a=b&b=c),printf(,构成一个等边三角形,n);,else,if,(a=b|b=c|a=c),printf(,构成一个等腰三角形,n);,else,if,(a*a+c*c=b*b,|,a*a+b*b=c*c,|,c*c+b*b=a*a),printf(,构成一个直角三角形,n);,else,printf(,构成一个一般三角形,n);,else,printf(,不能构成一个三角形,!n);,return 0;
10、能构成一个三角形,第,6,章,If,语句的应用,结束,第,6,章后练习,7.,将大写字符转换为小写,.,#include,void main(),char ch;,while(ch=getchar()!=n),if(ch=A&ch=a&ch=A&ch=0&ch=9),z+;,else if(ch=|ch=n),a+;,else,b+;,printf(,小写字母,%d,个,n,x);,printf(,大写字母,%d,个,n,y);,printf(,数字字符,%d,个,n,z);,printf(,空格字符,%d,个,n,a);,printf(,其它字符,%d,个,n,b);,return 0;,9,计算分段函数,#include,void main(),float x,y;,printf(,请输入,x:n);,scanf(%f,if(x1&x=90&x=80&x=70&x=60&x70),x=2;,else,x=1;,printf(,五分制成绩为,%d,分,n,x);,printf(“1,继续,2,退出,!n);,scanf(%d,Ch6,第,6,章后练习,lx10.c,






