《最新四章语句与程序控制结构幻灯片.ppt》由会员分享,可在线阅读,更多相关《最新四章语句与程序控制结构幻灯片.ppt(105页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、24.2 顺序结构程序举例顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include ”math.h” main( ) float a, b, c, area, s; printf(”Enter a, 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=%-7.2fn”, area); 2cbas)(*)(*)(*csbsa
2、ssarea9例:输入一个整数,为正则输出 main( ) int x; scanf(”%d”, &x); if (x0) printf(”%dn” , x); 例:输入两个数并按由小到大顺序输出 main( ) float a, b, t; scanf(”%f,%f”, &a, &b); if (ab) t=a; a=b; b=t; printf(”%f,%fn”, a, b); 10第二种形式第二种形式双路分支 if (表达式) 语句1 else 语句2 其中:其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作;执行流程:执行流程: 首先求解表达式,并对其值进
3、行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。 若分支条件不成立,则执行内嵌语句2,之后执行后续语句。11对应算法:对应算法:PT F内嵌 内嵌 语句1 语句2可分行书写: if (表达式) 语句1 else 语句212例:根据x求y值 y= main( ) float x, y; scanf(”%f”, &x); if (x=0) y=x; printf(”y=%fn” , y); else y=x*x+1.0; printf(”y=%fn”, y); x x0 x2 + 1 x=0) y=x; else y=x*x+1.0; printf(”y=%fn”, y); 14例:求任意三角
4、形面积,若三边值不能构成三角形时输出表示错误的信息。#include math.h”main( ) float a, b, c, s, area; printf(”Enter a, 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); else printf(”DATA ERROR!”); 15第三种形式第三种形式阶梯if (不成立时嵌套分支) if ( e1 ) s1 e
5、lse if ( e2 ) s2 else if ( e3 ) s3 else if ( em ) sm else sn其中:其中:ei各层的分支条件;si各层的内嵌语句;执行流程:执行流程:首先计算并判断e1的值,为真执行s1,之后退出分支。e1为假则计算并判断e2的值,为真执行s2, 之后退出分支。依次类推。e1e2T F T F T F s1 s2 s3 s4e316例:对学生成绩分档;main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); else if (g
6、=80) printf(”A”); else if (g=70) printf(”B”); else if (g=60) printf(”C”); else printf(”D”); 80100分 A档 7079分 B档 6069分 C档 059分 D档17注意注意:分支条件的正确性 main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); else if (g=60) printf(”C”); else if (g=70) printf(”B”); else if (
7、g=80) printf(”A”); 57 65 89 D C C 18上例:用单路分支实现main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); if (g=80&g=70&g=60&g=0&g=59) printf(”D”); 多个并列if语句,执行效率不如阶梯 if。80100分 A档 7079分 B档 6069分 C档 059分 D档192. if 的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要
8、进一步分支算法表示:算法表示: 算法实现:算法实现: if (e1) s1 else if (e2) s2 else s3 e1e2T F T Fs1 s2 s3 20例:分支条件成立与不成立,均要进一步分支算法表示:算法表示: 算法实现:算法实现:e1 e2 e3T FT F T Fs1 s2 s3 s4if (e1) if (e2) s1 else s2else if (e3) s3 else s421例:分支条件不成立时需要若干层进一步的分支算法表示:算法表示: 算法实现:算法实现:e1e2e3T F T F T F s1 s2 s3 s4if (e1) s1else if (e2) s
9、2 else if (e3) s3 else s4 可见:阶梯if是条件不成立时的嵌套结构22例:编程,判定某年是否闰年闰年条件:整百的年份能被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” 23程序清单:main( ) int year, leap; scanf(”%d”, &year); if (year%100=0) if (year%400=0) leap=1;
10、else leap=0; else if (year%4=0) leap=1; else leap=0; if (leap=1) printf(”%d is a leap yeas.n”,year); else printf(”%d is not a leap year.n”, year); 24例:根据 x求y值。 3x - 11 (0 x 10) y= 2x + 5 (10 x 20) x (20 x 30)输入 x x0&x30T F x10 T F x20 T F y=x y=3x-11 y=2x+5 输出x无效 输出 y 输入x输出X无效3x-11yx0&x30 x10 x=0&x3
11、0) if (x10) y=3*x-11; else if (x20) y=2*x+5; else y=x; printf(”x=%7.2f,y=%7.2fn”, x, y); else printf(”%7.2f is invalid.n”, x); 26方法2: 3x - 11 ( 0 x 10) y= 2x + 5 (10 x 20) x (20 x 30) 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();else if(x10) y=3*x-11; els
12、e if(x=a & c=z) c=c-32; else c=c; printf(“%c”,c); /*将小写字母转换为大写字母*/29if语句 示例【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (xy) if (y0) ; if (x=2) if (1=x0”); y=x-1;304.3.2 switch多分支选择多分支选择 语句语句 (多路开关语句)1. switch的一般形式的一般形式 switch (表达式) case 常量1: s1 case 常量2: s2 case 常量n: sn default : sn+1 其中:其中:表达式可是
13、任何形式,但其值应为整型; 内嵌语句si可是一条语句、复合或空语句; 常量i可是整、字符、符号常量、常量表达式。312. switch的执行流程的执行流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。 若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。32switch执行流程图:执行流程图:switch (表达式) case c1: s1 case c2: s2 case cn: sn default : sn+1 求解表达式c1?c2?cn?sn+1s1sns2YYYN
14、NN33求解表达式c1?c2?cn?sn+1s1sns23. 使用说明使用说明1) 在switch中可以使用break语句跳出switch结构;breakbreakbreak34例:对成绩分档 main( ) char c1; int g; scanf(”%d”, &g); switch( g/10 ) case 10: c1=A ; case 9: c1=A ; case 8: c1=A ; case 7: c1=B ; case 6: c1=C ; default: c1=D ; printf(“%cn”, c1); 80100分 A档7079分 B档 6069分 C档 059分 D档br
15、eak;break;break;break;break;352) case后的各常量不能相同,否则编译无法通过;3) default为可选项,它提供了表达式的值与任何量 都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字 default;4) 多个case可共用一组执行语句; 例: switch( g/10 ) case 10: case 9: case 8: c1=A ; break; case 7: c1=B ; break; 36例:设计一个简单的菜单选择程序,根据选择可实 现a与b的四则运算。#include “stdio.h”main( ) int a
16、, b; char c1; clrscr( ); printf(”1. Addn”); printf(”2. Subtractn”); printf(”3. Multiplyn”); printf(”4. Dividen”); printf(”Enter your choice:”); c1=getchar( ); 37 c1=getchar( ); if (c1=1 & c1=4 ) printf(”Enter a, b:”); scanf(“%d,%d”, &a, &b); switch(c1) case 1 : printf(“%dn”, a+b); break; case 2 : pr
17、intf(“%dn”, a-b); break; case 3 : printf(“%dn”, a*b); break; case 4 : printf(“%fn”, (float)a/b); else printf(“Invalid selsction.”); /*main*/38switch语句 示例main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”); case B : printf(“7084n”); case C : printf(“6069n”); case D : printf(“60n”); def
18、ault : printf(“错误输入n”); 输入“c”,求输出结果。 结果: 6069 60 错误输入 ?!39switch语句 示例解决方法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(“60n”);break; default : printf(“错误输入n”); 这才差不多!break! 运行结果: 60694
19、0switch语句 示例解决方法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; printf(”MAX=%dn”, max); 43例:找出三个整数中的最大、最小数。main( ) int a, b, c, max, min; p
20、rintf(”Enter a, 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); 44例:输入三个整数,由大到小输出。main( ) int a, 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; b=c; c=t; printf(”%d,
21、%d,%dn”, a, b, c); 输入abc ab?ab bc?a=10000) w=5; /*求解位数*/ else if(a=1000) w=4; else if(a=100) w=3; else if(a=10) w=2; else w=1; p5=a/10000; /*分离各位*/ p4=(a-p5*10000L)/1000; /*L:防止溢出*/ p3=(a-p5*10000L-p4*1000)/100; 47 p2=(a-p5*10000L-p4*1000-p3*100)/10; p1=a-p5*10000L-p4*1000-p3*100-p2*10; printf(“t%ld
22、,%dntt”, a, w); switch( w ) case 5: printf(”%dbbb”, p5); /*无须break*/ case 4: printf(”%dbbb”, p4); case 3: printf(”%dbbb”, p3); case 2: printf(”%dbbb”, p2); case 1: printf(”%dbbb”, p1); printf(“n”);48另一种输出方法:switch( w ) case 5: printf(”%d %d %d %d %d”, p1, p2, p3, p4, p5); break; case 4: printf(”%d %
23、d %d %d”, p1, p2, p3, p4); break; case 3: printf(”%d %d %d”, p1, p2, p3); break; case 2: printf(”%d %d”, p1, p2); break; case 1: printf(”%d”, p1); 49例:输入四个整数,升序排序并输出。输入a、b、c、dT ab F ab T cd F cd T ac F ac T bc F bc T bd F bd T cd F cd 输出a、b、c、dbadccbdbdc504.4.1 while语句语句一般形式:一般形式:while (表达式) 语句其中:其中
24、: 表达式表示了循环条件;形式:任何表达式。 内嵌语句为循环体;形式:单条、复合、空语句。执行流程:执行流程: 首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。51循环类型:循环类型:当型,先判断后执行,循环体有可能一 次也不被执行。例:求 main( ) int i=1, sum=0; while(i=100) sum+=i; i+ ; printf(”%d”, sum); 1001nn52使用说明:使用说明:1) 在while的循环体中一定要有使循环趋于结束的 语句;否则将形成死循环;
25、2) 注意循环操作的范围、花括号、分号的使用;3) 注意与循环有关的变量赋初值的位置及初值的 正确性; 如:i=0; sum=1; 是错误的。53例:输入一个班某门课的成绩,统计80分的人数, 并计算出平均成绩,保留小数两位。 main( ) int i, count, score, num, sum; i=1, count=sum=0; printf(”Enter number:”); scanf(”%d”, &num); while(i=80) count+; i+ ; printf(”%d,%7.2fn”, count, (float)sum/num); 544.4.2 do - whi
26、le语句语句一般形式:一般形式: do 语句 while (表达式) ;其中:其中: 表达式表示了循环条件;形式:任何表达式。 内嵌语句为循环体;形式:单条、复合、空语句。执行流程:执行流程: 首先执行内嵌语句,之后求解表达式并对其值进逻辑判断,为真再次执行内嵌语句,如此反复,直到表达式的值为假退出 do - while循环。55循环类型:循环类型:直到型,先执行后判断,循环体至少执 行一次。例:求5! main( ) int i, fact; i=1, fact=1; do fact=fact*i; i+ ; while(i=A&ch=a&ch=t) printf(1); n=n-t; el
27、se printf(0); i-; while(n!=0 ); printf(nt 8:%ont16:%xn, num, num); 594.4.3 for语句语句一般形式:一般形式:for (表达式1; 表达式2; 表达式3) 语句其中:其中: 内嵌语句为循环体;形式:单条、复合、空语句; 各表达式可是任何形式的表达式; 通常:表达式1用于对循环控制变量赋初值; 表达式2给出循环控制条件; 表达式3使循环控制变量增值。循环类型:循环类型:当型60 for语句执行流程:语句执行流程: 求解e1求解e3内嵌语句求解测试 e2 F T 整个循环过程中e1只求解一次;内嵌语句和e3是重复执行的内容;
28、e2相当于是for的循环条件;61例:求main( ) int i, sum; for (sum=0, i=1; i=100; i+) sum=sum+i; printf(”1+2+3+100=%dn”, sum); 1+2+3+100=50501001nn62使用说明:使用说明: 1) for语句三个表达式的作用可理解为: for(循环变量赋初值;循环条件;循环变量增量) 语句2) e1、e1、e3均为可选项,它们可分别地或同时 被省略。省略省略e1: for ( ; i100) break; /*控制退出循环*/ sum=sum+i; 省略省略e3: 在流程中将跳过e3的求解,此时循环变量
29、的控制可在循环体中实现。 for (sum=0, i=1 ; i=100; ) sum=sum+i; i+; 64省略省略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循环的框架,在这个框架中便可使用break语句,达到跳过某段内容的目的。 for ( ; ; ) if (e) break; /*单独的if不能用break*/ 65例:for(i=10; i; i-) print
30、f(“%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); 0 2 4 6 8 10 i=1266例:for(i=1, j=6; ij; i+, j-) printf(“%d*%d=%dn”, i, j, i*j); 1*6=6 2*5=10 3*4=12 例:空循环构成一个延时器 long t; for(t=0; t=83000000; +t) ; 67例:计算15的阶乘 main( ) int i, fact; for(fact=1, i=1; i=5; i+
31、) fact=fact*i; printf(t%d!=%dn, i, fact); 1!=1 (每次循环都进行输出)) 2!=2 3!=6 4!=24 5!=12068例: 计算某班32位学生某门课的平均成绩,并输出 最高分、最低分。 main( ) int i, score, max=0, min=100; float sum=0; for(i=1;imax) max=score; if(scoremin) min=score; printf(average=%-8.2fn, sum/32); printf(max=%d,min=%dn, max, min); 69循环的嵌套循环的嵌套 一个
32、循环体内又包含一个完整的循环结构,称为循环的嵌套;嵌套的层次可是双重的或多重的。 C四种形式的循环可以互相嵌套,但绝不能出现交叉现象。正确的循环嵌套形式:正确的循环嵌套形式: 外循环 内循环 外循环 内循环1 内循环2三重循环70错误的循环交叉形式:错误的循环交叉形式: 例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3) while(e1); while(e); while(e); 71例:for循环嵌套 for(e1; e2; e3) for(b1; b2; b3) 求解e1部分语句1部分语句2e2?b2?求解b1内循环体求解b3求解
33、e3 F T F T72例:求110之间任意5个整数的阶乘值 main( ) int i, j, n; long fact; 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 ); 74例:按下列形式打印乘法九九表 i: 1 1*1=1 2 2*1=2 2*2=4 3 3*1=3 3*2=6 3*3=9 4 4*1=4 4*2=8 4*3=12 4*4=16 9 9*1=9 9*2=18 9*3=27 9*9=81 j 1 2
34、 3 9被乘数i取值19;i每取一值,乘数j取值1i75 main( ) int i, j, k; for(i=1; i=9; i+) for(j=1; j100 main( ) int r; float area; for(r=1; r100) break; printf(“r=%d,area=%-7.2fn”, r, area); (单步跟踪;监视r、area)79例: 求int型量的最大累加和 (1+2+3+.+? =sum, sum最大且32767) main( ) int i, sum=0; /*循环次数不明确*/ for(i=1, sum=0; ; i+) /* 省略了e2*/ i
35、f(long)sum+i32767) break; sum=sum+i; printf(“i=%d, sum=%dn, i, sum); i=256, sum=3264080例:输入两个正整数m和n,求其最大公约数和最小 公倍数。算法1: (穷举法)找出m、n中的较小者 t; 最大公约数肯定在t、t-1、t-2、1之间;2) 测试m%i和n%i是否同时为0 ; 除数i依次取 t、t-1、t-2 1 ; 测试条件成立时的 i值即为最大公约数;3) 最小公倍数:mn/最大公约数; 81main( ) int m, n, t, i; printf(“Enter m,n:”); scanf(“%d,%
36、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,12 17,3 GCD=6,SCM=36 GCD=1,SCM=5182算法2: (辗转相除法)main( ) int a, b, m, n, r, t; printf(“Enter a, b:”); scanf(“%d,%d”, &a, &b); m=a, n=b; /*产生a、b副本*/ if(mn?832. continue语句 一般形式:一般形式: continue;功能:功能:用于由while、do-while、f
37、or构成的循环中, 跳过本次循环后面尚未执行的语句,提前结 束本次循环,并继续循环流程的下一步。例:for中用 continue 例:while中用continue for(e1; e2; e3 ) while( e1 ) if (e) continue; if(e) continue; 84例:把100200之间不能被3整除的数输出;并控制 一行输出10个数据。 main( ) int n, c=0; printf(“n”); for(n=100; n=200; n+) if(n%3=0) continue; printf(“%d”, n); c+; printf(“%s”, c%10=0?
38、 ”n” : ” ); 85几种循环的比较几种循环的比较 1. 循环的控制类型循环的控制类型 1) 计数器控制 2) 标记控制 例:求一个班某门课的平均成绩。计数器控制循环:计数器控制循环: scanf(“%d”, &num); /*输入人数*/ for(i=1; i=num; i+) /*循环次数明确*/ scanf(“%d”, &g); sum=sum+g; aver=sum/num;86标记控制循环:标记控制循环:printf(“Enter grade, -1 to end:”); scanf(“%d”, &g);while(g!=-1) /*-1是数据结束标记*/ sum=sum+g;
39、 count+; printf(“Enter grade, -1 to end:”); scanf(“%d”, &g); aver=sum/count;872. 循环语句的选用循环语句的选用1) 循环次数已知且循环操作规律,选用 for方便;2) 循环次数未知且循环操作没有按一定规律变化 的量,可采用while或do-while语句。 88例:输入5个最多8位的正整数,将各数按位颠倒 输出。 main( ) int i; long n, d; for(i=1; i=10-4循环,t为某项值。 .7151311491#include math.hmain( ) int s; float n, t
40、, 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( ); 92例:求Fibonacci数列的前40个数,并按一行4个数 排列输出。 1,1,2,3,5,8,13,21 考虑问题:1) 属递推问题:从前一项或几项推出下一项结果;2) 定义几个变量? 一个:无法实现 ; 多个:各求其值,开销大; 三个:f3=f1+f2; f1=f2
41、; f2=f3; 两个:f1=f2=1; f1=f1+f2; f2=f2+f1; 由前两项相加求得下一项后第一项可覆盖,即 变量的值是不断更迭的(迭代法)。93main( ) long f1, 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( );94例:判断m是否素数素数:除1和它本身之外再无别的约数;算法:判断m%i=0成立否? i取值: 2(m-1) 或:2m(int)#inclu
42、de math.h main( ) int m, i, k; printf(tEnter m: ); scanf(%d, &m); k=sqrt(m); for(i=2; ik)printf(%d is a prime number.n, m); else printf(%d is not prime number.n, m);95例:求100 200之间的全部素数,并控制换行。算法:外循环控制m取100 200之间的奇数; #include math.hmain( ) int m, i, k, c=0; printf(n); for(m=101; m200; m=m+2) k=sqrt(m)
43、; for(i=2; ik) /*ik成立表示未出现约数*/ printf(%-6d, m); c+; if(c%10=0)printf(n); 96例:用幂级数求解指数函数,项数可变。 算法:对数列求和问题,关键是找出前后项之间 的递推关系: 即:第i项是在前一项temp上乘x/i得出, 迭代公式为:temp=temp*x/i; temp的初值:1 i: 1, 2, 3, 4,).(!.! 3! 2! 1132xnxxxxenx.4! 3,3! 2,21,132xxxxxxx97#include math.h main( ) int i, n; float x, sum, temp; sum
44、=1.0; temp=1.0; printf(“nPlease Input n,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.71828298 例:用字符*打印出钻石图案分析:将上半三角、下半三角分别处理,找出行 数、空格数、星号数之间的关系; 前四行: 行 空格 星号 1 3 1 2 2 3 3 1 5 4 0 7 规律: i 4i i21 后三行: 1 1 5
45、2 2 3 3 3 1 规律: i i 7i2 * * * * * * * * * * * * * * * * * * * * * * * * * 99main( ) int i, 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”); 100例:用字符*打印一个周期的sin(x)曲线及各点 的x、y值。要求:1) x轴垂直于屏幕; 2)
46、x步长为20 o ;3) 调用数学库函数实现y值的计算;提示:星号的显示位置与y值有关。101#include math.hmain( ) int i, j, p; double x, y; clrscr( ); for(i=0; i=360; i=i+20) x=3.141592/180.*i; /*角度转弧度*/ y=sin(x); printf(x=%-4d y=%7.2f, i, y); p=30+y*20; /*30:位移量,20:幅度*/ for(j=1; j=A&c=a&c=z) switch(c) case a: case A: case e: case E: case i: case I: case o: case O: case u: case U: l1+; /*l1: 元音字符*/ default: l2+; /*l2: 所有字母*/ printf(l1=%d,l2=%d,t=%dn, l1, l2, t);104本 章 结 束105 结束语结束语