《教学课件第四章语句与程序控制结构》由会员分享,可在线阅读,更多相关《教学课件第四章语句与程序控制结构(104页珍藏版)》请在金锄头文库上搜索。
1、第四章 语句与程序控制结构 4.1 语句总述 4.2 顺序结构4.3 选择结构 4.4 循环结构 4.5 程序举例 14.2 顺序结构程序举例顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include”math.h” main()floata,b,c,area,s;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(”a=%7.2f,b=%-7.2f,c=%-7.2fn”,a,b,c);printf(”area
2、=%-7.2fn”,area);2例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。main()intnum;charc1,c2,c3;printf(”Enteradata(100999):”);scanf(”%d”,&num);c1=num%10+48;/*or:num%10+0*/num=num/10;c2=num%10+48;num=num/10;c3=num+48;printf(”%3c,%3c,%3cn”,c1,c2,c3);3例3:定期存款一年期利率2.3%,三年期年利率3.2%,今有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息?(按一年期再存时本息
3、一并存)设:d为本金,p为利率一年期利息公式:第一年本息:d+dp=d(1+p)第一年本息:d(1+p)+d(1+p)p=d(1+p)2三年利息:d(1+p)3d三年期利息公式:dp34源程序:#includemath.h#defineP12.3/100#defineP33.2/100main()floatx1,x3,d;scanf(%f,&d);x1=d*pow(1+P1,3)-d;/*pow(1+2.3/100,3)*/x3=d*P3*3;/*pow(1+3.2/100,3)*/printf(x1=%-7.2fx2=%-7.2fn,x1,x3);54.3.1 if语句语句 (分支控制语句)
4、1.if 语句的语句的 三种形式三种形式单路分支:单路分支:条件成立执行操作,不成立什么也不做;双路分支:双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:嵌套分支:条件成立执行A操作,不成立时还需要进一步进行分支判断。4.3 选择结构6 第一种形式第一种形式单路分支 if (表达式) 语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。 可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。 7执行流程:执行流程: 首先求解表达式,并对其值进行逻辑判断;非零视为真,执行内嵌语句,之后执行后续语句。 若分支条件不成立,则直接执行后续语句。对应
5、算法:对应算法:PTF内嵌语句8例:输入一个整数,为正则输出main()intx;scanf(”%d”,&x);if(x0)printf(”%dn”,x);例:输入两个数并按由小到大顺序输出main()floata,b,t;scanf(”%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(”%f,%fn”,a,b);9第二种形式第二种形式双路分支 if(表达式)语句1else语句2 其中:其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作;执行流程:执行流程: 首先求解表达式,并对其值进行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。
6、 若分支条件不成立,则执行内嵌语句2,之后执行后续语句。10对应算法:对应算法:PTF内嵌内嵌语句1语句2可分行书写: if(表达式)语句1else语句211例:根据x求y值y=main()floatx,y;scanf(”%f”,&x);if(x=0)y=x;printf(”y=%fn”,y);elsey=x*x+1.0;printf(”y=%fn”,y);xx0x2+1x=0)y=x;elsey=x*x+1.0;printf(”y=%fn”,y);13例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。#includemath.h”main()floata,b,c,s,area
7、;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);if(a+bc&a+cb&b+ca)s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(”area=%-8.3fn”,area);elseprintf(”DATAERROR!”);14第三种形式第三种形式阶梯if(不成立时嵌套分支) if(e1)s1elseif(e2)s2elseif(e3)s3elseif(em)smelsesn其中:其中:ei各层的分支条件;si各层的内嵌语句;执行流程:执行流程:首先计算并判断e1的值,为真执行s1,之后退
8、出分支。e1为假则计算并判断e2的值,为真执行s2,之后退出分支。依次类推。e1e2TFTFTFs1s2s3s4e315例:对学生成绩分档;main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);elseif(g=80)printf(”A”);elseif(g=70)printf(”B”);elseif(g=60)printf(”C”);elseprintf(”D”);80100分 A档 7079分 B档 6069分 C档 059分 D档16注意注意:分支条件的正确性main()intg;pri
9、ntf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);elseif(g=60)printf(”C”);elseif(g=70)printf(”B”);elseif(g=80)printf(”A”);576589DCC17上例:用单路分支实现main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);if(g=80&g=70&g=60&g=0&g=59)printf(”D”);多个并列if语句,执行效率不如阶梯if。80100分
10、 A档 7079分 B档 6069分 C档 059分 D档182.if的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要进一步分支算法表示:算法表示: 算法实现:算法实现: if(e1)s1elseif(e2)s2elses3e1e2TFTFs1s2s319例:分支条件成立与不成立,均要进一步分支算法表示:算法表示: 算法实现:算法实现:e1e2e3TFTFTFs1s2s3s4if(e1)if(e2)s1elses2elseif(e3)s3elses420例:分支条件不成立时需要若干层进一步的分支算法表示:算法表示: 算法实现:算法
11、实现:e1e2e3TFTFTFs1s2s3s4if(e1)s1elseif(e2)s2elseif(e3)s3elses4可见:阶梯if是条件不成立时的嵌套结构21例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除; 或非整百的年份能被4整除。算法表示:算法表示:输入yearyear%100= =0year%400= =0year%4= =0T F T Fleap=1 leap=0 leap=1 leap=0 leap= =1 T F T F 输出“is”输出“not”22程序清单:main()intyear,leap;scanf(”%d”,&year);if(year%100=0)
12、if(year%400=0)leap=1;elseleap=0;elseif(year%4=0)leap=1;elseleap=0;if(leap=1)printf(”%disaleapyeas.n”,year);elseprintf(”%disnotaleapyear.n”,year);23例:根据x求y值。3x-11(0x10)y=2x+5(10x20)x(20x30)输入 x x0&x30T F x10 T F x20 T F y=x y=3x-11 y=2x+5 输出x无效 输出 y 输入x输出X无效3x-11yx0&x30x10x=0&x30)if(x10)y=3*x-11;else
13、if(x20)y=2*x+5;elsey=x;printf(”x=%7.2f,y=%7.2fn”,x,y);elseprintf(”%7.2fisinvalid.n”,x);25方法2:3x-11(0x10)y=2x+5(10x20)x(20x30) x=30T F 输出 x无效 x10 T F y=3x-11 y=2x+5 y=x x20 T F 输出 y 输入 xscanf(%f,&x);if(x=30)printf();elseif(x10)y=3*x-11;elseif(x=a & c=z) c=c-32; else c=c; printf(“%c”,c); /*将小写字母转换为大写字
14、母*/28if语句 示例【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (xy) if (y0) ; if (x=2) if (1=x0”); y=x-1;294.3.2 switch多分支选择多分支选择 语句语句 (多路开关语句)1. switch的一般形式的一般形式 switch(表达式)case常量1:s1case常量2:s2case常量n:sndefault:sn+1其中:其中:表达式可是任何形式,但其值应为整型;内嵌语句si可是一条语句、复合或空语句;常量i可是整、字符、符号常量、常量表达式。302. switch的执行流程的执行流程 首
15、先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。31switch执行流程图:执行流程图:switch(表达式)casec1:s1casec2:s2casecn:sndefault:sn+1求解表达式c1?c2?cn?sn+1s1sns2YYYNNN32求解表达式c1?c2?cn?sn+1s1sns23.使用说明使用说明1)在switch中可以使用break语句跳出switch结构;breakbreakbreak33例:对成绩分档
16、main()charc1;intg;scanf(”%d”,&g);switch(g/10)case10:c1=A;case9:c1=A;case8:c1=A;case7:c1=B;case6:c1=C;default:c1=D;printf(“%cn”,c1);80100分 A档7079分 B档 6069分 C档 059分 D档break;break;break;break;break;342)case后的各常量不能相同,否则编译无法通过;3)default为可选项,它提供了表达式的值与任何量都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字default;4)
17、多个case可共用一组执行语句;例:switch(g/10)case10:case9:case8:c1=A;break;case7:c1=B;break;35例:设计一个简单的菜单选择程序,根据选择可实现a与b的四则运算。#include“stdio.h”main()inta,b;charc1;clrscr();printf(”1.Addn”);printf(”2.Subtractn”);printf(”3.Multiplyn”);printf(”4.Dividen”);printf(”Enteryourchoice:”);c1=getchar();36c1=getchar();if(c1=1
18、&c1=4)printf(”Entera,b:”);scanf(“%d,%d”,&a,&b);switch(c1)case1:printf(“%dn”,a+b);break;case2:printf(“%dn”,a-b);break;case3:printf(“%dn”,a*b);break;case4:printf(“%fn”,(float)a/b);elseprintf(“Invalidselsction.”);/*main*/YS37switch语句 示例main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);
19、 case B : printf(“7084n”); case C : printf(“6069n”); case D : printf(“60n”); default : printf(“错误输入n”); 输入“c”,求输出结果。 结果: 6069 60 错误输入 ?!38switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);break; case C : printf(“6069n”);break; c
20、ase D : printf(“60n”);break; default : printf(“错误输入n”); 这才差不多!break! 运行结果: 606939switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);break; case C : printf(“6069n”);break; case D : printf(“max)max=b;if(cmax)max=c;if(dmax)max=d;pri
21、ntf(”MAX=%dn”,max);42例:找出三个整数中的最大、最小数。main()inta,b,c,max,min;printf(”Entera,b,c:”);scanf(”%d,%d,%d”,&a,&b,&c);max=ab?a:b;max=cmax?c:max;min=ab?a:b;min=cmin?c:min;printf(”MAX=%dnMIN=%dn”,max,min);43例:输入三个整数,由大到小输出。main()inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b
22、;b=c;c=t;printf(”%d,%d,%dn”,a,b,c);输入abc ab?ab bc?a=10000)w=5;/*求解位数*/elseif(a=1000)w=4;elseif(a=100)w=3;elseif(a=10)w=2;elsew=1;p5=a/10000;/*分离各位*/p4=(a-p5*10000L)/1000;/*L:防止溢出*/p3=(a-p5*10000L-p4*1000)/100;46p2=(a-p5*10000L-p4*1000-p3*100)/10;p1=a-p5*10000L-p4*1000-p3*100-p2*10;printf(“t%ld,%dntt
23、”,a,w);switch(w)case5:printf(”%dbbb”,p5);/*无须break*/case4:printf(”%dbbb”,p4);case3:printf(”%dbbb”,p3);case2:printf(”%dbbb”,p2);case1:printf(”%dbbb”,p1);printf(“n”);YS47另一种输出方法:switch(w)case5:printf(”%d%d%d%d%d”,p1,p2,p3,p4,p5);break;case4:printf(”%d%d%d%d”,p1,p2,p3,p4);break;case3:printf(”%d%d%d”,p1
24、,p2,p3);break;case2:printf(”%d%d”,p1,p2);break;case1:printf(”%d”,p1);48例:输入四个整数,升序排序并输出。输入a、b、c、dTabFabTcdFcdTacFacTbcFbcTbdFbdTcdFcd 输出a、b、c、dbadc得:得:得:得:a a最小最小最小最小dcdcb b与与与与c,dc,d的关的关的关的关系未知系未知系未知系未知cbdbB B次小次小次小次小dc49 while语句语句一般形式:一般形式:while(表达式)语句其中:其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语
25、句。执行流程:执行流程:首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。50循环类型:循环类型:当型,先判断后执行,循环体有可能一次也不被执行。例:求main()inti=1,sum=0;while(i=100)sum+=i;i+;printf(”%d”,sum);51使用说明:使用说明:1)在while的循环体中一定要有使循环趋于结束的语句;否则将形成死循环;2)注意循环操作的范围、花括号、分号的使用;3)注意与循环有关的变量赋初值的位置及初值的正确性;如:i=0;sum=1;是错误的。
26、52例:输入一个班某门课的成绩,统计80分的人数,并计算出平均成绩,保留小数两位。main()inti,count,score,num,sum;i=1,count=sum=0;printf(”Enternumber:”);scanf(”%d”,&num);while(i=80)count+;i+;printf(”%d,%7.2fn”,count,(float)sum/num);534.4.2 do-while语句语句一般形式:一般形式:do语句while(表达式);其中:其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:执行流程:首先执行内嵌语
27、句,之后求解表达式并对其值进逻辑判断,为真再次执行内嵌语句,如此反复,直到表达式的值为假退出do-while循环。54循环类型:循环类型:直到型,先执行后判断,循环体至少执行一次。例:求5!main()inti,fact;i=1,fact=1;dofact=fact*i;i+;while(i=A&ch=a&ch=t)printf(1);n=n-t;elseprintf(0);i-;while(n!=0);printf(nt8:%ont16:%xn,num,num);584.4.3 for语句语句一般形式:一般形式:for(表达式1;表达式2;表达式3)语句其中:其中:内嵌语句为循环体;形式:单
28、条、复合、空语句;各表达式可是任何形式的表达式;通常:表达式1用于对循环控制变量赋初值;表达式2给出循环控制条件;表达式3使循环控制变量增值。循环类型:循环类型:当型59for语句执行流程:语句执行流程:求解e1求解e3内嵌语句求解测试e2FT整个循环过程中e1只求解一次;内嵌语句和e3是重复执行的内容;e2相当于是for的循环条件;60例:求main()inti,sum;for(sum=0,i=1;i=100;i+)sum=sum+i;printf(”1+2+3+100=%dn”,sum);1+2+3+100=505061使用说明:使用说明:1)for语句三个表达式的作用可理解为:for(循
29、环变量赋初值;循环条件;循环变量增量)语句2)e1、e1、e3均为可选项,它们可分别地或同时被省略。省略省略e1:for(;i100)break;/*控制退出循环*/sum=sum+i;省略省略e3:在流程中将跳过e3的求解,此时循环变量的控制可在循环体中实现。for(sum=0,i=1;i=100;)sum=sum+i;i+;63省略省略e1和和e3:将跳过e1、e3的求解。sum=0;i=1;sum=0;i=1;for(;i=100;)等价while(i=100)sum=sum+i;sum=sum+i;i+;i+;省略省略e1、e2、e3:将搭建一个for循环的框架,在这个框架中便可使用b
30、reak语句,达到跳过某段内容的目的。for(;)if(e)break;/*单独的if不能用break*/64例:for(i=10;i;i-)printf(“%d,”,i);10,9,8,7,6,5,4,3,2,1,例:for(i=0;i=10;i=i+2)printf(“%3d”,i);printf(“ni=%d”,i);0246810i=1265例:for(i=1,j=6;ij;i+,j-)printf(“%d*%d=%dn”,i,j,i*j);1*6=62*5=103*4=12例:空循环构成一个延时器longt;for(t=0;t=83000000;+t);66例:计算15的阶乘main
31、()inti,fact;for(fact=1,i=1;i=5;i+)fact=fact*i;printf(t%d!=%dn,i,fact);1!=1(每次循环都进行输出))2!=23!=64!=245!=12067例:计算某班32位学生某门课的平均成绩,并输出最高分、最低分。main()inti,score,max=0,min=100;floatsum=0;for(i=1;imax)max=score;if(scoremin)min=score;printf(average=%-8.2fn,sum/32);printf(max=%d,min=%dn,max,min);68循环的嵌套循环的嵌套
32、一个循环体内又包含一个完整的循环结构,称为循环的嵌套;嵌套的层次可是双重的或多重的。C四种形式的循环可以互相嵌套,但绝不能出现交叉现象。正确的循环嵌套形式:正确的循环嵌套形式: 外循环内循环外循环内循环1内循环2三重循环69错误的循环交叉形式:错误的循环交叉形式:例:do-while嵌套例:do-while、for混合嵌套dododofor(e1;e2;e3)while(e1);while(e);while(e);70例:for循环嵌套for(e1;e2;e3)for(b1;b2;b3)求解e1部分语句1部分语句2e2?b2?求解b1内循环体求解b3求解e3FTFT71例:求110之间任意5个
33、整数的阶乘值main()inti,j,n;longfact;for(i=1;i=5;i+)scanf(%d,&n);fact=1;for(j=1;j=0;i-)for(j=0;j=82000000;j+);/*延时1秒*/printf(“a%db,i);73例:按下列形式打印乘法九九表i:11*1=122*1=22*2=433*1=33*2=63*3=944*1=44*2=84*3=124*4=1699*1=99*2=189*3=279*9=81j1239被乘数i取值19;i每取一值,乘数j取值1i74main()inti,j,k;for(i=1;i=9;i+)for(j=1;j100main
34、()intr;floatarea;for(r=1;r100)break;printf(“r=%d,area=%-7.2fn”,r,area);(单步跟踪;监视r、area)78例:求int型量的最大累加和(1+2+3+.+?=sum,sum最大且32767)main()inti,sum=0;/*循环次数不明确*/for(i=1,sum=0;i+)/*省略了e2*/if(long)sum+i32767)break;sum=sum+i;printf(“i=%d,sum=%dn,i,sum);i=256,sum=3264079例:输入两个正整数m和n,求其最大公约数和最小公倍数。算法1:(穷举法)1
35、)找出m、n中的较小者t;2)最大公约数肯定在t、t-1、t-2、1之间;2)测试m%i和n%i是否同时为0;除数i依次取t、t-1、t-21;测试条件成立时的i值即为最大公约数;3)最小公倍数:mn/最大公约数;80main()intm,n,t,i;printf(“Enterm,n:”);scanf(“%d,%d”,&m,&n);t=m=1;i-)if(m%i=0&n%i=0)break;printf(“GCD=%d,SCM=%dn”,i,m*n/i);18,1217,3GCD=6,SCM=36GCD=1,SCM=5181算法2:(辗转相除法)main()inta,b,m,n,r,t;pri
36、ntf(“Entera,b:”);scanf(“%d,%d”,&a,&b);m=a,n=b;/*产生a、b副本*/if(mn?822.continue语句一般形式:一般形式:continue;功能:功能:用于由while、do-while、for构成的循环中,跳过本次循环后面尚未执行的语句,提前结束本次循环,并继续循环流程的下一步。例:for中用continue例:while中用continuefor(e1;e2;e3)while(e1)if(e)continue;if(e)continue;83例:把100200之间不能被3整除的数输出;并控制一行输出10个数据。main()intn,c=0
37、;printf(“n”);for(n=100;n=200;n+)if(n%3=0)continue;printf(“%d”,n);c+;printf(“%s”,c%10=0?”n”:”);84几种循环的比较几种循环的比较1. 循环的控制类型循环的控制类型 1)计数器控制2)标记控制例:求一个班某门课的平均成绩。计数器控制循环:计数器控制循环:scanf(“%d”,&num);/*输入人数*/for(i=1;i=num;i+)/*循环次数明确*/scanf(“%d”,&g);sum=sum+g;aver=sum/num;85标记控制循环:标记控制循环:printf(“Entergrade,-1t
38、oend:”);scanf(“%d”,&g);while(g!=-1)/*-1是数据结束标记*/sum=sum+g;count+;printf(“Entergrade,-1toend:”);scanf(“%d”,&g);aver=sum/count;862. 循环语句的选用循环语句的选用1)循环次数已知且循环操作规律,选用for方便;2)循环次数未知且循环操作没有按一定规律变化的量,可采用while或do-while语句。87例:输入5个最多8位的正整数,将各数按位颠倒输出。main()inti;longn,d;for(i=1;i=10-4循环,t为某项值。90#includemath.hma
39、in()ints;floatn,t,pi;n=1.0;s=1;t=1./n;pi=0;while(fabs(t)=1e-4)/*判断某项*/pi=pi+t;/*累加和*/n=n+2.0;/*改变分母*/s=-s;/*符号变反*/t=s/n;/*计算下一项*/printf(PI=%10.6fn,pi*4);getch();91例:求Fibonacci数列的前40个数,并按一行4个数排列输出。1,1,2,3,5,8,13,21考虑问题:1)属递推问题:从前一项或几项推出下一项结果;2)定义几个变量?一个:无法实现;多个:各求其值,开销大;三个:f3=f1+f2;f1=f2;f2=f3;两个:f1=
40、f2=1;f1=f1+f2;f2=f2+f1;由前两项相加求得下一项后第一项可覆盖,即变量的值是不断更迭的(迭代法)。92main()longf1,f2,i;f1=f2=1;for(i=1;i=20;i+)printf(%12ld%12ld,f1,f2);if(i%2=0)printf(n);/*每行4项*/f1=f1+f2;/*一次递推两项*/f2=f2+f1;getch();93例:判断m是否素数素数:除1和它本身之外再无别的约数;算法:判断m%i=0成立否?i取值:2(m-1)或:2#includemath.hmain()intm,i,k;printf(tEnterm:);scanf(%
41、d,&m);k=sqrt(m);for(i=2;ik)printf(%disaprimenumber.n,m);elseprintf(%disnotprimenumber.n,m);94例:求100200之间的全部素数,并控制换行。算法:外循环控制m取100200之间的奇数; #includemath.hmain()intm,i,k,c=0;printf(n);for(m=101;m200;m=m+2)k=sqrt(m);for(i=2;ik)/*ik成立表示未出现约数*/printf(%-6d,m);c+;if(c%10=0)printf(n);95例:用幂级数求解指数函数,项数可变。算法:
42、对数列求和问题,关键是找出前后项之间的递推关系:即:第i项是在前一项temp上乘x/i得出,迭代公式为:temp=temp*x/i;temp的初值:1i:1,2,3,4,96#includemath.hmain()inti,n;floatx,sum,temp;sum=1.0;temp=1.0;printf(“nPleaseInputn,x:”);scanf(%d,%f,&n,&x);/*输入项数和x*/for(i=1;i=n;i+)temp=temp*x/i;sum=sum+temp;printf(texp(%.2f)=%fn,x,sum);20,1输出:exp(1.00)=2.7182829
43、7例:用字符*打印出钻石图案分析:将上半三角、下半三角分别处理,找出行数、空格数、星号数之间的关系;前四行:行空格星号131223315407规律:i4ii21后三行:115223331规律:ii7i2*98main()inti,j;for(i=1;i0;j-)printf(”);for(j=i*2-1;j0;j-)printf(”*”);printf(”n”);for(i=1;i0;j-)printf(”);for(j=7-i*2;j0;j-)printf(”*”);printf(”n”);99例:用字符*打印一个周期的sin(x)曲线及各点的x、y值。要求:1)x轴垂直于屏幕;2)x步长为
44、20o;3)调用数学库函数实现y值的计算;提示:星号的显示位置与y值有关。100#includemath.hmain()inti,j,p;doublex,y;clrscr();for(i=0;i=360;i=i+20)x=3.141592/180.*i;/*角度转弧度*/y=sin(x);printf(x=%-4dy=%7.2f,i,y);p=30+y*20;/*30:位移量,20:幅度*/for(j=1;j=A&c=a&c=z)switch(c)casea:caseA:casee:caseE:casei:caseI:caseo:caseO:caseu:caseU:l1+;/*l1:元音字符*/default:l2+;/*l2:所有字母*/printf(l1=%d,l2=%d,t=%dn,l1,l2,t);YS103本 章 结 束104