《C语言课后习题答案 .doc》由会员分享,可在线阅读,更多相关《C语言课后习题答案 .doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章练习题:1.求21000中的守形数(若某数的平方,其低位与该数本身相同,则称该数为守形数。例如25,25的平方=625,625的低位25与原数相同,则25称为守形数。#include void main()int i=2,n,c;c=0;printf(守形数有:);while(i1001)n=i*i;if(n%10=i)printf(%5d,i);c+;else if(n%100=i)printf(%5d,i);c+;else if(n%1000=i)printf(%5d,i);else(n%1000!=i&n%100!=i&n%10!=i); i+;3.求Sn=a+aa+aaa+aaa
2、之值,其中a代表19中的一个数字。例如:a代表2,则求2+22+222+2222+22222(此时n=5),a和n由#includevoid main()int a,b,n,i=1,sum=0;scanf(%d%d,&a,&n);sum+=a;b=a;while(i!=n)b=b*10+a;sum+=b;i+;printf(%d,sum);键盘输入。2.输入两个正数m和n,求其最大公约数和最小公倍数。#includevoid main()int m,n,r,s,num1,num2;printf(两个正整数:);scanf(%d%d,&m,&n);num1=m,num2=n;while(num2
3、!=0)r=num1%num2;num1=num2;num2=r;s=m*n/num1;printf(最大公因子是:%d,num1);printf(最小公倍数是:%d,s);4.从键盘输入一个正整数n,计算该数的各位数之和并输出。例如,输入数是52446,则计算:5+2+4+6=17并输出。#includevoid main()int a,n,sum=0;scanf(%d,&a);while(a!=0)n=a%10;sum+=n;a=a/10;printf(各位数之和为:%d,sum);5.猴子吃桃子问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子
4、吃掉一半,又多吃一个。以后每天早上都吃昨天的一半零一个。到第十天早上一看,只剩下一个桃子了。求第一天共摘了多少个桃子?#includevoid main() int i=0, a=1,sum=0;while(i=10)sum+=a;a=a*2+1;i+;printf(%d,sum);第五章课本练习1. 编一个程序,求费那契(Fibonacci)序列:1,1,2,3,5,8,。请输出前二十项。序列满足关系式:F1=1,F2=1,Fn=Fn-1-Fn-2(其中n为大于等于3的整数)。#includevoid main()int num1=1,num2=1,i=1;printf(%3d%3d,num
5、1,num2);while(i=20)num1=num1+num2;num2=num1+num2;i+;printf(%3d%3d,num1,num2);2祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁。问要过多少年,三个孙子年龄之和同祖父的年龄相等?请编写程序实现。#includevoid main()int a=70,b=20,c=15,d=5,i=0;printf(祖父70,长孙20,次孙15,幼孙5);while(a!=b+c+d)a+;b+;c+;d+;i+;printf(要过%d年三个孙子的年龄相加同祖父的年龄相等,i);2, 求出10个“韩信点兵数”,该数除以3余2,除以5余3
6、,除以7余4(例如53,158,263.)。#includevoid main()int n=1,i=1;printf(10个韩信点兵数有:);while(i=10)if(n%3=2&n%5=3&n%7=4)printf(%5d,n);i+;elsen+;n+;4,读入10个数,计算它们的和、积、平方和及和的平方。#include #include int main() int i=0; int nums10; int sum = 0; int product = 1; int sum_of_square = 0; for( i=0; i10; +i ) printf( 请输入数据: ); s
7、canf( %d, &numsi ); sum += numsi; product *= numsi; sum_of_square += (int)pow(double)numsi, 2); printf( n和: %dn积: %dn平方和: %dn和的平方: %dn, sum, product, sum_of_square, (int)pow(double)sum,2) );5.计算并输出1!,2!3!,35!,提示:阶乘结果定义为实型,以便表示较大的数。每个阶乘乘一个数就得到后一个阶乘值。要求用一重循环编程。#includevoid main()int i;float j;for(i=1,
8、j=1;i=35;i+)j*=i;printf(%d!=%fn,i,j);6.计算并输出2n,2-n.已知n=0,1,2,3,15!提示:结果定义为浮点型。不要用指数函数与对数函数运算,用乘2递推计算。#includevoid main()int i=0;float sum1=1,sum2=1;while(i=15)if(i=0)sum1=sum2=1;elsesum1*=2;sum2*=0.5;printf(2(%d)=%fn,2(-%d)=%fn,i,sum1,i,sum2);i+;7.利用下列公式计算并输出的值。/4=1-1/3+1/5-1/7+1/(4n-3)-1/(4n-1) (n=
9、1000)#includevoid main()int n=1;float sum=0;while(n=10000)sum+=1/(4*n-3)-1/(4*n-1);n+; sum*=4;printf(=%f,sum);8.一个球从一百米的高度落下,每次落地后反跳回原来的一半,再落下,以此类推,求它在第10次落地时,共经过多少米?第10次反跳多高?#includevoid main()int i=0,sum=0;float h=100;while(i10)sum+=h;h=h/2;sum+=h;i+;printf(共经过%d米n,sum);printf(第十次反弹高度为:%f,h);9.鸡与兔
10、同笼,其中共有25个头,有80只脚,问笼中鸡和兔各多少只?#includevoid main() int i,j;for(i=1;i25;i+)j=25-i;if(2*i+4*j=80)break;printf(笼中有鸡%d只,有兔%d只,i,j);10.输出1999中能被3整除,且至少有一位数字是5的所有整数。#includevoid main(void)int i;for(i=1;i1000;i+)if(i%3=0)if(i%10=5|i%100=5|1%1000=5)printf(%dn,i);11. 1.求21000中的守形数(若某数的平方,其低位与该数本身相同,则称该数为守形数。例如
11、25,25的平方=625,625的低位25与原数相同,则25称为守形数。#include void main()int i=2,n,c;c=0;printf(守形数有:);while(i1001)n=i*i;if(n%10=i)printf(%5d,i);c+;else if(n%100=i)printf(%5d,i);c+;else if(n%1000=i)printf(%5d,i);else(n%1000!=i&n%100!=i&n%10!=i); i+;12.输入20个数,求出它们的最大值、最小值及平均值。#includevoid main()int a20;int i,max,min;
12、float ave,sum=0;printf(请输入20个数);for(i=0;i20;i+)scanf(%d,&ai);min=a0;max=a0;for(i=0;iai)min=ai;sum=sum+ai;if(minai)max=ai;ave=sum/20.0;printf(最大值是%d,最小值是%d,平均值是%f,max,min,ave);13.输入两个正数m和n,求其最小公倍数。#includevoid main()int m,n,r,s,num1,num2;printf(两个正整数:);scanf(%d%d,&m,&n);num1=m,num2=n;while(num2!=0)r=num1%num2;num1=num2;num2=r;s=m*n/num1;printf(最大公因子是:%d,num1);printf(最小公倍数是:%d,s);14.输入20个数,统计其中正、负和零的个数。#includevoid main()int a20;int i;float z=0,f=0,l=0;printf(请输入20个数);for(i=0;i20;i+)scanf(%d,&ai);for(i=0;i0)z+;if(ai=0)l+;if(ai0)f+;printf(正数有%f个,负数有%f个,0有%f个,z,f,l);