1、Teacher teaching designCONTENTS 目 录自主学习 明确考点案例分析 交流提升课后作业 自我提升仿真演练,体验探索自主学习 明确考点PART 01选择结构的嵌套语句PART 01选择结构的嵌套语句条件1条件2条件n程序段1程序段2程序段n程序段n+1if后程序段真假假假真真选择结构的嵌套语句形式如下:if(条件表达式1)语句序列1else if(条件表达式2)语句序列2else if(条件表达式3)语句序列3else 语句序列n选择结构的嵌套语句执行过程 选择结构的嵌套语句说明1(1)除与前面两种格式的要求外还要注意格式三中最后的else语句可以没有,即判断各种情况
2、,若没有一种条件成立时,可以不执行任何操作。说明2(2)格式三中的各表达式其条件要互不相容。说明3(3)if语句允许嵌套,但嵌套的层数不宜太多,应适当控制嵌套层数(2-3层)。说明案例分析 交流提升PART 02程序1#include main()int a,b,c,max;printf(a=);scanf(%d,&a);printf(b=);scanf(%d,&b);printf(c=);scanf(%d,&c);if(a b)if(a c)max=a;else max=c;else if(b c)max=b;else max=c;printf(Max=%dn,max);算法思路1:设三个数
3、分别为a,b,c,首先设置外层,任取两个数a,b进行比较,如果a大于b成立,则只要把a与c进行比较(作为内层),取二者中最大值就可;否则只要把b与c进行比较(作为内层),取其中的最大值。【例1】、任意输入三个整数,比较大小,输出其中最大值。案例分析 交流提升1程序2:main()int a,b,c,max;printf(Please input three numbers:);scanf(%d,%d,%d,&a,&b,&c);if(ab)max=a;else max=b;if(cmax)max=c;printf(The three numbers are:%d,%d,%dn,a,b,c);pr
4、intf(max=%dn,max);第一步:将a,b比较,如果a大于b,则把a的值放在max中,否则,将b的值放在此max中;第二步:将c与max比较,如c大于max,则将c的值放在max中。最后所求的那个数就为最大数。【例1】、任意输入三个整数,比较大小,输出其中最大值。案例分析 交流提升1运行结果:Please input three numbers:15,8,27The three numbers are:15,8,27max=27main()float x,y,a;printf(please input two number to x and y:n);scanf(%f,%f,&x,&
5、y);if(x=0)if(y=0)a=x+y;else a=x-y;else if(y=0)a=-x+y;else a=-x+(-y);printf(the value is:%fn,a);根据数学知识可知,任意一个未知数绝对值的取值,可能存在大于0、等于0、小于0三种情况,在这里可知,只要变量x、y中,如果假设有一个数大于等于0或小于等于0,那么只需判断另一个数的情况。求|x|+|y|=a案例分析 交流提升2#include stdio.hvoid main()int x,a,b,c,d;/*a,b,c,d代表千位、百位、十位、个位*/scanf(%d,&x);a=x/1000;b=x%10
6、00/100;c=x%100/10;d=x%10;/*分解出千位、百位、十位、个位*/if(a!=0)printf(4:%d%d%d%dn,d,c,b,a);else if(b!=0)printf(3:%d%d%dn,d,c,b);else if(c!=0)printf(2:%d%dn,d,c);else if(d!=0)printf(1:%dn,d);案例分析 交流提升3思考:本例的算法思路【例3】、给一个不多于4位的正整数,求出它是几位数,逆序打印出各位数字。#include stdio.hvoid main()float a,b,c;scanf(%f,%f,%f,&a,&b,&c);if
7、(a+bc&a+cb&b+ca)if(a=b&b=c)printf(equalateral triangle.n);else if(a=b|a=c|b=c)printf(isoscelestrianglen);else printf(other trianglen);else printf(can notn);【例4】、任意输入三个数,判断能否构成三角形?若能构成三角形,是等边三角形、等腰三角形还是其它三角形;案例分析 交流提升4:#include main()float a,b,c,d,x1,x2,p,q;printf(a=);scanf(%f,&a);printf(b=);scanf(%f
8、,&b);printf(c=);scanf(%f,&c);d=b*b-4*a*c;if(d=0)if(d 0)x1=(-b+sqrt(d)/2*a;x2=(-b-sqrt(d)/2*a;printf(方程有两个不同的实根:);printf(x1=%6.2fn,x1);printf(x2=%6.2f,x2);案例分析 交流提升5【例5】、输入一个一元二次方程ax2+bx+c=0的三个系数,求方程的两个根,根的计算公式abacibxxabxxaacbbxxacb24,02,024,04221212212时,时,时,else x1=(-b)/2*a;printf(方程有两个相同的实根:);print
9、f(x1=x2%6.2f,x1);else p=(-b)/2*a;q=sqrt(-d)/2*a;printf(方程有两个不同的虚根:n);printf(x1=%6.2f+%6.2f in,p,q);printf(x1=%6.2f-%6.2f in,p,q);【例6】#includestdio.hmain()char c;printf(input a character:);c=getchar();if(c=0&c=A&c=a&c=z)printf(This is a small lettern);else printf(This is an other charactern);案例分析 交流提
10、升6仿真演练 体验探索PART 041、以下程序运行后的输出结果是()main()int a=3,b=4,c=5,t=99;if(ba&ac)t=a;a=c;c=t;if(ac&bc)t=b;b=a;a=t;printf(%d%d%dn,a,b,c);仿真演练 体验探索2、当a=1,b=3,c=5,d=5时,执行下面的程序段后,x的值为()if(ab)if(cd)x=1;else if(ac)if(bb)if(bc)printf(%d,d+1);else printf(%d,+d+1);printf(%dn,d);仿真演练 体验探索有以下程序程序输出()main()int a=0,b=0,c=
11、0,d=0;if(a=1)b=1;c=2;else d=3;printf(%d,%d,%d,%dn,a,b,c,d);以下程序运行后的结果是()main()int a=1,b=2,c=3;if(c=a)printf(%dn,c);else printf(%dn,b);有以下程序执行后输出结果是()main()int n=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(%dn,x);仿真演练 体验探索课后作业 自我提升PART 05【1】计算分数段【3】输入一个字符,判断输入字符的种类(数字、字符、其他)【2】判断一个数是否既是2的倍数,又是3的倍数【4】上机演练各程序,并写好实习报告课后作业 自我提升 x5x1y2 x1x1 03x1 0 x1 0