第4章选择和循环结构程序设计 2.if(表达式)语句1else语句2 例如: if(ab) printf( %d",a) else printf (%d",b) 这种ⅱf语句的执行是:若表达式的值为真(非0),则执行语句 1;否则(即表达式值为0)执行语句2。 3.if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else语句n 该ⅱf语句的执行过程是:若表达式1的值为真(非0),则执行语 句1;否则,若表达式2的值为真(非0),则执行语句2;否则 Back
第4章 选择和循环结构程序设计 2.if(表达式) 语句1 else 语句2 例如: if(a<b) printf(″%d″ ٫a); else printf(″%d″ ٫b); 这种if语句的执行是:若表达式的值为真(非0),则执行语句 1;否则(即表达式值为0)执行语句2。 3.if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ⋮ else if(表达式m) 语句m else 语句n 该if语句的执行过程是:若表达式1的值为真(非0)٫则执行语 句1;否则,若表达式2的值为真(非0),则执行语句2 ;否则
第4章选择和循环结构程序设计 达式m值为真(非0),则执行语句m:否则,执行语句。,若表 ,若表达式3的值为真(非0),则执行语句3; 否则 例如: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. 5 else cost=o: 说明: (1)三种形式的i语句中在f后面都有“表达式”,一般为逻辑 表达式或关系表达式。例如:if(a=b&&x=y) printf("a=b,x=y");在执行if语句时先对表达式求解,若表 达式值为0,按“假”处理,若表达式的值非0,按“真”处理, Bk定的语句
第4章 选择和循环结构程序设计 ,若表达式3的值为真(非0),则执行语句3;…… ;否则,若表 达式m值为真(非0),则执行语句m;否则,执行语句n。 例如: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.5; else cost=0; 说明: (1)三种形式的if语句中在if后面都有“表达式” ,一般为逻辑 表达式或关系表达式 。 例 如 :if(a==b&&x==y) printf(″a=b٫x=y″) ;在执行if语句时先对表达式求解,若表 达式值为0,按“假”处理,若表达式的值非0,按“真”处理, 执行指定的语句
第4章选择和循环结构程序设计 假如有以下if语句 if(10) printf just good") 是合法的,执行结果输出“ Just good”,因为表达式的值为10, 按“真”处理。由此可见,表达式的类型不限于逻辑表达式,可 以是任意的数据类型(包括整型、实型、字符型、指针型数据) 例如,下面的if语句也是合法的: if(a') printf("%d",’a’) 执行结果:输出’a’的 ASCII码97。 (2)第二、第三种形式的if语句中,在每个else前面有一分号, 整个语句结束处有一分号。例如: if(x==0) Ba
第4章 选择和循环结构程序设计 假如有以下if语句: if(10) printf(″Just good″) ; 是合法的,执行结果输出“Just good” ,因为表达式的值为10, 按“真”处理。由此可见,表达式的类型不限于逻辑表达式,可 以是任意的数据类型(包括整型、实型、字符型、指针型数据) 。例如,下面的if语句也是合法的: if('a') printf(″%d″ ٫'a') ; 执行结果:输出'a'的ASCII码97。 (2)第二、第三种形式的if语句中,在每个else前面有一分号, 整个语句结束处有一分号。例如: if(x==0)
第4章选择和循环结构程序设计 printf( the result is wrong") else printf The result is right") 这是由于分号是C语句中不可缺少的部分,这个分号是i语句 中的内嵌语句所要求的。如果无此分号,则出现语法错误。但应 该注意,不要误认为上面是两个语句(if语句和else语句)。它们 都属于同一个if语句。else子句不能作为语句单独使用,它必须 是if语句的一部分,与i配对使用。 (3)在i和else后面可以只含一个内嵌的操作语句(如上例) 也可以有多个操作语句,此时用花括号“}将几个语句括起来 成为一个复合语句。如 if(a+b>c&&b+c>a&&cta>b) Is=0. 5*(a+b+c); area=sgrt(s(s-a)*(s-b)*(s-c)) printf ( area=%6. 2f\n"area);) else printf it is not a trilateral\n") 注意在第3行的花括号“}”外面不需要再加分号。因为{}内是 个完整的复合语句,不需另附加分号 <Back
第4章 选择和循环结构程序设计 printf(″The result is wrong″); else printf(″The result is right″); 这是由于分号是C语句中不可缺少的部分,这个分号是if语句 中的内嵌语句所要求的。如果无此分号,则出现语法错误。但应 该注意,不要误认为上面是两个语句(if语句和else语句)。它们 都属于同一个if语句。else子句不能作为语句单独使用,它必须 是if语句的一部分,与if配对使用。 (3)在if和else后面可以只含一个内嵌的操作语句(如上例), 也可以有多个操作语句,此时用花括号“{}”将几个语句括起来 成为一个复合语句。如: if(a+b>c&&b+c>a&&c+a>b) {s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(″area=%6.2f\n″ ٫area);} else printf(″it is not a trilateral\n″); 注意在第3行的花括号“}”外面不需要再加分号。因为{}内是 一个完整的复合语句,不需另附加分号
第4章选择和循环结构程序设计 【例4.3】输入两个实数,按代数值由大到小的次序输出这 两个数 这个问题很简单,只需要作一次比较即可 程序如下: #include<stdio. h> main float a,b,t: scanf (" %f, %f",&a,&b) if(ab) It=a: a=b: b=t printf("%5.2f,%5.2\n",ab) return 0: 程序运行情况如下: 5.6,-7.8∠ 7.80,5.60 Back
第4章 选择和循环结构程序设计 【例4.3】 输入两个实数,按代数值由大到小的次序输出这 两个数。 这个问题很简单,只需要作一次比较即可。 程序如下: #include<stdio.h> main() { float a٫b٫t; scanf(″%f٫%f″ ٫&a٫&b); if(a<b) {t=a;a=b;b=t;} printf(″%5.2f٫%5.2\n″ ٫a٫b); return 0;} 程序运行情况如下: 5.6٫-7.8↙ -7.80,5.60