C语言复习第四章ppt课件_第1页
C语言复习第四章ppt课件_第2页
C语言复习第四章ppt课件_第3页
C语言复习第四章ppt课件_第4页
C语言复习第四章ppt课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1C语言程序设计语言程序设计编辑课件C C语言程序设计语言程序设计第第4章循环结构程序设计章循环结构程序设计1 - 2C语言程序设计语言程序设计编辑课件【例题例题】输入一个正整数输入一个正整数n,把它分解成,把它分解成1及其质因子及其质因子相乘的形式。相乘的形式。如:如:19=119 36=12233 1024=12222222222分析:本题即找出所有能整除分析:本题即找出所有能整除n的数,可以尝试分别用的数,可以尝试分别用2到到n的整的整数去除数去除n,如某时刻的值为,如某时刻的值为i,能除尽,能除尽n则取出此时的数则取出此时的数i,再把,再把n除以除以i的商作为新的的商作为新的n,但要注

2、意下次尝试的时候还应该用此时的,但要注意下次尝试的时候还应该用此时的i去除去除n(因为如(因为如2是是8的一个因子,同时也是的一个因子,同时也是8/2=4的一个因的一个因子)。如子)。如n不能被不能被i整除则用整除则用i+1去除去除n看能否整除,如此反复直到看能否整除,如此反复直到i的值为的值为n为止。为止。1 - 3C语言程序设计语言程序设计编辑课件程序如下:程序如下:main()long i, n;printf(Input n: );scanf(%ld,&n);printf(%ld=1,n);for(i=2;i=n;i+)/*/ /*/getch();if(n%i=0) print

3、f(*%ld,i);n/=i; i-;1 - 4C语言程序设计语言程序设计编辑课件【例例】古典问题:有一对兔子,从出生后第古典问题:有一对兔子,从出生后第3个月起每个月都生一对个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?(死,问每个月的兔子总对数为多少?(40个月后)个月后)分析:兔子对数的规律为数列分析:兔子对数的规律为数列1,1,2,3,5,8,13,21 ,即,即从第三个数开始其值都为前两个数之和。从第三个数开始其值都为前两个数之和。 main()long m1=1

4、,m2=1;int i;for(i=0;i=b),令),令r为所得余数(为所得余数(0rb) 若若 r = 0,算法结束;,算法结束;b 即为答案。即为答案。 2. 互换:置互换:置 ab,br,并返回第一步。,并返回第一步。1 - 6C语言程序设计语言程序设计编辑课件main()int m=0,n=0,r,t,a,b; scanf(“%d%d”,&m,&n);a=m;b=n;/*/ /*/ /*实现大数在前小数在后实现大数在前小数在后*/*/ /*/ /*实现辗转相除算法实现辗转相除算法*/ if(ab)t=a;a=b;b=t;r=a%b; while(r) a=b; b=r

5、; r=a%b;printf(%d & %d greatest common divisor is %d,m,n,b);printf(%d & %d lowest common multiple is %ld., m,n,(long)m*n/b);getch();1 - 7C语言程序设计语言程序设计编辑课件【例例】从键盘任意输入一个正数从键盘任意输入一个正数n,判断其是不是素数,判断其是不是素数(因子只有(因子只有1及其本身,其值大于及其本身,其值大于1的自然数)。的自然数)。#include main()int n,i,k; clrscr();printf(Input n (

6、n=2): );scanf(%d,&n);/*/ /*/k=sqrt(n); for(i=2;i1) printf(%d is a prime number.,n);elseprintf(%d is not a prime number.,n);getch();1 - 8C语言程序设计语言程序设计编辑课件continue语句语句【例例】分析如下程序,给出程序执行结果。分析如下程序,给出程序执行结果。 main() int i; for(i=0;i10;i+) if(i%2=0) continue ; printf(%d ,i) ; getch(); 1 - 9C语言程序设计语言程序设计

7、编辑课件【例例】随机输入多个字符,直到输入回车结束,统计键入空格随机输入多个字符,直到输入回车结束,统计键入空格字符的次数。字符的次数。 #include main()int count=0;char ch;printf(Input chars:);do/*/ /*/while(/*/ /*/);printf(The number of spaces is %d.n,count);getch();ch=getchar();if (ch!= )continue;count+;ch!=n1 - 10C语言程序设计语言程序设计编辑课件1、以下程序段运行后变量以下程序段运行后变量a的值为(的值为( )

8、。)。 int i=1,a=0; for( ;i3;i+) continue; a+=i; A. 6B. 3C. 0D. 5课堂小测试1 - 11C语言程序设计语言程序设计编辑课件2、以下程序段运行后变量、以下程序段运行后变量n的值为(的值为( )。)。int i=1,n=1;for (;i3;i+) continue;n=n+i; A. 4B. 3C. 2D. 1课堂小测试1 - 12C语言程序设计语言程序设计编辑课件3、以下程序的运行结果是(以下程序的运行结果是( )。)。 void main() int s = 0, i = 0; while(i 8) i+; if(i%2=0) con

9、tinue; s+=i; printf(%dn,s); A. 36B. 7C. 16D. 12课堂小测试1 - 13C语言程序设计语言程序设计编辑课件4、以下程序的运行结果是(、以下程序的运行结果是( )。)。void main( )int sum = 0, item = 0; while(item 5) item+; if(item = 2) continue; sum += item; printf(%dn,sum); A. 10B. 13C. 15D. 1课堂小测试1 - 14C语言程序设计语言程序设计编辑课件4.5循环结构的嵌套循环结构的嵌套一个循环体内又包含另一个完整的循环结构称为一

10、个循环体内又包含另一个完整的循环结构称为循循环的嵌套环的嵌套。内嵌的循环中还可以嵌套循环,这就是。内嵌的循环中还可以嵌套循环,这就是多层循环。多层循环。三种循环三种循环(while(while循环、循环、do-whiledo-while循环和循环和forfor循环循环) )可以互可以互相嵌套。相嵌套。正常情况下:应先执行正常情况下:应先执行内层内层的循环体操作,然后是的循环体操作,然后是外层外层循环。例如:对于双重循环,内层循环被执行循环。例如:对于双重循环,内层循环被执行的次数应为:内层次数的次数应为:内层次数外层次数。外层次数。1 - 15C语言程序设计语言程序设计编辑课件4.5循环结构的

11、嵌套循环结构的嵌套1:for( ; ; )for( ; ; ) 2:for( ; ; )while() 3:for( ; ; )do while()1 - 16C语言程序设计语言程序设计编辑课件4.5循环结构的嵌套循环结构的嵌套4:while()while() 5:while()for( ; ; ) 6:while()do while()1 - 17C语言程序设计语言程序设计编辑课件4.5循环结构的嵌套循环结构的嵌套7:dodo while()while()8:dofor( ; ; ) while()9:dowhile() while()1 - 18C语言程序设计语言程序设计编辑课件4.5循环

12、结构的嵌套循环结构的嵌套求该程序的运行结果求该程序的运行结果s是多少?循环多少次?是多少?循环多少次?main()int i,j,s=0;for(i=1;i=3;i+)for(j=1;j=2;j+) s=s+i+j;printf(“%d”,s);1 - 19C语言程序设计语言程序设计编辑课件【例例】编程实现在屏幕上输出九九乘法口诀。编程实现在屏幕上输出九九乘法口诀。1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18

13、4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 分析:分行与列考虑,可用分析:分行与列考虑,可用i控制行,控制行,j控制列,共控制列,共9行,且每行行,且每行的等式的个数与所在行的序数相同,即第的等式的个数与所在行的序数相同,即第i行就有行就有i列个等式。列个等式。1 - 2

14、0C语言程序设计语言程序设计编辑课件【例例】编程实现在屏幕上输出九九乘法口诀。编程实现在屏幕上输出九九乘法口诀。main()int i,j;for(/*/ /*/)for( /*/ /*/ )printf(%d*%d=%dt,j,i,i*j);printf(n);getch();i=1; i=9;i+j=1;j=i;j+1 - 21C语言程序设计语言程序设计编辑课件【例例】输出输出1000内所有的素数,要求每行输出内所有的素数,要求每行输出15个数个数main()int i,j,k,n=0; for(i=2;i=1000;i+) k=sqrt(i);for(j=2;j=k;j+) if(/*/

15、 /*/)break; if(/*/ /*/) printf(%5d,i); n+; if(/*/ /*/) printf(n);getch();n%15=0j=k+1i%j=01 - 22C语言程序设计语言程序设计编辑课件【例例4.16】打印出如下图案(菱形)打印出如下图案(菱形) main()int i,j; for(i=0;i=3;i+) for(/*/ /*/) printf( ); for(/*/ /*/) printf(*);printf(n); for(i=0;i=2;i+) for(/*/ /*/) printf( ); for(/*/ /*/) printf(*);print

16、f(n);getch(); * * * * * * *j=0;j3-i;j+j=0;j2*i+1;j+j=0;ji+1;j+j=0;j5-2*i;j+1 - 23C语言程序设计语言程序设计编辑课件【例例4.23】求解百马百担问题:有求解百马百担问题:有100匹马,驮匹马,驮100担货,大马担货,大马驮驮3担,中马驮担,中马驮2担,两匹小马驮担,两匹小马驮1担,问大、中、小马数可分别担,问大、中、小马数可分别为多少?有多少种解决方案?为多少?有多少种解决方案?main()int large,middle,small; for(/*/ /*/) for(/*/ /*/) small=2*(100-

17、3*large-2*middle); if( /*/ /*/) printf(large=%-2d middle=%-2d small=%-2dn,large,middle,small);getch(); large=0;large=33;large+middle=0;middle=1;i-) for(j=i;j=3;j +) k += i * j ; printf(%dn, k);A. 19B. 29C. 6D. 25课堂小测试1 - 25C语言程序设计语言程序设计编辑课件以下程序段运行后,循环体中的以下程序段运行后,循环体中的“count+=2;”语句运语句运行的次数为(行的次数为( )。

18、)。 int i,j,count=0; for(i=1;i=4;i+) for(j=1;j=i;j+) count+=2; printf(%d ,count); A. 8次次B. 10次次C. 16次次D. 20次次课堂小测试1 - 26C语言程序设计语言程序设计编辑课件下列程序段运行后下列程序段运行后m的值为(的值为( )。)。int i,j,m=0;for (i=1;i=3;i+) for(j=2;j=4;j+) m=m+i+j;A .45 B.30 C.33 D.27课堂小测试1 - 27C语言程序设计语言程序设计编辑课件4.6goto语句语句gotogoto语句是一种语句是一种跳转语句

19、跳转语句,可以用于程序的任何地方。,可以用于程序的任何地方。gotogoto语句的一般格式为:语句的一般格式为:goto goto 语句标号语句标号; ;其中语句标号就是一个合法的其中语句标号就是一个合法的标识符标识符。能用。能用gotogoto语句的前提是在同语句的前提是在同一个函数中某个语句前一个函数中某个语句前存在标号存在标号,语句标号的作用在于标识出其后,语句标号的作用在于标识出其后语句的位置,语句标号的使用方法是在合法标识符后面加上一个语句的位置,语句标号的使用方法是在合法标识符后面加上一个冒号冒号“:”“:”。如:如: label: label: i=j+2 ; i=j+2 ;中的

20、中的label1label1就是一个语句标号。就是一个语句标号。这时可用这时可用gotogoto语句来跳转到语句来跳转到labellabel处。方法如下:处。方法如下: goto label ;goto label ;此时程序遇到此时程序遇到gotogoto语句之后会无条件的跳到语句之后会无条件的跳到labellabel所标识的语句所标识的语句(i=j+2i=j+2)处开始执行。)处开始执行。1 - 28C语言程序设计语言程序设计编辑课件【例例】用用goto语句实现语句实现1+2+3+100结果的输出结果的输出 main()int i=0,s=0;label:i+;s+=i;if(i100)g

21、oto label;printf(1+2+3+100=%d,s);getch(); 1 - 29C语言程序设计语言程序设计编辑课件【例例】分析如下程序总结分析如下程序总结goto语句的作用。语句的作用。main()int i=0,j;while(1) while(1)while(1)while(1)printf(test);goto label;label:printf(nexit);getch(); 1 - 30C语言程序设计语言程序设计编辑课件【例例4.20】有一分数序列:有一分数序列: 求出这个数列的前求出这个数列的前20项之和。项之和。main()int i;float a=2.0,b

22、=1.0,t,sum=0;for(/*/ /*/)/*/ /*/printf(sum = %f,sum);getch(); sum+=a/b;t=a;a=a+b;b=t;i=0;i20;i+1 - 31C语言程序设计语言程序设计编辑课件【例例4.21】求求e 的值。的值。main()int i,j;double e=1.0,k=1;for(/*/ /*/)/*/ /*/printf(e = %1.10f,e); getch(); k*=i; e+=1.0/k;i=1;i=20;i+1 - 32C语言程序设计语言程序设计编辑课件【例例4.22】输出所有三位数的输出所有三位数的 “水仙花数水仙花数

23、”,所谓,所谓“水仙花数水仙花数”是是指其各个位上的数字立方和等于该数本身。例如:指其各个位上的数字立方和等于该数本身。例如:153是一个是一个“水仙花数水仙花数”,因为,因为153=135333。main()int i,x,y,z;for(i=100;i=999;i+)z=i%10; y=i/10%10; x=i/100; if(x*x*x+y*y*y+z*z*z=i)printf(%d ,i);getch(); 1 - 33C语言程序设计语言程序设计编辑课件(2)求出满足以下条件的最大的求出满足以下条件的最大的n。12+22+32+n2100。(结果:。(结果:n=6)main()int

24、n=0,s=0;while(/*/ /*/)/*/ /*/n-;printf(n=%d,n);getch(); s=100n+;s+=n*n;1 - 34C语言程序设计语言程序设计编辑课件(3)中国古代数学家张丘建提出的中国古代数学家张丘建提出的“百鸡问题百鸡问题”:一只公鸡值五个:一只公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有100个钱,要个钱,要买买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。请写出求解该问题的程序。请写出求解该问题的程序。main()int coc

25、k,hen,chicken;for(/*/ /*/) for(/*/ /*/) chicken =300-9*hen-15*cock; if(/*/ /*/) printf(cock=%d,hen=%d,chicken=%dn, cock,hen,chicken); getch(); cock=0;cock=20;cock+hen=1;hen01 - 35C语言程序设计语言程序设计编辑课件(5)整元换零钱问题。把整元换零钱问题。把1元兑换成元兑换成1分,分,2分,分,5分的硬分的硬币,共有多少种不同换法,请编写求解此问题的程序币,共有多少种不同换法,请编写求解此问题的程序 main() int

26、 one,two,five; for(/*/ /*/) for(/*/ /*/) for(/*/ /*/) if(/*/ /*/) printf(one=%d,two=%d,five=%dn, one,two,five); getch(); one=0;one=100;one+two=0;two=50;two+five=0;five=20;five+one+two*2+five*5=1001 - 36C语言程序设计语言程序设计编辑课件(7)求)求s=a+aa+aaa+aaaa+.+aa.a的值,其中的值,其中a是一个数是一个数字,例如:字,例如:2+22+222+2222+22222(此时此时

27、n=5)。n和和a的值由键的值由键盘输入,请编程实现以上求和。盘输入,请编程实现以上求和。main()int n,a,i;long s=0,k=0;printf(Input a:);scanf(%d,&a);printf(Input n:);scanf(%d,&n);for(i=1;i=n;i+) /*/ /*/ printf(%d+%d%d+%d%d+.=%ld,a,a,a,a,a,s); getch(); k=10*k+a;s+=k;1 - 37C语言程序设计语言程序设计编辑课件(8)编程据如下算求出)编程据如下算求出M,N的值。的值。 M N N M 3 6 2 7 main()int m,n,k;for(/*/ /*/) for(/*/ /*/) if (/*/ /*/) printf(m=%d,n=%dn,m,n);getch();m=1;m=9;m+n=1;n=9;n+(m*10+n) *(n*10+m) = 36271 - 38C语言程序设计语言程序设计编辑课件以下程序的功能是以下程序的功能是输出如下图形:输出如下图形: main()int i,j;clrscr();for(i=1; i=5; i+)f

温馨提示

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

评论

0/150

提交评论