C语言编程第六章作业答案

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

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

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

资源描述

时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。1.输入两个正整数m和n,求其最大公约数和最小公倍数。辗除法——辗转相除法,又名欧几里德算法(Euclideanalgorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法,其可追溯至3000年前。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。证明:设两数为a、b(ab),求它们最大公约数(a、b)的步骤如下:用a除以b,余数为r1。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得r2.若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。例如,和7890的最大公因子是6,这可由下列步骤看出:abamodb78905106789051062784510627842322278423224622322462124621261260#includestdio.h#includeconio.hmain(){inta,b,num1,num2,temp;/*temp主要用来转换大小*/printf(pleaseinputtwonumbers:\n);scanf(%d,%d,num1,&num2);if(num1num2)/*如果num2比num1大,则执行下面循环体,为调整num1要比num2大*/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;/*a比b大*/while(b!=0)/*只要b不等于0,就一直执行下面的循环体,直至整除完为止。*/{temp=a%b;a=b;b=temp;/*以上3句调整了a,b大小,使其整除为止*/}printf(公约数:%d\n,a);printf(公倍数:%d\n,num1*num2/a);/*由公式知*/getch();}评析:关键是判断两数的大小,先排好位置,再大除小,一直除尽即可。用了if判大小,while时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。判除尽语句2.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#includestdio.h#includeconio.hmain(){charc;intletter=0,space=0,digit=0,others=0;printf(pleaseinputsomecharacters\n);while((c=getchar())!='\n')/*终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于’\n’,如果不等于,就执行循环体*/{if(c='a'&&c='z'||c='A'&&c='Z')/*如果满足字符那么就在此条件范围内*/letter++;/*字符累加*/elseif(c=='')space++;/*空格的累加*/elseif(c='0'&&c='9')digit++;/*数字累加*/elseothers++;/*其他字符累加*/}printf(allinall:letter=%d,space=%d,digit=%d,others=%d,letter,space,digit,others);getch();评析:此程序最主要是用while,if复合语句(利用while语句,条件为输入的字符不为'\n'.)3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。#includestdio.h#includeconio.hmain(){inta,n,count=1;longintsn=0,tn=0;/*长整型变量*/printf(pleaseinputaandn\n,a,n);/*打印输出pleaseinputaandn*/scanf(%d,%d,&a,&n);/*定义输入的a和n都是整型*/while(count=n)/*while条件语句在count=n的情况下执行*/{tn=tn+a;/*一轮中初始值*/sn=sn+tn;/*除最高位的数就是sn*/时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。a=a*10;/*每次以的最高位*10再带入上循环。*/++count;/*一轮后自加1*/}printf(%ld\n,sn);}4.输出9*9口诀。(要求下三角阵)main(){inti,j;for(i=1;i=9;i++)/*输入整型变量i使其循环9次*/{for(j=1;j=i;j++)/*i=1时,j循环1次;当i=2时,j循环2次;……i=9时,j循环9次*/printf(%d*%d=%-2d\t,j,i,i*j);/*输出形式*/printf(\n);/*每次循环后换行*/}}5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。#includestdio.hmain(){inta,b,c,i,t;for(i=100;i=999;i++){a=i/100;b=(i-100*a)/10;c=i%10;if((a*a*a+b*b*b+c*c*c)==i)printf(%d,i);}6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。#includestdio.hvoidmain(){intm,i,j,s;for(m=6;m1000;m++)/*m在6到1000内的数,每个循环一次循环体,进行判断*/{s=1;时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。for(i=2;im;i++)/*寻找m的所有因子*/if(m%i==0)/*判断i是否为m的因子*/s=s+i;/*每次循环得出的因子想加*/if(m-s==0)/*判断所有的因子加起来是否为m*/{printf(%5ditsfactorsare1,m);/*输出的格式为mitsfactorsare……*/for(j=2;jm;j++)/*为判断出每一个在小于m范围内的因子*/if(m%j==0)printf(%d,j);printf(\n);}}}7.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。#includestdio.hmain(){inti;floata=1.0,b=2.0,s=0,t;for(i=1;i=20;i++)/*有20项每一项执行一次循环体*/{s+=(b/a);/*累加分数*/t=a+b;a=b;b=t;/*为了分子,分母的满足条件,因为发现规律中有前一项分子分母和为后一项的分子*/}printf(结果是%f\n,s);}评析:注意是浮点类型,交换变量8.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?#includestdio.hmain(){inti;floath=100.0,s=0;for(i=1;i=10;i++)/*共10次执行循环体*/{h=0.5*h;s+=3*h;/*每一次一次落下反弹所经路程为3倍的弹上来的高度,路程用累加*/}时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。s=s-h;/*最后一次并没有落地,因此减去最后反弹上来的高度*/printf(第十次落地路程是%f,第十次反弹高度是%f\n,s,h);}评析:发现3倍的关系,注意最后一次不算反弹上来的路程。用for语句进行10次循环9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。#includestdio.h#includeconio.hmain(){intday,x1,x2;day=9;x2=1;while(day0)/*在天数大于0的情况下不断循环*/{x1=(x2+1)*2;/*x1作为前一天桃子数,后一天加1个再乘以2即可*/x2=x1;/*转换变量*/day--;/*使其循环9次*/}printf(thetotalis%d\n,x1);}评析:主要是用while语句,以天数大于0为分界,不断累加与循环。10.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。#includestdio.h#includeconio.hmain(){chari,j,k;/*输入字符变量*/for(i='x';i='z';i++)/*i属于x和z之间*/for(j='x';j='z';j++)/*j属于x和z之间*/{if(i!=j)/*如果i与j不同,则执行下面的语句*/for(k='x';k='z';k++){if(i!='k'&&j!='k')/*I,j,k都不一样,则执行下面语句*/{if(i!='x'&&k!='x'&&k!='z')/*要满足题目条件*/printf(orderisa--%c\tb--%c\tc--%c\n,i,j,k);时值我国改革开放不久,在青年知识分子中掀起了一股出国热潮,许多同学纷纷出国留洋深造。作为同学中佼佼者的xx同样受到冲击,他也曾心动过、向往过。然而,一本介绍美国农业科学家、诺贝尔和平奖得主——矮秆小麦育种专家布劳格生平事迹的书改变了他的想法。}}}}评析:首先是要判断出I,j,k三者都不一样。然后套用题目条件,I,j,k相当于a,b,c不过这题还是没有弄的很明白。希望老师帮忙讲解一下11.题目:打印出如下图案(菱形)#includestdio.hmain(){inti,j,k;for(i=0;i=3;i++)/*执行三次i循环,*/{for(j=0;j=2-i;j++)/*当i=0是打印出3个空格;=1时,2个空格……*/printf();for(k=0;k=2*i;k++)/*当i=0时,打印1个梅花;=1时,……*/printf(*);printf(\n);/*每一行打印后换行*/}for(i=0;i=2;i++)/*一下打印的是下三角的梅花,与上面同理*/{for(j=0;j=i;j++)printf();for(k=0;k=4-2*i;k++)printf(*);printf

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

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

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

×
保存成功