C++ 做题 Ⅲ

x33g5p2x  于2022-03-24 转载在 其他  
字(2.4k)|赞(0)|评价(0)|浏览(423)

1、输入两个数,求整数的最大公约数

#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main()
{
	int m,n,r;
	cout<<"请输入m,n的值:"<<endl; 
	cin>>m>>n;
	r=m%n;
	while(r!=0){
		m=n;
		n=r;
		r=m%n;
	} 
	cout<<"最大公约数是:"<<n<<endl;
	return 0;
}

2、求整数m的阶乘之和,显示m的每个阶乘,再求和。

#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main()
{
	int m,s=0;
	cout<<"请输入m的值:"; 
	cin>>m;
	for(int i=1;i<=m;++i){
		int r=1;	 // 每次运算从1开始*2*3 
		for(int j=1;j<=i;++j){
			r = r*j;
			
		}
		cout<<"r阶乘是:"<<r<<", ";
		s+=r;	
	}
	cout<<endl<<m<<"的阶乘之和是="<<s<<endl;
	return 0;
}

另一种解法:两者区别再第二个效率会快得多,循环次数少。

#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main()
{
	int m,s=0,r=1;
	cout<<"请输入m的值:"; 
	cin>>m;
	for(int i=1;i<=m;++i){
		r*=i;
		cout<<"r阶乘是:"<<r<<endl;
		s+=r;	
	}
	cout<<endl<<m<<"的阶乘之和是="<<s<<endl;
	return 0;
}

3、输入数字n,在屏幕上输出由 “*” 构成的n行直角三角形。

例如:n=5
*
* *
* * *
* * * *
* * * * *
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	int n,s=0,r=1;
	cout<<"请输入n的值:"; 
	cin>>n;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=i;++j){
			cout<<"* ";
		}
		cout<<endl;
	}
}

4、百钱买百鸡问题

鸡翁一,值钱a;鸡母一,值钱b;鸡雏c,值钱一。问鸡翁、鸡母、鸡雏各几何?

输入钱n,需满足条件:
1. k%c == 0;
2. i+j+k == n;
3. a*i+b*j+k/c == n;
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	int n,a=6,b=4,c=3; // a是鸡翁,b是鸡母,c是鸡雏
	cout<<"请输入钱n的值:"; 
	cin>>n;
	for(int i=0;i<=n/a;++i)
		for(int j=0;j<=n/b;++j)
			for(int k=0;k<=c*n;++k)
				if(k%c==0&& i+j+k==n&& a*i+b*j+k/c==n)
					printf("%d %d %d\n",i,j,k);
	return 0;
}

5、求100-999的水仙花数

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	int n; // a是鸡翁,b是鸡母,c是鸡雏
	cout<<"请输出100-999的水仙花数有:"<<endl; 
	for(int i=1;i<=9;++i)
		for(int j=0;j<=9;++j)
			for(int k=0;k<=9;++k)
				if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)
					printf("%d%d%d\n",i,j,k);
	return 0;
}

6、输入n的值,求1-n的所有素数。

#include <iostream>
#include <cstdio>
#include<cmath>
using namespace std;
int main()
{
	int n;
	cout<<"请输入n的值,求1-n的所有素数:"; 
	cin>>n;
	for(int i=1;i<=n;++i){
		int x=2;
		while(x<=floor(sqrt(i)) &&(i%x!=0))
			++x;
		if(x>floor(sqrt(i)))
			cout<<i<<"\t";
	}
	return 0;
}

相关文章