C语言课后习题答案.doc

返回 举报
资源描述
第四章 练习题: 1.求2~1000中的守形数(若某数的平方,其低位与该数本身相同,则称该数为守形数。例如25,25的平方=625,625的低位25与原数相同,则25称为守形数。 #include void main() { int i=2,n,c; c=0; printf("守形数有:"); while(i<1001) { 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+…+aa…a之值,其中a代表1~9中的一个数字。例如:a代表2,则求2+22+222+2222+22222(此时n=5),a和n由#include void 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,求其最大公约数和最小公倍数。 #include void 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); } 4.从键盘输入一个正整数n,计算该数的各位数之和并输出。例如,输入数是52446,则计算:5+2+4+6=17并输出。 #include void main() { int a,n,sum=0; scanf("%d",&a); while(a!=0) { n=a%10; sum+=n; a=a/10; } printf("各位数之和为:%d",sum); } 5.猴子吃桃子问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃昨天的一半零一个。到第十天早上一看,只剩下一个桃子了。求第一天共摘了多少个桃子? #include void 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的整数)。 #include void main() { int num1=1,num2=1,i=1; printf("%3d%3d",num1,num2); while(i<=20) { num1=num1+num2; num2=num1+num2; i++; printf("%3d%3d",num1,num2); } } 2.祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁。问要过多少年,三个孙子年龄之和同祖父的年龄相等?请编写程序实现。 #include void 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,除以7余4(例如53,158,263.)。 #include void 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++; } else n++; n++; } } 4,读入10个数,计算它们的和、积、平方和及和的平方。 #include #include int main() { int i=0; int nums[10]; int sum = 0; int product = 1; int sum_of_square = 0; for( i=0; i<10; ++i ) { printf( "请输入数据: " ); scanf( "%d", &nums[i] ); sum += nums[i]; product *= nums[i]; sum_of_square += (int)pow((double)nums[i], 2); } printf( "\n和: %d\n积: %d\n平方和: %d\n和的平方: %d\n", sum, product, sum_of_square, (int)pow((double)sum,2) ); } 5.计算并输出1!,2!3!,35!,提示:阶乘结果定义为实型,以便表示较大的数。每个阶乘乘一个数就得到后一个阶乘值。要求用一重循环编程。 #include void main() { int i; float j; for(i=1,j=1;i<=35;i++) { j*=i; printf("%d!=%f\n",i,j); } } 6.计算并输出2n,2-n.已知n=0,1,2,3,```,15! 提示:结果定义为浮点型。不要用指数函数与对数函数运算,用乘2递推计算。 #include void main() { int i=0; float sum1=1,sum2=1; while(i<=15) { if(i==0) { sum1=sum2=1; } else { sum1*=2; sum2*=0.5; } printf("2(%d)=%f\n,2(-%d)=%f\n",i,sum1,i,sum2); i++; } } 7.利用下列公式计算并输出π的值。π/4=1-1/3+1/5-1/7+```+1/(4n-3)-1/(4n-1) (n=1000) #include void 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次反跳多高? #include void main() { int i=0,sum=0; float h=100; while(i<10) { sum+=h; h=h/2; sum+=h; i++; } printf("共经过%d米\n",sum); printf("第十次反弹高度为:%f",h); } 9.鸡与兔同笼,其中共有25个头,有80只脚,问笼中鸡和兔各多少只? #include void main() { int i,j; for(i=1;i<25;i++) { j=25-i; if(2*i+4*j==80) break; } printf("笼中有鸡%d只,有兔%d只",i,j); } 10.输出1~999中能被3整除,且至少有一位数字是5的所有整数。 #include void main(void) { int i; for(i=1;i<1000;i++) { if(i%3==0) { if(i%10==5||i%100==5||1%1000==5) { printf("%d\n",i); } } } } 11. 1.求2~1000中的守形数(若某数的平方,其低位与该数本身相同,则称该数为守形数。例如25,25的平方=625,625的低位25与原数相同,则25称为守形数。 #include void main() { int i=2,n,c; c=0; printf("守形数有:"); while(i<1001) { 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个数,求出它们的最大值、最小值及平均值。 #include void main() { int a[20]; int i,max,min; float ave,sum=0; printf("请输入20个数"); for(i=0;i<20;i++) scanf("%d",&a[i]); min=a[0]; max=a[0]; for(i=0;i<20;i++) { if(min>a[i]) min=a[i]; sum=sum+a[i]; if(min void 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个数,统计其中正、负和零的个数。 #include void main() { int a[20]; int i; float z=0,f=0,l=0; printf("请输入20个数"); for(i=0;i<20;i++) scanf("%d",&a[i]); for(i=0;i<20;i++) { if(a[i]>0) z++; if(a[i]==0) l++; if(a[i]<0) f++; } printf("正数有%f个,负数有%f个,0有%f个",z,f,l); }
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
相关搜索

当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!