栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言程序基础实验5——求最大公约数和最小公倍数、输出水仙花数、判断一个数是否是回文数、分解一个整数的所有素数因子、递归完成x的n次方的计算

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言程序基础实验5——求最大公约数和最小公倍数、输出水仙花数、判断一个数是否是回文数、分解一个整数的所有素数因子、递归完成x的n次方的计算

函数程序设计
  • 知识摘要
  • 题目1:求最大公约数和最小公倍数
    • 内容详情
    • 程序源码
  • 题目2:输出水仙花数
    • 内容详情
    • 程序源码
  • 题目3:判断一个数是否是回文数
    • 内容详情
    • 程序源码
  • 题目4:分解一个整数的所有素数因子
    • 内容详情
    • 程序源码
  • 题目5:递归完成x的n次方的计算
    • 内容详情
    • 程序源码


知识摘要
  1. 函数的声明与定义
  2. 水仙花数算法,将每一位数的3次方存起来再相加(详见题2)
  3. 回文数,将数倒序后判断是否与原来相等(详见题3)
  4. 分解素数因子,循环与判断语句的巧妙结合(详见题4)
  5. 函数的递归调用(详见题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;
} 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号