C语言复习 第四章.3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言程序设计《C语言程序设计》第4章循环结构程序设计1-2C语言程序设计【例题】输入一个正整数n,把它分解成1及其质因子相乘的形式。如:19=1×1936=1×2×2×3×31024=1×2×2×2×2×2×2×2×2×2×2分析:本题即找出所有能整除n的数,可以尝试分别用2到n的整数去除n,如某时刻的值为i,能除尽n则取出此时的数i,再把n除以i的商作为新的n,但要注意下次尝试的时候还应该用此时的i去除n(因为如2是8的一个因子,同时也是8/2=4的一个因子)。如n不能被i整除则用i+1去除n看能否整除,如此反复直到i的值为n为止。1-3C语言程序设计程序如下:main(){longi,n;printf(Inputn:);scanf(%ld,&n);printf(%ld=1,n);for(i=2;i=n;i++)/**//**/getch();}{if(n%i==0){printf(*%ld,i);n/=i;i--;}}1-4C语言程序设计【例】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?(40个月后)分析:兔子对数的规律为数列1,1,2,3,5,8,13,21……,即从第三个数开始其值都为前两个数之和。main(){longm1=1,m2=1;inti;for(i=0;i20;i++){if(i%2==0)/*目的每输出2组数后加一个回车符*/printf(\n);printf(%-12ld%-12ld,m1,m2);/**//**/}getch();}m1=m1+m2;m2=m1+m2;1-5C语言程序设计【例】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。最大公约数算法也称“辗转相除法”,又称欧几里得算法”,其算法如下:1.a÷b(a=b),令r为所得余数(0≤r<b)若r=0,算法结束;b即为答案。2.互换:置a←b,b←r,并返回第一步。1-6C语言程序设计main(){intm=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;r=a%b;}printf(%d&%dgreatestcommondivisoris%d,m,n,b);printf(%d&%dlowestcommonmultipleis%ld.,m,n,(long)m*n/b);getch();1-7C语言程序设计【例】从键盘任意输入一个正数n,判断其是不是素数(因子只有1及其本身,其值大于1的自然数)。#includemath.hmain(){intn,i,k;clrscr();printf(Inputn(n=2):);scanf(%d,&n);/**//**/}k=sqrt(n);for(i=2;i=k;i++){if(n%i==0)break;}if(i==k+1&&n1)printf(%disaprimenumber.,n);elseprintf(%disnotaprimenumber.,n);getch();1-8C语言程序设计continue语句【例】分析如下程序,给出程序执行结果。main(){inti;for(i=0;i10;i++){if(i%2==0)continue;printf(%d,i);}getch();}1-9C语言程序设计【例】随机输入多个字符,直到输入回车结束,统计键入空格字符的次数。#includestdio.hmain(){intcount=0;charch;printf(Inputchars:);do{/**//**/}while(/**//**/);printf(Thenumberofspacesis%d.\n,count);getch();}ch=getchar();if(ch!='')continue;count++;}ch!='\n'1-10C语言程序设计1、以下程序段运行后变量a的值为()。inti=1,a=0;for(;i3;i++){continue;a+=i;}A.6B.3C.0D.5课堂小测试1-11C语言程序设计2、以下程序段运行后变量n的值为()。inti=1,n=1;for(;i3;i++){continue;n=n+i;}A.4B.3C.2D.1课堂小测试1-12C语言程序设计3、以下程序的运行结果是()。voidmain(){ints=0,i=0;while(i8){i++;if(i%2==0)continue;s+=i;}printf(%d\n,s);}A.36B.7C.16D.12课堂小测试1-13C语言程序设计4、以下程序的运行结果是()。voidmain(){intsum=0,item=0;while(item5){item++;if(item==2)continue;sum+=item;}printf(%d\n,sum);}A.10B.13C.15D.1课堂小测试1-14C语言程序设计4.5循环结构的嵌套一个循环体内又包含另一个完整的循环结构称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。三种循环(while循环、do-while循环和for循环)可以互相嵌套。正常情况下:应先执行内层的循环体操作,然后是外层循环。例如:对于双重循环,内层循环被执行的次数应为:内层次数×外层次数。1-15C语言程序设计4.5循环结构的嵌套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:do{……do{……}while()}while()8:do{……for(;;){……}}while()9:do{……while(){……}}while()1-18C语言程序设计4.5循环结构的嵌套求该程序的运行结果s是多少?循环多少次?main(){inti,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=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81分析:分行与列考虑,可用i控制行,j控制列,共9行,且每行的等式的个数与所在行的序数相同,即第i行就有i列个等式。1-20C语言程序设计【例】编程实现在屏幕上输出九九乘法口诀。main(){inti,j;for(/**//**/){for(/**//**/){printf(%d*%d=%d\t,j,i,i*j);}printf(\n);}getch();}i=1;i=9;i++j=1;j=i;j++1-21C语言程序设计【例】输出1000内所有的素数,要求每行输出15个数main(){inti,j,k,n=0;for(i=2;i=1000;i++){k=sqrt(i);for(j=2;j=k;j++)if(/**//**/)break;}if(/**//**/){printf(%5d,i);n++;if(/**//**/)printf(\n);}}getch();}n%15==0j==k+1i%j==01-22C语言程序设计【例4.16】打印出如下图案(菱形)main(){inti,j;for(i=0;i=3;i++){for(/**//**/)printf();for(/**//**/)printf(*);printf(\n);}for(i=0;i=2;i++){for(/**//**/)printf();for(/**//**/)printf(*);printf(\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(){intlarge,middle,small;for(/**//**/)for(/**//**/){small=2*(100-3*large-2*middle);if(/**//**/)printf(large=%-2dmiddle=%-2dsmall=%-2d\n,large,middle,small);}getch();}large=0;large=33;large++middle=0;middle=50;middle++large+middle+small==1001-24C语言程序设计以下程序的运行结果是()。voidmain(){inti,j,k=0;for(i=3;i=1;i--){for(j=i;j=3;j++)k+=i*j;}printf(%d\n,k);}A.19B.29C.6D.25课堂小测试1-25C语言程序设计以下程序段运行后,循环体中的“count+=2;”语句运行的次数为()。inti,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的值为()。inti,j,m=0;for(i=1;i=3;i++)for(j=2;j=4;j++)m=m+i+j;A.45B.30C.33D.27课堂小测试1-27C语言程序设计4.6goto语句goto语句是一种跳转语句,可以用于程序的任何地方。goto语句的一般格式为:goto语句标号;其中语句标号就是一个合法的标识符。能用goto语句的前提是在同一个函数中某个语句前存在标号,语句标号的作用在于标识出其后语句的位置,语句标号的使用方法是在合法标识符后面加上一个冒号“:”。如:label:i=j+2;中的label1就是一个语句标号。这时可用goto语句来跳转到label处。方法如下:gotolabel;此时程序遇到goto语句之后会无条件的跳到label所标识的语句(i=j+2)处开始执行。1-28C语言程序设计【例】用goto语句实现1+2+3+…+100结果的输出main(){inti=0,s=0;label:i++;s+=i;if(i100)gotolabel;printf(1+2+3+…+100=%d,s);getch();}1-29C语言程序设计【例】分析如下程序总结goto语句的作用。main(){inti=0,j;while(1){while(1){while(1){while(1){printf(test);gotolabel;}}}}label:printf(\nexit);getch();}1-30C语言程序设计【例4.20】有一分数序列:求出

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功