程序运行情况如下: Please input three numbers: 11 2218K The three numbers are: 11 22.18 max22 本案例中的第1个i语句,可优化为如下不带else子句 的形式: max-num1 f(num2>max)maxnum2 这种优化形式的基本思想是:首先取一个数预置为 max(最大值),然后再用max依次与其余的数逐个比较, 如果发现有比max大的,就用它给max重新赋值,比较完 所有的数后,max中的数就是最大值。这种方法,对从3 个或3个以上的数中找最大值的处理,非常有效。请读者 仔细体会
程序运行情况如下: Please input three numbers:11,22,18↙ The three numbers are:11,22,18 max=22 本案例中的第1个if语句,可优化为如下不带else子句 的形式: max=num1; if(num2>max) max=num2; 这种优化形式的基本思想是:首先取一个数预置为 max(最大值),然后再用max依次与其余的数逐个比较, 如果发现有比max大的,就用它给max重新赋值,比较完 所有的数后,max中的数就是最大值。这种方法,对从3 个或3个以上的数中找最大值的处理,非常有效。请读者 仔细体会
案例42输入任意三个数numl、num2、mum3,按从小到大的顺序 排序输出 /*案例代码文件名:AL42c。* maint fint numl, num2, num3, temp printf("Please input three numbers " scanf(" %od, %od, %od",&numl, &num2, &num3) if(numI>num2)(temp=numl; num1=num2; num2=temp; ) if(num2>numb)temp=num2; num2-num3; num3-=temp; 1 if(numI>num2)(temp=numl; numl=num2; num2=temp; 1 printf( " Three numbers after sorted: %od, %d, %odn",numl, num2, num3) 「程序演示 程序运行情况如下: Please input three numbers: 11, 22, 18K Three numbers after sorted 11.18.22
[案例4.2]输入任意三个数num1、num2、num3,按从小到大的顺序 排序输出。 /*案例代码文件名:AL4_2.c。*/ main() {int num1,num2,num3,temp; printf("Please input three numbers:"); scanf("%d,%d,%d",&num1,&num2,&num3); if (num1>num2) {temp=num1;num1=num2;num2=temp;} if (num2>num3) {temp=num2;num2=num3;num3=temp;} if (num1>num2) {temp=num1;num1=num2;num2=temp;} printf("Three numbers after sorted: %d,%d,%d\n",num1,num2,num3); } [程序演示] 程序运行情况如下: Please input three numbers:11,22,18↙ Three numbers after sorted: 11,18,22
1.i语句的一般格式 if(表达式) {语句组1 else {语句组2;} 1)i语句中的“表达式”必须用“(和“)起来。 (2)else子句(可选)是i句的一部分,必须与i配对使用,不 能单独使用。 (3)当i和else下面的语句组,仅由一条语句构成时,也可不使 用复合语句形式(即去掉花括号) 2.if语句的执行过程 (1)缺省else子句时 当“表达式”的值不等于0(即判定为“逻辑真”) 寸,则执行语句组1,否则直接转向执行下一条。如图4 l(a)所示
1.if语句的一般格式 if(表达式) {语句组1;} [else {语句组2;}] (1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句(可选)是if语句的一部分,必须与if配对使用,不 能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使 用复合语句形式(即去掉花括号)。 2.if语句的执行过程 (1)缺省else子句时 当“表达式”的值不等于0(即判定为“逻辑真”) 时,则执行语句组1,否则直接转向执行下一条。如图4- 1(a)所示
(2)指定else子句时 当“表达式”的值不等于0(即判定为“逻辑真”) 时,则执行语句组1,然后转向下一条语句;否则,执行 语句组2。如图4-1(b所示。 3.i语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓if语句的嵌套是指,在“语句 组1或(和)“语句组2”中,又包含有i语句的情况 if语句嵌套时,else子句与if的匹配原则:与在它上 面、距它最近、且尚未匹配的i配对。 为明确匹配关系,避免匹配错误,强烈建议:将内 嵌的i语句,一律用花括号括起来 [案例4.3]写一程序,从键盘上输入1年份year(4位十 进制数),判断其是否闰年。闰年的条件是:能被4整除、 但不能被100整除,或者能被400整除
(2)指定else子句时 当“表达式”的值不等于0(即判定为“逻辑真”) 时,则执行语句组1,然后转向下一条语句;否则,执行 语句组2。如图4-1(b)所示。 3.if语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓if语句的嵌套是指,在“语句 组1”或(和)“语句组2”中,又包含有if语句的情况。 if语句嵌套时,else子句与if的匹配原则:与在它上 面、距它最近、且尚未匹配的if配对。 为明确匹配关系,避免匹配错误,强烈建议:将内 嵌的if语句,一律用花括号括起来。 [案例4.3] 写一程序,从键盘上输入1年份year(4位十 进制数),判断其是否闰年。闰年的条件是:能被4整除、 但不能被100整除,或者能被400整除
算法设计要点: (1)如果Ⅹ能被Y整除,则余数为0,即如果X% Y的值等于0,则表示Ⅹ能被Y整除! 2)首先将是否闰年的标志leap预置为0(非闰年), 这样仅当year为闰年时将leap置为1即可。这种处理两种状 态值的方法,对优化算法和提高程序可读性非常有效, 请读者仔细体会。参考程序如下: /*案例代码文件名:AL43c。* /*功能:说明i语句的嵌套格式和用法。*/ maino fint year,leap *leap=0:预置为非闰年* printf("Please input the year: scanf("%od", &year)
算法设计要点: (1)如果X能被Y整除,则余数为0,即如果X% Y的值等于0,则表示X能被Y整除! (2)首先将是否闰年的标志leap预置为0(非闰年), 这样仅当year为闰年时将leap置为1即可。这种处理两种状 态值的方法,对优化算法和提高程序可读性非常有效, 请读者仔细体会。参考程序如下: /*案例代码文件名:AL4_3.c。 */ /*功能:说明if语句的嵌套格式和用法。 */ main() {int year,leap=0; /* leap=0:预置为非闰年*/ printf("Please input the year:"); scanf("%d",&year);