第四章程序控制结构

上传人:沈*** 文档编号:119625693 上传时间:2022-07-15 格式:PPT 页数:55 大小:489KB
收藏 版权申诉 举报 下载
第四章程序控制结构_第1页
第1页 / 共55页
第四章程序控制结构_第2页
第2页 / 共55页
第四章程序控制结构_第3页
第3页 / 共55页
资源描述:

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

1、C语言程序设计程序控制结构程序控制结构C语言的语句C语言中语句以语言中语句以分号分号“;”结束,语句分为:结束,语句分为:1.声明语句:在程序编译时处理,在程序运行时不产声明语句:在程序编译时处理,在程序运行时不产生相应的操作。生相应的操作。2.执行语句:在程序运行时向计算机系统发出操作命执行语句:在程序运行时向计算机系统发出操作命令,使计算机执行特定的操作。令,使计算机执行特定的操作。void main()void main()int int i;/i;/*声明语句声明语句*/printf(printf(%dn%dn,(i,(i=1,+i);/=1,+i);/*执行语句执行语句*/C语言的执

2、行语句表达式语句:表达式加分号表达式语句:表达式加分号“;”空语句:仅一个分号空语句:仅一个分号“;”构成的语句构成的语句复合语句:用一对花括号复合语句:用一对花括号括起来的多条语句括起来的多条语句控制语句:控制语句:C语言提供语言提供9种控制语句,见种控制语句,见P62#includemath.h#include void main()void main()int int i;i;i=abs(-2);/i=abs(-2);/*表达式语句(赋值语句)表达式语句(赋值语句)空语句空语句*/printf(printf(%dn%dn,i,i);/);/*表达式语句(函数调用语句)表达式语句(函数调用

3、语句)*/C语言的执行语句#includestdio.h#include void main()void main()int a,b int a,b;printf(Please input a,b:n printf(Please input a,b:n););scanf(%d,%d,&a,&b scanf(%d,%d,&a,&b););if(a if(ab)/b)/*控制语句(控制语句(ifif语句)语句)*/int t;t=a;a=b;b int t;t=a;a=b;b=t;/=t;/*复合语句复合语句*/printf(a=%d,b=%dn,a,b printf(a=%d,b=%dn,a,b

4、););getch getch();();程序控制结构程序的三种基本结构程序的三种基本结构顺序结构:程序执行按照代码书写顺序执行顺序结构:程序执行按照代码书写顺序执行 选择结构:选择结构:循环结构:循环结构:if 语句语句switch语句语句当型循环结构当型循环结构(for(for语句、语句、whilewhile语句语句)直到型循环结构(直到型循环结构(do-whiledo-while语句)语句)顺序结构所谓顺序结构程序就是按代码书写顺序,自上所谓顺序结构程序就是按代码书写顺序,自上而下执行的语句构成的程序段。而下执行的语句构成的程序段。一般顺序结构的流程图为:一般顺序结构的流程图为:动作动作

5、1 1动作动作2 2动作动作3 3例:计算两个键盘输入的整数的平均值并输出。例:计算两个键盘输入的整数的平均值并输出。开始开始输入两个整数输入两个整数计算平均值计算平均值定义三个变量定义三个变量输出平均值输出平均值结束结束#includestdio.h#include main()main()int a,b int a,b;float average;float average;printf(Please input a,b:n printf(Please input a,b:n););scanf(%d,%d,&a,&b scanf(%d,%d,&a,&b););average=(a+b)/2

6、.0;average=(a+b)/2.0;printf(average=%fn,average printf(average=%fn,average););getch getch();();选择结构C语言的选择控制语句有两条:语言的选择控制语句有两条:条件选择语句:条件选择语句:if语句语句开关分支语句:开关分支语句:switch语句语句一、一、if语句的三种形式语句的三种形式1、if(表达式)(表达式)语句语句表达式表达式真真(非非0)0)语句序列语句序列假假(0)(0)例:输入一个字母,以小写形式输出该字母。例:输入一个字母,以小写形式输出该字母。#includestdio.h#inclu

7、de main()main()char c;char c;printf(Input printf(Input a letter:);a letter:);c=getchar c=getchar();();if(c if(c=A&c=A&c=Z)c=c+32;c=c+32;printf(%cn,c printf(%cn,c););getch getch();();开始开始输入一个字母输入一个字母定义一个字符变量定义一个字符变量输出字母输出字母结束结束大写字母大写字母?转换为小写字母转换为小写字母真真(非非0)假假(0)选择结构一、一、if语句的三种形式语句的三种形式2、if(表达式)(表达式)语

8、句语句1 else 语句语句2 表达式表达式真真(非非0)0)语句序列语句序列2 2假假(0)(0)语句序列语句序列1 1例:输出实数例:输出实数x,y中的较大者。中的较大者。#includestdio.h#include main()main()float x,y float x,y;printf(Input x,y printf(Input x,y:);:);scanf(%f,%f,&x,&y scanf(%f,%f,&x,&y););if(x if(xy)y)printf(%fn,x printf(%fn,x););else else printf(%fn,y printf(%fn,y)

9、;);getch getch();();开始开始输入两个实数输入两个实数定义两个实型变量定义两个实型变量输出输出x结束结束xy?输出输出y真真(非非0)假假(0)选择结构一、一、if语句的三种形式语句的三种形式3、if(表达式(表达式1)语句语句1 else if(表达式(表达式2)语句语句2 .else if(表达式(表达式n)语句语句n else 语句语句n+1表达式表达式1 1真真(非非0)0)语句序列语句序列n n假假(0)(0)语句序列语句序列1 1表达式表达式2 2语句序列语句序列2 2真真(非非0)0)表达式表达式n n假假(0)(0)真真(非非0)0)语句序列语句序列n+1n+

10、1假假(0)(0)例:输入百分制成绩,要求输出相应的五级制成绩。例:输入百分制成绩,要求输出相应的五级制成绩。百分制成绩与五级制成绩之间的转换标准为:百分制成绩与五级制成绩之间的转换标准为:9090分以上为分以上为“A”A”;80898089分为分为“B”B”;70797079分为分为“C”C”;60696069分为分为“D”D”;6060分以下为分以下为“E”E”。#includestdio.h#include main()main()int int score;score;printf(Please printf(Please input the input the score(0100)

11、:);score(0100):);scanf(%d,&score scanf(%d,&score););if(scoreif(score=90)=90)printf(An printf(An););else if(scoreelse if(score=80)=80)printf(Bn printf(Bn););else if(score else if(score=70)=70)printf(Cn printf(Cn););else if(score else if(score=60)=60)printf(Dn printf(Dn););else else printf(En printf(E

12、n););getch getch();();例:在一对例:在一对/*/之间补充程序,使对其输入的一个月工资之间补充程序,使对其输入的一个月工资数额,求应交税款。设应交税款的计算公式如下:数额,求应交税款。设应交税款的计算公式如下:如:如:输入输入:4500 :4500 输出:输出:f(4500.00)=30.00f(4500.00)=30.00输入输入:6500 :6500 输出:输出:f(6500.00)=195.00f(6500.00)=195.00输入输入:9500 :9500 输出:输出:f(9500.00)=645.00f(9500.00)=645.00#includestdio.h

13、#include void main()void main()float x;double float x;double y;y;printf(Please printf(Please input a number:n);input a number:n);scanf(%f,&x scanf(%f,&x););/*/*/printf(f(%.2f)=%.2fn,x,y);printf(f(%.2f)=%.2fn,x,y);getch getch();();if(x=3500)y=0;else if(x=5000)y=(x-3500)*0.03;else if(x=8000)y=(x-3500)

14、*0.1-105;else if(x=12500)y=(x-3500)*0.2-555;.125008000,555%203500;80005000,105%103500;50003500,%33500;3500,0 xxxxxxxxfif语句的嵌套ifif语句的嵌套:一个语句的嵌套:一个ifif语句的语句的ifif分支、分支、else ifelse if分支分支或或elseelse分支中又完整地包含了另一个分支中又完整地包含了另一个ifif语句语句。ifif(表达式(表达式1 1)ifif(表达式(表达式2 2)语句语句1 1 else else 语句语句2 2elseelse if if(

15、表达式(表达式3 3)语句语句3 3 else else 语句语句4 4书写代码时书写代码时,写出层次,写出层次关系关系例:有如下一函数,请判断以下哪个程序是正确的?例:有如下一函数,请判断以下哪个程序是正确的?0)(x 10)(x 0 0)(x 1-)(xf程序程序1 1:main()main()int x,y int x,y;scanf(%d,&x scanf(%d,&x););if(x0)y=-1;if(x=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=0;else y=-1;else y=-1;printf(x=%d,y=%d,x,y);pr

16、intf(x=%d,y=%d,x,y);例:有如下一函数,请判断以下哪个程序是正确的?例:有如下一函数,请判断以下哪个程序是正确的?0)(x 10)(x 0 0)(x 1-)(xf程序程序3 3:main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=-1;y=-1;if(x!=0)if(x!=0)if(x0)y=1;if(x0)y=1;else y=0;else y=0;printf(x=%d,y=%d,x,y);printf(x=%d,y=%d,x,y);y=-1;if(x!=0)if(x0)y=1;else y=0;例:有如下一函数

17、,请判断以下哪个程序是正确的?例:有如下一函数,请判断以下哪个程序是正确的?0)(x 10)(x 0 0)(x 1-)(xf程序程序4 4:main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=0;y=0;if(x=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=-1;else y=-1;printf(x=%d,y=%d,x,y);printf(x=%d,y=%d,x,y);y=0;if(x=0)if(x0)y=1;else y=-1;例:以下程序的输出结果是?例:以下程序的输出结果是?#includestdio

18、.h#include main()main()int a,b,c,x int a,b,c,x;a=b=c=0;x=35;a=b=c=0;x=35;if(!a)x if(!a)x-;-;else if(b);if(c)x else if(b);if(c)x=3;=3;else x+=4;else x+=4;printf(x=%dn,x printf(x=%dn,x););x=38x=38 int a=1;switch(a)case 1:a+=1;break;case 2:a+=2;break;default:a+=0;printf(%dn,a);选择结构二、二、switch语句语句switch

19、switch 语句的一般形式语句的一般形式:switch(switch(表达式表达式)case case 常量表达式常量表达式1 1:语句组语句组1 1;break;break;case case 常量表达式常量表达式2:2:语句组语句组2 2;break;break;case case 常量表达式常量表达式n n:语句组语句组n n;break;break;default:default:语句组语句组n+1;n+1;多分支选择结构:根据一个表达式的不同取值来实现对分支多分支选择结构:根据一个表达式的不同取值来实现对分支的选择。的选择。语句组语句组1 1breakbreak计算表达式计算表达式

20、=常量常量1 1有有语句组语句组2 2=常量常量2 2无无breakbreak无无有有语句组语句组n n=常量常量n nbreakbreak有有无无语句组语句组n+1n+1=其它其它#includestdio.h#include main()main()char grade;char grade;grade=getchar grade=getchar();();grade=(grade=a&grade grade=(grade=a&grade=z)?grade-32:grade;=z)?grade-32:grade;switch(grade switch(grade)case A:printf

21、(90100n);break;case A:printf(90100n);break;case B:printf(8089n);break;case B:printf(8089n);break;case C:printf(7079n);break;case C:printf(7079n);break;case D:printf(6069n);break;case D:printf(6069n);break;case E:printf case E:printf(60n);break;(60n);break;default:printf(Errorn default:printf(Errorn)

22、;);每个分支的常量每个分支的常量的值必须互不相的值必须互不相同同各个分支允许内各个分支允许内嵌多个语句,而嵌多个语句,而且可以不用且可以不用括括起来起来最后一个分支可最后一个分支可以不加以不加break语语句句#includestdio.h#include main()main()char grade;char grade;grade=getchar grade=getchar();();switch(grade switch(grade)default:printf(Errorn);break default:printf(Errorn);break;case A:case case A:

23、case a:printf(90100n);break;a:printf(90100n);break;case B:case case B:case b:printf(8089n);break;b:printf(8089n);break;case C:case case C:case c:printf(7079n);break;c:printf(7079n);break;case D:case case D:case d:printf(6069n);break;d:printf(6069n);break;case E:case e:printf case E:case e:printf(60n

24、);break;(60n);break;无论无论default分支分支是否最后出现,是否最后出现,它都是作为最后它都是作为最后一个分支来考虑一个分支来考虑允许多个允许多个case共用一组执行语共用一组执行语句句例:以下程序的输出结果是?例:以下程序的输出结果是?main()main()int int x=1,y=0,a=0,b=0;x=1,y=0,a=0,b=0;switch(x switch(x)case 1:case 1:switch(y switch(y)case 0:a+;break;case 0:a+;break;case 1:b+;break;case 1:b+;break;cas

25、e 2:a+;b+;break;case 2:a+;b+;break;case 3:a+;b+;case 3:a+;b+;printf(a=%d,b=%dn,a,b printf(a=%d,b=%dn,a,b););a=2,b=1break;break;a=1,b=0例例:运行以下程序段,结果为:(运行以下程序段,结果为:()intint t=3;t=3;switch(tswitch(t)case 1:printf(1);break;case 1:printf(1);break;case 2:printf(2);break;case 2:printf(2);break;case 3:print

26、f(3);break;case 3:printf(3);break;default:printf(Error default:printf(Error!);!);A A)1 B1 B)2 C2 C)3 D3 D)Error!Error!D Dintint t=49 t=49;A A循环结构循环结构的特点是在循环结构的特点是在给定的条件给定的条件成立时,反复执行成立时,反复执行某程序段某程序段,直到条件不成立,直到条件不成立。循环条件:给定的条件循环条件:给定的条件循环体:反复执行的程序段循环体:反复执行的程序段C语言的循环控制语句有三种:语言的循环控制语句有三种:while语句语句do-whi

27、le语句语句for语句语句循环结构(while)while(循环条件表达式循环条件表达式)循环体循环体真真(非非0)0)假假(0(0)表达式表达式循环体循环体main()main()int n=1,sum=0;int n=1,sum=0;while(n=100)while(n=100)sum+=n;sum+=n;+n;+n;printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);去掉花括号去掉花括号?while(n=100);?循环结构(do-while)do循环体循环体while(循环条件表达式循环条件表达式);真真(非非0)0)假假(0(

28、0)表达式表达式循环体循环体main()main()int n=1,sum=0;int n=1,sum=0;do do sum+=n+;sum+=n+;while(n=100)while(n=100);printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);勿忘分号勿忘分号“;”While与do-while的比较main()main()intint sum=0,n;sum=0,n;scanf(%d,&nscanf(%d,&n););while(nwhile(n=10)=10)sum+=n;sum+=n;n+;n+;printf(%dn,sum

29、printf(%dn,sum););main()main()int sum=0,n;int sum=0,n;scanf(%d,&n);scanf(%d,&n);do do sum+=n;sum+=n;n+;n+;while(n=10);while(n=10);printf(%dn,sum);printf(%dn,sum);输入输入1时,结果相时,结果相同,都是输出同,都是输出55输入输入11时,结果时,结果就不相同了,分就不相同了,分别输出别输出0和和11循环结构(for)for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体main()main()int n,sum=0;int

30、 n,sum=0;for(n=1;n=100;n+)for(n=1;n=100;n+)sum+=n;sum+=n;printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);真真(非非0)0)假假(0(0)表达式表达式2 2循环体循环体计算表达式计算表达式1 1计算表达式计算表达式3 3表达式表达式1只执行一只执行一次,常用于对循次,常用于对循环变量赋初值环变量赋初值表达式表达式2:循环条:循环条件表达式件表达式表达式表达式3常用于循常用于循环变量的更新,环变量的更新,每次执行完循环每次执行完循环体后执行一次体后执行一次循环结构(for结构的变形

31、)main()main()int n,sum;int n,sum;for(n=1,sum=0;n=100;sum+=n,n+);for(n=1,sum=0;n=100;sum+=n,n+);printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);for(,;表达式表达式2;,)循环体循环体/*表达式表达式1、3用逗号表达式用逗号表达式*/for(;表达式表达式2;表达式表达式3)循环体循环体 /*表达式表达式1缺省缺省*/main()main()int n=1,sum=0;int n=1,sum=0;for(;n=100;n+)for(;n=

32、100;n+)sum+=n;sum+=n;printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);for(;表达式表达式2;)循环体循环体 /*表达式表达式1、3缺省缺省*/main()main()int n=1,sum=0;int n=1,sum=0;for(;n=100;)for(;n100)break;sum+=n+;if(n100)break;printf(n=%d,sum=%dn,n,sum);printf(n=%d,sum=%dn,n,sum);其它程序流程控制(break)breakbreak语句语句:在在switchswitc

33、h中退出中退出switchswitch结构;在结构;在循环循环中退出循环。中退出循环。例:将数字例:将数字512表示成两个数的和,这两个数分别为表示成两个数的和,这两个数分别为15和和13的倍数。的倍数。main()main()int int i;i;for(i for(i=1;i+)=1;i+)if(!(512-i if(!(512-i*15)%13)break;15)%13)break;printf(%d+%d printf(%d+%d=512n,i=512n,i*15,512-i15,512-i*15);15);int i;int i;for(i=1;(512-ifor(i=1;(512

34、-i*15)%13;i+);15)%13;i+);printf(%d+%d=512n,i printf(%d+%d=512n,i*15,512-i15,512-i*15);15);其它程序流程控制(continue)continuecontinue语句语句:结束本次循环,跳过循环体后面的语句,开始结束本次循环,跳过循环体后面的语句,开始下一轮循环(循环的短路)。下一轮循环(循环的短路)。例:输出例:输出100200之间所有能被之间所有能被7或或9整除的整数。整除的整数。main()main()int i,n int i,n=0;=0;for(i for(i=100;i=200;i+)=100;

35、i=200;i+)if(i%7!=0)&(i%9!=0)continue;if(i%7!=0)&(i%9!=0)continue;printf(%5d,i);printf(%5d,i);n+;if(n%5=0)printf(n);n+;if(n%5=0)printf(n);for(i for(i=100;i=200;i+)=100;i=200;i+)if(i%7=0)|(i%9=0)if(i%7=0)|(i%9=0)printf(%5d,i);printf(%5d,i);n+;n+;if(n%5=0)printf(n);if(n%5=0)printf(n);break语句与continue语句

36、的比较void main()void main()intint sum=0,item=0;sum=0,item=0;while(itemwhile(item5)=6)break;=6)break;printf(%dn,sumprintf(%dn,sum););输出输出6break结束整个循环结束整个循环void main()void main()intint sum=0,item=0;sum=0,item=0;while(itemwhile(item5)5)item+;item+;if(itemif(item=2)continue;=2)continue;sum+=item;sum+=item

37、;printf(%dn,sumprintf(%dn,sum););输出输出13continue结束本次结束本次循环循环例:程序的输出结果是?例:程序的输出结果是?void main()void main()int i,a int i,a=0,b=0,c=0,d=0;=0,b=0,c=0,d=0;for(i for(i=1;i=4;i+)=1;i=4;i+)switch(i switch(i)case 1:a=1;continue;case 1:a=1;continue;case 2:b=2;case 2:b=2;case 3:c=3;break;case 3:c=3;break;case 4:

38、d=4;case 4:d=4;printf(%d%d%d%dn,a,b,c,d printf(%d%d%d%dn,a,b,c,d););123012301230123012341234循环的嵌套循环嵌套:一个循环体中又包含循环结构。循环嵌套:一个循环体中又包含循环结构。最常见的循环嵌套为最常见的循环嵌套为for结构嵌套结构嵌套main()main()int i,j int i,j;for(i=0;i2;i+)/for(i=0;i2;i+)/*外循环外循环*/for(j for(j=0;j2;j+)/=0;j2;j+)/*内循环内循环*/printf(i=%d,j=%dn,i,j printf(

39、i=%d,j=%dn,i,j););输出结果:输出结果:i=0,j=0i=0,j=0i=0,j=1i=0,j=1i=1,j=0i=1,j=0i=1,j=1i=1,j=1例:打印算术口诀表例:打印算术口诀表main()main()int i,j int i,j;for(i for(i=1;i=9;i+)=1;i=9;i+)for(j=1;j=i;j for(j=1;j=i;j+)+)printf(%d printf(%d*%d=%-3d,i,j,i%d=%-3d,i,j,i*j);j);printf(n printf(n););1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94

40、*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=25例:以下程序是利用例:以下程序是利用穷举法穷举法打印出所有的打印出所有的“水仙花数水仙花数”。所谓。所谓“水仙花数水仙花数”是指一个三位数,其各位数字的立方和等于该数是指一个三位数,其各位数字的立方和等于该数本身。例如本身。例如153153是一个水仙花数,因为是一个水仙花数,因为153=1153=13 3+5+53 3+3+33 3.main()main()int int i,j,k,m1,m2;i,j,k,m1,m2;for(i for(i=1;i=9;i+)=1;i=9;i+)

41、for(j for(j=0;j=9;j+)=0;j=9;j+)for(k for(k=0;k=9;k+)=0;k=9;k+)m1=i m1=i*100+j100+j*10+k;10+k;m2=i m2=i*i i*i+ji+j*j j*j+kj+k*k k*k;k;if(m1=m2)printf(%4d,m1);if(m1=m2)printf(%4d,m1);例:求解百马百担问题例:求解百马百担问题:有有100100匹马,驮匹马,驮100100担货,大马驮担货,大马驮3 3担担,中马驮,中马驮2 2担,两匹小马驮担,两匹小马驮1 1担,问大、中、小马数可分别为多担,问大、中、小马数可分别为多少

42、?有多少种解决方案?少?有多少种解决方案?void main()void main()int x,y,z,n int x,y,z,n=0;=0;for(x for(x=0;x=100;x+)=0;x=100;x+)for(y for(y=0;y=100;y+)=0;y=100;y+)for(z for(z=0;z=100;z+)=0;z=100;z+)if(x+y+z if(x+y+z=100&3=100&3*x+2x+2*y+z/2.0=100)y+z/2.0=100)n+;n+;printf(%d:large:%d,middle:%d,small:%dn,n,x,y,zprintf(%d:

43、large:%d,middle:%d,small:%dn,n,x,y,z););printf(nThere are%d solutions.n,n printf(nThere are%d solutions.n,n););getch getch();();匹匹,小马匹,中马设大马zyx1002/23100zyxzyx例:程序的功能是求一堆零件的总数(例:程序的功能是求一堆零件的总数(100100到到200200之间)。如果之间)。如果分成分成4 4个零件一组的若干组,则多个零件一组的若干组,则多2 2个零件;若分成个零件;若分成7 7个零件一个零件一组,则多组,则多3 3个零件;若分成个零件;

44、若分成9 9个零件一组,则多个零件一组,则多5 5个零件。个零件。#includestdio.h#include void main()void main()int int i;i;for(i for(i=100;i=200;i+)=100;i=200;i+)if(i%4=2&i%7=3&i%9=5)if(i%4=2&i%7=3&i%9=5)printf(%dn,i printf(%dn,i););getch getch();();例:程序的功能是求满足等式例:程序的功能是求满足等式xyz+yzzxyz+yzz=520=520的的x,y,zx,y,z值(其中值(其中xyzxyz和和yzzyzz

45、分别表示一个三位数)。在一对分别表示一个三位数)。在一对/*/之间改错。之间改错。void main()void main()int x,y,z,i,result int x,y,z,i,result=520;=520;for(x for(x=1;x10;x+)=1;x10;x+)for(y for(y=1;y10;y+)=1;y10;y+)/*/for(z/for(z=1;z10;z+)/=1;z10;z+)/*/i=100 i=100*x+10 x+10*y+z+100y+z+100*y+10y+10*z+zz+z;/*/if(i/if(i=result)/=result)/*/print

46、f(x=%d,y=%d,x=%dn,x,y,z printf(x=%d,y=%d,x=%dn,x,y,z););getch getch();();for(zfor(z=0;z10=0;z10;z+);z+)i=resulti=result例:程序的功能是输出用例:程序的功能是输出用1 1元、元、2 2元和元和5 5元的纸币组成元的纸币组成1010元钱的元钱的所有组合。在一对所有组合。在一对/*/之间补充程序。之间补充程序。void main()void main()int i,j,k int i,j,k;int int num=0;num=0;printf(No.1 yuan 2 yuan 5

47、 yuann printf(No.1 yuan 2 yuan 5 yuann););for(k for(k=0;k=2;k+)=0;k=2;k+)for(j for(j=0;j=5;j+)=0;j=5;j+)for(i for(i=0;/=0;/*/*/;i+)/;i+)if(/if(/*/*/)/)num+;num+;printf(%9d%9d%9d%9dn,num,i,j,k);printf(%9d%9d%9d%9dn,num,i,j,k);i=10i=10k k*5+j5+j*2+i=2+i=1010例:在一对例:在一对/*/之间补充程序,使其完成圆周率的计算。之间补充程序,使其完成圆周

48、率的计算。22221.312116n#includemath.h#include void main()void main()int int i=1,n;double pi=0.0;i=1,n;double pi=0.0;printf(Input printf(Input an integer:);an integer:);scanf(%d,&n scanf(%d,&n););while(i while(i=n)=n)pi+=/pi+=/*/*/;/;i+;i+;pi=sqrt(pi pi=sqrt(pi*6);6);printf(pi=%lfn,pi printf(pi=%lfn,pi);)

49、;1.0/(i1.0/(i*i)i)例:在一对例:在一对/*/之间补充程序,使其完成圆周率的计算。之间补充程序,使其完成圆周率的计算。#includemath.h#include void main()void main()long int long int s=1,n=1;double t=1.0,pi=0;s=1,n=1;double t=1.0,pi=0;do do pi+=t;pi+=t;s=-s;s=-s;n+=2;n+=2;t=/t=/*/*/;/;while(fabs(t while(fabs(t)1e-6);)1e-6);pi pi*=4;=4;printf(pi printf

50、(pi=%10.6fn,pi);=%10.6fn,pi);1.01.0*s/ns/n6-10.71513114直到最后一项的值小于例:在一对例:在一对/*/之间补充程序,使其完成以下多项式的计算。之间补充程序,使其完成以下多项式的计算。main()main()float sum,term,x float sum,term,x;int n,k,sign int n,k,sign;printf(Input x,n:n printf(Input x,n:n););scanf(%f,%d,&x,&n scanf(%f,%d,&x,&n););sum=x;term=x;sign sum=x;term=x

51、;sign=1;=1;for(k=2;k=n;k for(k=2;k=n;k+)+)term term*=/=/*/*/;/;sign=-sign;sign=-sign;sum+=sign sum+=sign*term;term;printf(sum=%fn,sum printf(sum=%fn,sum););x x*x/(2x/(2*k-2)/(2k-2)/(2*k-1)k-1)!12()1(!7!5!3!1),(121753nxxxxxnxfnn例:在一对例:在一对/*/之间补充程序,使其完成之间补充程序,使其完成n!n!的计算。的计算。main()main()int i,n;int i,

52、n;long s=1;long s=1;printf(Input n:);printf(Input n:);scanf(%d,&n);scanf(%d,&n);for(i=1;i=n;i+)for(i=1;i=n;i+)/*/*/;/;printf(%d!=%ldn,n,s);printf(%d!=%ldn,n,s);s s*=i=i递推公式初值 )2,3(i iS 1)(i 11-iiS例:编程求例:编程求n!=1!+2!+3!n!=1!+2!+3!+n!+n!的值。的值。main()main()int i,n int i,n;long s,t long s,t;printf(Input p

53、rintf(Input n:);n:);scanf(%d,&n scanf(%d,&n););for(i=1,t=1,s=0;i=n;i for(i=1,t=1,s=0;i=n;i+)+)/*/*/;/;s+=t;s+=t;printf(s=%ldn,s printf(s=%ldn,s););递推公式初值 )2,3(i !iS 1)(i 11-iiSt t*=i=i例:程序的功能是求例:程序的功能是求1+12+123+1234+123451+12+123+1234+12345的值。在一对的值。在一对/*/之间补充程序。之间补充程序。void main()void main()int int i

54、;i;int int t=0,s=0;t=0,s=0;for(i for(i=1;i=5;i+)=1;i=5;i+)t=/t=/*/*/;/;s+=t;s+=t;printf(1+12+123+1234+12345=%dn,s printf(1+12+123+1234+12345=%dn,s););t t*10+i10+i例:编程输出例:编程输出FibonacciFibonacci(斐波拉契)数列的前(斐波拉契)数列的前2020项。项。main()main()int int i,x1=1,x2=1;i,x1=1,x2=1;for(i for(i=1;i=10;i+)=1;i=10;i+)pri

55、ntf(%10d%10d,x1,x2);printf(%10d%10d,x1,x2);if(i%2=0)printf(n);if(i%2=0)printf(n);x1=x1+x2;x1=x1+x2;x2=/x2=/*/*/;/;x2+x1x2+x12n 2)-fib(n1)-fib(n1,2n 1)(nfib例:输入一个大于或等于例:输入一个大于或等于3 3的整数,判断这个数是否为素数。的整数,判断这个数是否为素数。素数定义:只能被素数定义:只能被1 1和本身整除的数和本身整除的数#includemath.h#include main()main()int i,m int i,m;printf

56、(Input printf(Input an integer:);an integer:);scanf(%d,&m scanf(%d,&m););for(i=2;im;i for(i=2;im;i+)+)if(m%i if(m%i=0)break;=0)break;if(i if(i=m)=m)printf(%d is a prime numbern,m printf(%d is a prime numbern,m););else else printf(%d is not a prime numbern,m printf(%d is not a prime numbern,m););例:打印

57、例:打印3 3 234234间所有的素数,每间所有的素数,每1010个换一行。个换一行。main()main()int i,j,k int i,j,k=0;=0;for(i for(i=3;i=234;i+)=3;i=234;i+)for(j for(j=2;j=i-1;j+)=2;j=i-1;j+)if(i%j if(i%j=0)break;=0)break;if(i if(i=j)=j)printf(%6d%c,i,+k%10=0?n:);printf(%6d%c,i,+k%10=0?n:);printf(n printf(n););外循环:控制待判断数的区间变化外循环:控制待判断数的区间

58、变化 for(ifor(i=3;i=234;i+)=3;i=234;i+)内循环:作为外循环的一个核心语句内循环:作为外循环的一个核心语句,判断当前,判断当前i i是否素数是否素数例:在屏幕上输出如下图形。例:在屏幕上输出如下图形。main()main()int i,j,k int i,j,k;for(ifor(i=1;i=8;i+)=1;i=8;i+)for(j for(j=1;j=8-i;j+)=1;j=8-i;j+)printf printf();();for(k for(k=1;k=2=1;k=1;i-)=8;i=1;i-)for(j for(j=1;j=8-i;j+)=1;j=8-i

59、;j+)printf printf();();for(k for(k=1;k=2=1;k=2*i-1;k+)i-1;k+)printf printf(*););printf(n printf(n););*例:在屏幕上输出如下图形。例:在屏幕上输出如下图形。main()main()int i,j,k int i,j,k;for(ifor(i=1;i=8;i+)=1;i=8;i+)for(j for(j=1;j=8-i;j+)=1;j=8-i;j+)printf printf();();for(k for(k=1;k=2=1;k=1;i-)=7;i=1;i-)for(j for(j=1;j=8-i;j+)=1;j=8-i;j+)printf printf();();for(k for(k=1;k=2=1;k=2*i-1;k+)i-1;k+)printf printf(*););printf(n printf(n););作业P121P1214.124.12、4.194.19

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