C语言编程第六章作业答案.doc_第1页
C语言编程第六章作业答案.doc_第2页
C语言编程第六章作业答案.doc_第3页
C语言编程第六章作业答案.doc_第4页
C语言编程第六章作业答案.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1. 输入两个正整数m和n,求其最大公约数和最小公倍数。辗除法辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。它首次出现于欧几里德的几何原本(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的九章算术。它并不需要把二数作质因子分解。证明:设两数为a、b(ab),求它们最大公约数(a、b)的步骤如下:用a除以b,余数为r 1。若r1=0,则(a,b)=b;若r10,则再用b除以r1,得r2 .若r2=0,则(a,b)=r1,若r20,则继续用r1除以r2,如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。 例如,123456 和 7890 的最大公因子是 6, 这可由下列步骤看出: a b a mod b 123456 7890 5106 7890 5106 2784 5106 2784 2322 2784 2322 462 2322 462 12 462 12 6 12 6 0#include#includemain()int a,b,num1,num2,temp;/*temp主要用来转换大小*/printf(please input two numbers: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(公约数:%dn,a);printf(公倍数:%dn,num1*num2/a); /*由公式知*/getch();评析:关键是判断两数的大小,先排好位置,再大除小,一直除尽即可。用了if判大小,while判除尽语句2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#include#includemain()char c;int letter=0,space=0,digit=0,others=0;printf(please input some charactersn);while(c=getchar()!=n) /*终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于n,如果不等于,就执行循环体*/if(c=a&c=A&c=0&c=9)digit+;/*数字累加*/elseothers+;/*其他字符累加*/printf(all in all: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个数相加),几个数相加有键盘控制。#include#includemain()int a,n,count=1;long int sn=0,tn=0; /*长整型变量*/printf(please input a and nn,a,n); /*打印输出please input a and n */scanf(%d,%d,&a,&n); /*定义输入的a和n都是整型*/ while(count=n) /*while条件语句在count=n 的情况下执行*/ tn=tn+a; /*一轮中初始值*/ sn=sn+tn; /*除最高位的数就是sn*/ a=a*10; /*每次以的最高位*10再带入上循环。*/ +count; /*一轮后自加1*/printf(%ldn,sn);4. 输出9*9口诀。(要求下三角阵)main()int i,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=%-2dt,j,i,i*j); /*输出形式*/ printf(n); /*每次循环后换行*/5. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。#includestdio.hmain() int a,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=123.编程找出1000以内的所有完数。#includevoid main() int m,i,j,s; for(m=6;m1000;m+) /*m在6到1000内的数,每个循环一次循环体,进行判断*/ s=1; for(i=2;im;i+) /*寻找m的所有因子*/ if(m%i=0) /*判断i是否为m的因子*/ s=s+i;/*每次循环得出的因子想加*/ if(m-s=0) /*判断所有的因子加起来是否为m*/ printf(%5d its factors are 1,m); /*输出的格式为m its factors are */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()int i;float a=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(结果是%fn,s);评析:注意是浮点类型,交换变量8. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?#includestdio.hmain() int i; float h=100.0,s=0; for(i=1;i=10;i+) /*共10次执行循环体*/ h=0.5*h; s+=3*h; /*每一次一次落下反弹所经路程为3倍的弹上来的高度,路程用累加*/ s=s-h; /*最后一次并没有落地,因此减去最后反弹上来的高度*/ printf(第十次落地路程是%f,第十次反弹高度是%fn,s,h);评析:发现3倍的关系,注意最后一次不算反弹上来的路程。用for语句进行10次循环9. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。#include#includemain()int day,x1,x2;day=9;x2=1; while(day0) /*在天数大于0的情况下不断循环*/ x1=(x2+1)*2; /*x1作为前一天桃子数,后一天加1个再乘以2即可*/ x2=x1;/*转换变量*/ day-; /*使其循环9次*/ printf(the total is %dn,x1);评析:主要是用while语句,以天数大于0为分界,不断累加与循环。10. 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 #include#includemain()char i,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(order is a-%ctb-%ctc-%cn,i,j,k); 评析:首先是要判断出I,j,k三者都不一样。然后套用题目条件,I,j,k相当于a,b,c不过这题还是没有弄的很明白。希望老师帮忙讲解一下11. 题目:打印出如下图案(菱形)#includestdio.hmain() int i,j,k; for(i=0;i=3;i+) /*执行三次i循环,*/ for(j=0;j=2-i;j+)/*当i=0是打印

温馨提示

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

评论

0/150

提交评论