法133计算机科学课第15周实践题目及参考解答
2013-12-20 20:56
519 查看
课程主页在:/article/1405311.html
编程练习1:输出1000以内的所有素数。
参考解答:
编程练习2:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
参考解答:
解2:
编程练习3:输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数)。提示:输入一个正整数n(例1234)后,构造出其反序数m(对应4321),若这两个数相等,则n是回文数(1234就不是回文数)。算法流程图如右图所示。
参考解答:
编程练习4:输出1000以内的所有回文数。
参考解答:
编程练习5:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,1、2、3是6的因子,所以6是完数。编程序,输入n,判断n是否是完数。
参考解答:
编程练习6:找出1000内的所有完数。
参考解答:
编程练习1:输出1000以内的所有素数。
参考解答:
#include<stdio.h> #include<math.h> int main() { int m,i,k,prime; for(m=2;m<=200;m++) { prime=1; k=sqrt(m); for(i=2; i<=k; i++) //最多循环至…… if(m%i==0) { prime=0; break; } if(prime==1) printf("%d ",m); } return 0; }
编程练习2:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
参考解答:
#include<stdio.h> int main() { int n,a,b,c,sum; int i,f; n=100; while(n<1000) { sum=0; c=n%10; //个位数, b=(n/10)%10; //十位数 a=n/100; //百位数 for(f=1,i=1; i<=a; ++i) f=f*i; //求 a! sum += f; for(f=1,i=1; i<=b; ++i) f=f*i; //求 b! sum += f; for(f=1,i=1; i<=c; ++i) f=f*i; //求 c! sum += f; //此时sum的值为a!+b!+c! if(sum==n) //若条件成立,则 n 就是要找的数。 printf("%d ",n); ++n; //考察下一个n } return 0; }
解2:
#include<stdio.h> int main() { int n,a,b,c,sum; int i,f; for(n=100;n<1000;n++) { sum=0; c=n%10; //个位数, b=(n/10)%10; //十位数 a=n/100; //百位数 for(f=1,i=1; i<=a; ++i) f=f*i; //求 a! sum += f; for(f=1,i=1; i<=b; ++i) f=f*i; //求 b! sum += f; for(f=1,i=1; i<=c; ++i) f=f*i; //求 c! sum += f; //此时sum的值为a!+b!+c! if(sum==n) //若条件成立,则 n 就是要找的数。 printf("%d ",n); } return 0; }
编程练习3:输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数)。提示:输入一个正整数n(例1234)后,构造出其反序数m(对应4321),若这两个数相等,则n是回文数(1234就不是回文数)。算法流程图如右图所示。
参考解答:
#include<stdio.h> int main() { int m,n,k; scanf("%d",&n); k=n; m=0; while(k>0) { m=m*10+k%10; k=k/10; } if(m==n) printf("%d是回文数\n",n); else printf("%d不是回文数\n",n); return 0; }
编程练习4:输出1000以内的所有回文数。
参考解答:
#include<stdio.h> int main() { int m,n,k; for(n=0; n<1000; n++) { k=n; m=0; while(k>0) { m=m*10+k%10; k=k/10; } if(m==n) printf("%d ",n); } return 0; }
编程练习5:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,1、2、3是6的因子,所以6是完数。编程序,输入n,判断n是否是完数。
参考解答:
#include<stdio.h> int main( ) { int i,n,s; scanf("%d",&n); s=1; //s表示因子和。1是任何数的因子,所以s=1,也使下一句可以从2开始尝试 for(i=2; i<n; i++) //从2开始到n-1,逐个去试 { if(n%i==0) s+=i; //如果i是n的因子,则累加 } if(n==s) printf("%d是完数\n",n); else printf("%d不是完数\n",n); return 0; }
编程练习6:找出1000内的所有完数。
参考解答:
#include<stdio.h> int main( ) { int i,n,s; for(n=2; n<1000; n++) { s=1; //s表示因子和。1是任何数的因子,所以s=1,也使下一句可以从2开始尝试 for(i=2; i<n; i++) //从2开始到n-1,逐个去试 { if(n%i==0) s+=i; //如果i是n的因子,则累加 } if(n==s) printf("%d ",n); } return 0; }
相关文章推荐
- 法133计算机科学课第11周实践题目及参考解答
- 法133计算机科学课第9、10周实践题目及参考解答
- 法133计算机科学课第12周实践题目及参考解答
- 法133计算机科学课第13周实践题目及参考解答
- 计算机科学-第15周 递归函数 题目及参考解答
- 计算机科学-第8周 字符串和动态数组 题目及参考解答
- 计算机科学-第3周 排序和查找 题目及参考解答
- 计算机科学-第9周 数组、结构体、指针综合练习 题目及参考解答
- 计算机科学-第4周 结构 题目及参考解答
- 计算机科学-第14周模块化程序设计 题目及参考解答
- 计算机科学-第6周 文件 题目及参考解答
- 2014秋C++ 第15周项目3参考解答 在OJ上玩指针
- 计算机科学-第2周 数组初练-题目
- 计算机科学-第7周 指针及应用 题目及参考解答
- hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)
- C++程序设计实践学材系列(27)——1.8 实践“项目”参考解答
- 漫谈<<离散数学及其应用>> 第二章的计算机题目解答。
- 计算机科学-第13周 函数 题目及参考解答
- 解答:第15周“知原理”检验题目
- 浙江大学计算机系硕士研究生复试题目解答(1)