四章语句与程序控制结构

上传人:沈*** 文档编号:179072344 上传时间:2022-12-30 格式:PPT 页数:104 大小:393.55KB
收藏 版权申诉 举报 下载
四章语句与程序控制结构_第1页
第1页 / 共104页
四章语句与程序控制结构_第2页
第2页 / 共104页
四章语句与程序控制结构_第3页
第3页 / 共104页
资源描述:

《四章语句与程序控制结构》由会员分享,可在线阅读,更多相关《四章语句与程序控制结构(104页珍藏版)》请在装配图网上搜索。

1、1第四章 语句与程序控制结构 4.1 语句总述 4.2 顺序结构4.3 选择结构 4.4 循环结构 4.5 程序举例 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(”ar

2、ea=%-7.2fn”,area);2cbas)(*)(*)(*csbsassarea3例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。main()int num;char c1,c2,c3;printf(”Enter a data(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);4例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三年期利息公式:dp35源程序:#include math.h#define P1 2.3/100#define P3 3.2/100main()float x1,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

4、=%-7.2fn,x1,x3);64.3.1 if 语句语句 (分支控制语句)1.if 语句的语句的 三种形式三种形式单路分支:单路分支:条件成立执行操作,不成立什么也不做;双路分支:双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:嵌套分支:条件成立执行A操作,不成立时还需要进 一步进行分支判断。4.3 选择结构7 第一种形式第一种形式单路分支 if (表达式)语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。8执行流程:执行流程:首先求解表达式,并对其值进行逻辑判断;非零视为真,执行

5、内嵌语句,之后执行后续语句。若分支条件不成立,则直接执行后续语句。对应算法:对应算法:PT F内嵌 语句9例:输入一个整数,为正则输出 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是条件不成立时所执行的操作;执行流程:执行

6、流程:首先求解表达式,并对其值进行逻辑判断;为真,执行内嵌语句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例:求任意三角形面积,若三边值不能

7、构成三角形时输出表示错误的信息。#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 else if(e2)s2 else if(e3)s3 else if(em)s

8、m 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=80)printf(”A”);else if(g=70)printf(”B”);else if(g=60)printf(”C”

9、);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(g=80)printf(”A”);57 65 89 D C C 18上例:用单路分支实现main()int g;printf(”Enter score:”);scanf(”%d”,&

10、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 的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要进一步分支算法表示:算法表示:算法实现:算法实现:if(e1)s1 else if(e2)s2 else s3 e1e2T F T Fs1 s2 s3 20例:分支条件成立与不成立,均要进一步分支算法表示:算法表示:

11、算法实现:算法实现: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)s2 else if(e3)s3 else s4 可见:阶梯if是条件不成立时的嵌套结构22例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除;或非整百的年份能被4整除。算法表示:算法表示:输入yearyear%100=0year%400=0y

12、ear%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;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值。3

13、x-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&x30)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

14、 输出 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;else 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的一般

15、形式的一般形式 switch(表达式)case 常量1:s1 case 常量2:s2 case 常量n:sn default:sn+1 其中:其中:表达式可是任何形式,但其值应为整型;内嵌语句si可是一条语句、复合或空语句;常量i可是整、字符、符号常量、常量表达式。312.switch的执行流程的执行流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。32switch执行流程图:执行流程图:switch(表达式)case c

16、1:s1 case c2:s2 case cn:sn default:sn+1 求解表达式c1?c2?cn?sn+1s1sns2YYYNNN33求解表达式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)

17、;80100分 A档7079分 B档 6069分 C档 059分 D档break;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“std

18、io.h”main()int a,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:printf(“%dn”,a-b);brea

19、k;case 3:printf(“%dn”,a*b);break;case 4:printf(“%fn”,(float)a/b);else printf(“Invalid selsction.”);/*main*/YS38switch语句 示例main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);case B:printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default:printf(“错误输入n”);输入“c”,求输出结果。结果:6069 60 错误输

20、入?!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!运行结果:606940switch语句 示例解决方法break语句:main()char s;scanf(“%c”,&s);switch(s)case A:printf

21、(“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;printf(”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;print

22、f(”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,%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*10000

23、L)/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,%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);prin

24、tf(“n”);YS48另一种输出方法:switch(w)case 5:printf(”%d%d%d%d%d”,p1,p2,p3,p4,p5);break;case 4:printf(”%d%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

25、 F cd 输出a、b、c、dbadccbdbdc504.4.1 while语句语句一般形式:一般形式:while(表达式)语句其中:其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:执行流程:首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。51循环类型:循环类型:当型,先判断后执行,循环体有可能一 次也不被执行。例:求 main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(”%d”,sum);1

26、001nn52使用说明:使用说明:1)在while的循环体中一定要有使循环趋于结束的 语句;否则将形成死循环;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,(fl

27、oat)sum/num);544.4.2 do-while语句语句一般形式:一般形式: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=

28、n-t;else 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是重复执行的内容;e2相当于是for的循

29、环条件;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的求解,此时循环变量的控制可在循环体中实现。for(sum=0,i=1;i=100;)sum=s

30、um+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-)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(“n

31、i=%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+)fact=fact*i;printf(t%d!=%dn,i,fact);1!=1 (每次循环都进行输出))2!=2 3!=6 4!=24 5!=12068例:计算某班32位学生某门课的平均成绩,并输出 最高分、最低

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循环的嵌套循环的嵌套 一个循环体内又包含一个完整的循环结构,称为循环的嵌套;嵌套的层次可是双重的或多重的。C四种形式的循环可以互相嵌套,但绝不能出现交叉现象。正确的循环嵌套形式:正确的循环嵌套形式:外循环 内循环 外循环 内循环1 内循环2三重循环70错误的循环交叉形式:错误的循环交叉形式

33、:例: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求解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(

34、“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 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例

35、:求int型量的最大累加和 (1+2+3+.+?=sum,sum最大且32767)main()int i,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=3264080例:输入两个正整数m和n,求其最大公约数和最小 公倍数。算法1:(穷举法)1)找出m、n中的较小者 t;最大公约数肯定在t、t-1、t-2、1之间;2)测试m%i和n%i是否同时为0;除数i依次取 t、t-1、t-2 1;测试条件成立时的 i值即为

36、最大公约数;3)最小公倍数:mn/最大公约数;81main()int m,n,t,i;printf(“Enter m,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,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语句

37、 一般形式:一般形式:continue;功能:功能:用于由while、do-while、for构成的循环中,跳过本次循环后面尚未执行的语句,提前结 束本次循环,并继续循环流程的下一步。例: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+;pr

38、intf(“%s”,c%10=0?”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;count+;

39、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,pi;n=1.0;s=1;t=1./n;pi=0;whi

40、le(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;f2=f3;两个:f1=f2=1;f1=f1+f2;f2=f2+f1;由前两项相加求得下一项后第一项可覆盖,即

41、变量的值是不断更迭的(迭代法)。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)#include math.h main()int m,i,k;printf(tEnter m:);scanf(%d,&m);k=sqrt(m);for(i=2;ik)print

42、f(%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);for(i=2;ik)/*ik成立表示未出现约数*/printf(%-6d,m);c+;if(c%10=0)printf(n);96例:用幂级数求解指数函数,项数可变。算法:对数列求和问题,关键是找出前后项之间 的

43、递推关系:即:第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=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,

44、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 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(”

45、*”);printf(”n”);100例:用字符*打印一个周期的sin(x)曲线及各点 的x、y值。要求:1)x轴垂直于屏幕;2)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);YS104本 章 结 束

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!