- 知识摘要
- 题目1:求最大公约数和最小公倍数
- 内容详情
- 程序源码
- 题目2:输出水仙花数
- 内容详情
- 程序源码
- 题目3:判断一个数是否是回文数
- 内容详情
- 程序源码
- 题目4:分解一个整数的所有素数因子
- 内容详情
- 程序源码
- 题目5:递归完成x的n次方的计算
- 内容详情
- 程序源码
知识摘要
- 函数的声明与定义
- 水仙花数算法,将每一位数的3次方存起来再相加(详见题2)
- 回文数,将数倒序后判断是否与原来相等(详见题3)
- 分解素数因子,循环与判断语句的巧妙结合(详见题4)
- 函数的递归调用(详见题5)
题目1:求最大公约数和最小公倍数 内容详情
题目1:
输入提示:输入仅一行,输入二个整数。
输出提示:输出仅二行;
第一行:输出最大公约数
第二行:输出最小公倍数
输图样本:12 18
输出样本:6
36
#include#include int max(int x,int y); //如果子函数定义在主函数之后,则要在主函数前声明子函数 int min(int x,int y); int i,s; int main() { int m,n; //分别代表max、min scanf("%d%d",&m,&n); printf("%dn",max(m,n)); printf("%d",min(m,n)); return 0; } int max(int x,int y) //最大公因数 { for (i=1;i<=x&&i<=y;i++) { if (x%i==0&&y%i==0) s=i; } return(s); } int min(int x, int y) //最小公倍数 { i=x; while(i%x!=0||i%y!=0) { i++; s=i; } return(s); }
题目2:输出水仙花数 内容详情
题目2:
输入提示:输入仅一行,输入2个数,最小三位数和最大三位数。
输出提示:输出一行,输出所有水仙花数。(数据间隔一个空格)
输入样本:100 400
输出样本:153 370 371
#include#include int shui(int x); //水仙花数 int main() { int m,n,i; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { if(shui(i)) printf("%d ",i); } return 0; } int shui(int x) { int s,a,b,c; a=(x/100)*(x/100)*(x/100); b=(x/10%10)*(x/10%10)*(x/10%10); c=(x%10)*(x%10)*(x%10); s=a+b+c; if(s==x) return s; else return 0; }
题目3:判断一个数是否是回文数 内容详情
回文数定义:
回文数是指一个像14641这样“对称”的数,即:将这个数的数字按相反的顺序重新排列所得到的“倒序数”或“反序数”,和原来的数一样。这里,“回文”是指像“妈妈爱我,我爱妈妈”这样的,正读反读都相同的单词或句子。
题目3:
输入提示:输入仅一行,输入一个整数。
输出提示:输出仅一行,如果是回文数,输出yes,否则输出no。
输入样本:1231
输出样本:no
#include#include int re(int x); int main() { int n,ren; //“原数”、“倒序数” scanf("%d",&n); ren=re(n); if (ren==n) printf("yes"); else printf("no"); return 0; } int re(int x) //求倒序数 { int c=0,i,t,n,m=0; t=x; while(t!=0) //判断输入的数有几位 { t=t/10; c++; } for(i=0;i n=x%10; x=x/10; m=m*10+n; } return m; }
题目4:分解一个整数的所有素数因子 内容详情
题目4:
输入提示:输入仅一行,输入m的值。
输出提示:输出仅一行,输出素数因子,用空格分隔。
输入样本:120
输出样本:2 2 2 3 5
#include#include int primedec(int m); int main() { int m; scanf("%d",&m); primedec(m); return 0; } int primedec(int m) //打印素数因子 { int t,i=2; t=m; while(t-1) //t一直除于其质数,最后t=1,退出循环 { if (!(t%i)) //如果能整除,则执行以下语句,i不变再次循环 { t=t/i; printf("%d ",i); } if(t%i) //如果不能整除i加1,再次循环 i++; } return 0; }
题目5:递归完成x的n次方的计算 内容详情
题目5:
输入提示:输入仅一行,输入x和n(n>0)值。
输出提示:输出仅一行,输出x的n次方的值。
输入样本:2 3
输出样本:8
程序源码
#include#include int main() { int x,n; scanf("%d%d",&x,&n); printf("%d",fang(x,n)); return 0; } int fang(int x,int n) //x的n次方 { int t; t=x; if(n==1) t=x; else t=t*fang(x,n-1); return t; }



