C++ 常用练习小例子

C++ 常用练习小例子

1、判断一个数是奇数还是偶数

#include <iostream>
using namespace std;
 
int main()
{
    int n;
 
    cout << "输入一个整数: ";
    cin >> n;
 
    if ( n % 2 == 0)
        cout << n << " 为偶数。";
    else
        cout << n << " 为奇数。";
 
    return 0;
}

2、判断输入年份是否为闰年

不是整百的年份只要被4整除的就是闰年,整百的年份必须得被400整除才是闰年。

#include <iostream>
using namespace std;
 
int main()
{
    int year;
 
    cout << "输入年份: ";
    cin >> year;
 
    if (year % 4 == 0)
    {
        if (year % 100 == 0)
        {
            // // 这里如果被 400 整除是闰年
            if (year % 400 == 0)
                cout << year << " 是闰年";
            else
                cout << year << " 不是闰年";
        }
        else
            cout << year << " 是闰年";
    }
    else
        cout << year << " 不是闰年";
 
    return 0;
}

3、九九乘法表

#include<iostream>
using namespace std;

int main()
{
    for (int i = 1; i < 10; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            cout << j << "x" << i << "=" << j*i << "\t" ;
        }
        cout << endl;
    }

    return 0;    
}

4、求两个整数的最大公约数和最小公倍数

最大公约数:也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。

最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。

辗转相除法求最大公约数算法

两整数a和b

①a/b得余数r(0<=r)

②若 r= 0,算法结束;b 即为答案。

③互换:置 a←b,b←r,并返回第①步。

求出最大公因数后,最小公倍数求法就比较简单了,用a*b/gcd(a,b)即可。

辗转相除法求最大公约数源码如下:

#include <iostream>
using namespace std;
// 求最大公约数
int gcd(int a, int b)
{
	int r;
	// 辗转相除法 直到a%b==0
	// 返回b,b就是最大公因数
	while (a % b != 0)
	{
		r = a % b;
		a = b;
		b = r;
	}
	return b;
}
int main()
{
	cout << "请输入两个整数:" ;
	int a, b;
	cin >> a >> b;
	cout << "最大公约数:" << gcd(a, b) << endl;
	cout << "最小公倍数数:" << a*b/gcd(a, b) << endl;
	return 0;
}

辗转相除法求最大公约数算法,使用递归写法:

核心:

若 r 是 a ÷ b 的余数,且r不为0, 则gcd(a,b) = gcd(b,r)

辗转相除法求最大公约数使用递归写法源码如下:

#include <iostream>
using namespace std;
// 辗转相除法求求最大公约数递归写法 
int gcd(int a, int b)
{
	if (a % b == 0)
	{
		return b;
	}
	else
	{
		return gcd(b, a % b);
	}
}
int main()
{
	cout << "请输入两个整数:" ;
	int a, b;
	cin >> a >> b;
	cout << "最大公约数:" << gcd(a, b) << endl;
	cout << "最小公倍数数:" << a*b/gcd(a, b) << endl;
	return 0;
}

5、将一个正整数分解质因数

算法:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

源码如下:

#include<iostream>
using namespace std;
int main()
{
	int mun;
	cout << "请输入一个正整数" << endl;
	cin >> mun;
	cout << mun << "=";
	for (int i = 2; i <= mun; i++)
	{
		while (i != mun)
		{
			if (mun % i == 0)
			{
				cout << i << "*";
				mun = mun / i;
			}
			else
			{
				break;
			}
		}
	}
	cout << mun;
	return 0;
}

6、斐波那契数列

斐波那契(fibonacci)数列下一个数字是前两个数字的总和,例如:0,1,1,2,3,5,8,13,21等。斐波那契数列的前两个数字是:0和1。

不使用递归实现斐波那契数列,源码如下:

#include <iostream>  
using namespace std;  
int main() {  
    int n1=0,n2=1,n3,i,number;    
    cout<<"输入元素的项数(>=2): ";    
    cin>>number;    
    cout<<n1<<" "<<n2<<" "; //输出第1项0和第2项 1 
    //循环从2开始    
    for(i=2;i<number;++i) 
    {    
        n3=n1+n2;    
        cout<<n3<<" ";    
        n1=n2;    
        n2=n3;    
    }    
    return 0;  
}

用递归实现斐波那契数列,源码如下:

#include<iostream>    
using namespace std;      
void printFibonacci(int n){    
    static int n1=0, n2=1, n3;    
    if(n>0){    
         n3 = n1 + n2;    
         n1 = n2;    
         n2 = n3;    
         cout<<n3<<" ";    
         printFibonacci(n-1);    
    }    
}    
int main(){    
    int n;    
    cout<<"输入元素的项数(>=2): ";    
    cin>>n;    
    cout<<"0 "<<"1 "; //输出第1项0和第2项 1  
    printFibonacci(n-2); //n-2,因为已经打印了2个数字  
    return 0;  
}

7、用1、2、3、4个数字能组成多少个互异的三位数

用1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?并具体列出来。

源码如下:

#include <iostream>
using namespace std;
int main() {
	int i,j,k,a=0;
	for (i=1;i<=4;i++) {
		for (j=1;j<=4;j++) {
			for (k=1;k<=4;k++) {
				if(i!=j&&i!=k&&j!=k) {
					a++;
					cout<<i*100+j*10+k<<" ";
				}
			}
		}
	}
	cout<<endl<<a<<"个"<<endl;
}

猜你喜欢

转载自blog.csdn.net/cnds123/article/details/130360770