TAG: if…else…if…,if语句,条件控制语句,语句,程序,程序结构 TEXT: if…else…if…语句:实际的程序设计中常常面对更多的选择,当一个问题不仅有两种可能的结果,需要从多方面进行判断,有多种可能的情况进行处理时,可以将if…else…语句扩展成为if…else…if…结构。 一般格式: if(表达式1)?语句S1; else if (表达式2)?语句S2; 牋牋 else if(表达式e3)牋 语句S3; 牋牋牋?… 牋牋牋?else?语句Sn; 执行过程: 牋?首先计算表达式1结果值,如果为真,执行语句S1,否则,计算表达式2的结果值,如果为真,执行语句S2,否则,计算表达式3的结果值,如果为真,执行语句S3,…,以此类推,直至计算表达式n,如果为真,执行语句Sn,否则,如果有语句Sn+1,则执行语句Sn+1,如果没有语句Sn+1,则执行if…else…if…语句的下一条语句。无论如何,对于一次条件判断,语句S1、S2、…、Sn和Sn+1只能选择一个被执行。不能同时被执行。 牋?需要指出的:这是一条语句,属于双分支语句的扩充。
例4-7 从键盘上输入某个学生某门课程的成绩。当成绩高于90分时,输出A;成绩在80-89之间,输出B;成绩在70-79之间,输出C;成绩在60-69之间,输出D;而成绩不及格(小于60分)时输出E。 牋?要想将成绩按等级分类,就必须判断输入的课程成绩与对应的范围进行比较,检查其值是否大于等于90分,是:输出’A’,否:要继续判断其值是否在80?89之间,是:输出’B’,否:判断其值是否在70?79之间,是:输出’C’,否:判断其值是否在60?69之间,是:输出’D’,否:说明成绩低于60分,则输出’E’。 程序清单如下: main( ) 牋?{ 牋牋?int ave; 牋牋?printf("Enter students scores in three tests:\n"); 牋牋?scanf("%d",& ave); 牋牋牋 /*将成绩分类*/ 牋牋?printf("\n The student grade is: "); 牋牋?/*下面使用if…else if..语句 */ 牋牋?if (ave >= 90) printf("A"); 牋牋牋牋?else if (ave >= 80) printf("B"); 牋牋牋牋牋牋牋?else if (ave >= 70) printf("C"); 牋牋牋牋牋牋牋牋牋牋 else if (ave >= 60) printf("D"); 牋牋牋牋牋牋牋牋牋牋牋牋牋 else牋 printf("E"); 牋牋牋?/*这是一条语句*/? 牋?} 如果变量ave的值大于等于90,前4个条件均成立,但是由于第一个表达式的限定,只在执行了第一个printf语句之后就跳出了if…else if…结构。 对应于题中的if…else if..的语句格式,也可以采用if语句处理: 牋牋?if (ave >= 90) printf("A"); 牋牋?if (ave >= 80&&ave <= 89)牋?printf("B"); 牋牋?if (ave >= 70&&ave <= 79)牋?printf("C"); 牋牋?if (ave >= 60&&ave <= 69)牋?printf("D"); 牋牋?if (ave <60) printf("E"); 然而,这里使用了5条if语句,由此看出,使用 if…else if…格式可以提高程序的效率,使程序少做许多逻辑判断。
例4-8 编写一个程序根据用户输入的三角形的三边判定三角形的类型(等边、等腰、直角、一般)并求其面积。 确定组成三角形的条件,任意两边之和大于第三边(包括三种情况);如果可以构成三角形,计算该三角形的面积,并继续判定是哪类三角形,这些三角形包括:等边三角形(三边相等)、等腰三角形(任意两边相等、三种情况)、直角三角形(两边平方之和等于第三边平方、三种情况)、一般三角形;如果不能构成三角形,则提示相应信息。程序清单如下: #include "stdio.h" #include "math.h" main() { /*定义变量*/ float a,b,c; float s,area; /*输入三角形的三边*/ printf("a,b,c="); scanf("%f,%f,%f",&a,&b,&c); /*判定可否组成三角形*/ if(a+b>c&&a+c>b&&b+c>a) { /*计算并输出三角形面积*/ s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area); /*判定三角形的类型*/ if(a==b&&b==c) printf("等边三角形\n"); else if (a==b||b==c||a==c) printf("等腰三角形\n"); else if (a*a+b*b==c*c||a*a+c*c=b*b||b*b+c*c=a*a) printf("直角三角形\n"); else printf("一般三角形\n"); } else printf("不能组成三角形\n"); }
REF: .TXT #20040;情况?请上机试试。 < |
发表评论