题目合集1

目录

斐波那契数列

输出2-100以内的素数,并且每五个换行。

对2-135的整数素数因式分解

打印空心正方形

打印空心正方形变式

计算某种式子

勒让德多项式

猜数游戏

判断回文数

蛇形矩阵

计算向量点积+输出最大最小值的差



斐波那契数列

1.规定a0=1,a1=1,用户输入一个下表n值,可以显示相应的项结果。

题目分析:

要求:①用户输入下标值n

②显示相应下标的结果

过程实现:先定义好前两项,(注意:是从第0项开始的)从第二项开始递归。(for语句)

递归时注意顺序!且for语句实现通常要定义一个辅助变量i。

#include<iostream>
using namespace std;
int main()
{
    int a0=1, a1=1, a2, n, i;
    while (cin >> n)
    {
        if (n == 0) a2=1;
        if (n == 1) a2 = 1;
        for (i = 2; i <= n; i++)
        {
            a2 = a0 + a1;  //这个一定要先计算出初始的结果,才开始递归!
            a0 = a1;    //这里两个递归千万不可以调换顺序!
            a1 = a2;
        }
        cout << a2 << endl;
    }
    return 0;
}

输出2-100以内的素数,并且每五个换行。

要求:2-100(for循环语句)变量m

素数(for循环判断)输出(cout),需要创建辅助变量i作除数

每五个换行(if语句),需要另外一个变量n计算素数数量

#include<iostream>
using namespace std;
int main()
{
	int n,k=0;
	for (n = 2; n <= 100; n++)
	{
		for (int i = 2; i <= n; i++)
		{
			if (i == n)  
			{
				
				cout << n << '\t';
				k++;  //k为素数个数计数器
				if (k % 5 == 0) cout << endl; //每五个换行
				break;
			}
			if (n %i == 0)  //不是素数,但需要考虑2也是素数,故这个if放在后面
			{
				break;
			}
		}
	}
	return 0;
}

对2-135的整数素数因式分解

    int n,i;
    while (cin >> n)
    {
        if (n >= 2 && n<= 135)
        {
            for (i = 2; i <= n; )
            {
                if (n % i == 0)
                {
                    n = n / i;
                    cout << ' ' << i;
                }
                else i++;
            }
            cout << endl;
        }
    }

PS:不用另外对于“素数”作限制,能被一个数整除就代表这个数就是素数


打印空心正方形

用*

	int n;//方阵的边长
	while (cin >> n)
	{
		int i, j,k,a;
		for (i = 1; i <= n; i++)//第一行边长
		{
			cout << "*";
		}
		//空心行
		cout << '\n';
		for (k = 1; k <= n - 2; k++)//有n-2个空心行,每行效果相同
		{
			cout << "*";
			for (j = 1; j <= n - 2; j++)
			{
				cout << " ";
			}
			cout <<"*"<< endl;
		}
		//最后一行
		for (a = 1; a <= n; a++)
		{
			cout << "*";
		}
		cout << endl;

打印空心正方形变式

void print(int, char);
int main()
{
	int n;
	char sign;
	while (cin >> n>>sign)
	{
		if (n <=0)
		{
			cout << "ERROR" << endl;
	    }
		for (int l = 1; l <= n; l++)    //递增打印,学会了哦!!!!!!
		{
			print(l, sign);
		}
	}
	return 0;
}

void print(int n, char sign)
{

	if (n == 1)  cout << sign << endl;
	if (n > 1)
	{
		for (int j = 1; j <= n; j++) 
		{
			cout << sign;
		}
		cout << endl; 
		for (int j = 1; j <= n - 2; j++)
		{
			cout << sign;
			for (int k = 1; k <= n - 2; k++)
			{
				cout << " ";
			}
			cout << sign; cout << endl;
		}
		for (int j = 1; j <= n; j++)
		{
			cout << sign;
		}
		cout << endl;
	}
}


计算某种式子

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int m, n, p, i, j, s1 = 0, s2 = 0;
	while (cin >> m >> n >> p)
	{
		float r1 = (1 + m) * m * 0.5;
		int r2, r3;    //类型不要乱设定
		for (i = 1; i <= n; i++)
		{
			r2 = i * i * i;
			s1 = s1 + r2;

		}
		for (j = 1; j <= p; j++)
		{
			r3 = j * j * j * j * j;
			s2 = s2 + r3;

		}
		float result = (r1 + s1) / s2;
		cout << fixed << setprecision(4) << result << endl;
		i = 1; j = 1; r1 = 0; r2 = 0; r3 = 0; s1 = 0; s2 = 0;  //必须得变量重置

	}
	return 0;
}

勒让德多项式

#include<iostream>
#include<iomanip> //限制小数头文件
using namespace std;
float ss(float x, int n)
{
	if (n == 0) return 1;
	else if (n == 1) return x;
	else if (n > 1)
	{
		float result;
		result = ((2 * n - 1) * ss(x, n - 1) - (n - 1) * ss(x, n - 2)) / n;
		return result;
	}
}
int main()
{
	int n;
	float x;
	while (cin >> x >> n)
	{
		float result = ss(x, n);
		cout << fixed << setprecision(2) << result << endl; //限制输出两位小数

	}
	return 0;
}

猜数游戏

#include<iostream>
using namespace std;
int guess(int k =0);
int main()
{
	int answer, t = 1;
	cout << "请你想好一个1~1000之内的整数,别告诉我,让我来猜猜!\n";
	cout << "猜中了,请输入0;若猜的数小了,请输入-1;若猜的数大了,请输入1\n";
	cout << "开始猜了……\n";
	cout << "是 " << guess() << " 吗?\t";
	while (1)
	{
		cin >> answer;  //注意是有多个输入的,计算机每猜一个数输入一次
		if (answer == 0)
		{
			cout << "我猜中啦!只猜了 " << t << " 次,很强吧!\n";
			break;
		}
		cout << "是 " << guess(answer) << " 吗?\t";
		t++;
	}
}
int guess(int k)
{//定义static变量,使它在main函数里也生效
	static int min = 1;
	static int max = 1000;
	static int g = 500;
	switch (k)
	{
	case 0: break;
	case 1: max = g - 1; break;
	case -1: min = g + 1; break;
	default: cout << "你输入错了,请再输入。\n"; return g;
	}
	if (max < min)
	{
		cout << "你耍赖…不跟你玩了!\n";
		exit(0);   //退出整个程序
	}
	g = (min + max) / 2;
	return g;
}


判断回文数

#include <iostream>
using namespace std;
int main()
{
	long n;
	while (cin >> n)
	{
		int a[100];
		int i, j;
		for (i = 0;1; i++)
		{
			a[i] = n % 10;
			n = n / 10;  //把每个数字存进数组
			if (n < 1)
			{
				break;  // 条件永真时要有循环终止条件
			}
		}//此时i相当于数组的下标
		for (j = 0; j < i / 2; j++)
		{
			if (a[j] !=a[i - j]) break;	//两边比较,首先把错的给排除了,好吗
		}
		if (i / 2 == j) cout << "YES" << endl;   //执行到最后依旧满足两边相等
		else cout << "NO" << endl;
		
	}
	return 0;
}

蛇形矩阵

#include<iostream>
using namespace std;

void snake(int N);

int main()
{
	int N;
	while (cin >> N)
	{
		snake(N);
	}
	return 0;
}

//输出蛇形矩阵
void snake(int N)
{
	int n = 1; //n的counter
	static int snake[32][32]; //32×32的矩阵恰好可以容纳N的最大值
	int x, y; //行数,列数
	int L; //对角线的第数

	//为矩阵赋值
	for (L = 1; n; L++) //以对角线为分组对元素赋值
	{
		//使虚拟光标从最左下方元素开始移动
		x = L - 1;  //借助L也完成了对行数的递增
		y = 0;
		while (x >= 0)
		{
			snake[x][y] = n;
			n++;
			if (n > N)
			{
				n = 0; //当n为0时外循环不执行
				break;
			}
			//每次循环一次令光标向右上方移动一个单位
			x--;
			y++;
		}
	}

	//输出矩阵
	for (x = 0;x<L-1 ; x++)    //当输出到最后一行时主动结束循环,避免输出换行
	{
		for (y = 0; ; y++)
		{
			if (snake[x][y] > 0 && snake[x][y] <= N)
			{
				if (y >= 1)
					cout << " " << snake[x][y];
				if (y == 0)  //第一列元素之前不输出空格
					cout << snake[x][y];
			}
			else break; //不输出没有被赋值的元素
		}
        cout<<endl;
	}
}

计算向量点积+输出最大最小值的差

int main()
{
	int n;   //向量的维数
	while (cin >> n)
	{
		int num1, num2; int sum = 0; int r1=0; int r2=0, r3=0;
	int max1 = -1000, max2 = -1000, min1 = 1000, min2 = 1000;  //将这些变量写进while中,会更省事,不用变量重置了!
		
			int a[1000];
			int b[1000];

			for (int i = 0; i < n; i++)
			{
				cin >> num1;
					if (num1 > max1)max1 = num1;
					if (num1 < min1)min1 = num1;
					a[i] = num1;
			}
			for (int i = 0; i < n; i++)
			{

				cin >> num2;
					if (num2 > max2) max2 = num2;
					if (num2 < min2) min2 = num2;
					b[i] = num2;
				
			}
			for (int i = 0; i < n; i++)
			{
				sum = sum + a[i] * b[i];
			}
			cout << sum << endl;
			r2 = max1 - min1;
			r3 = max2 - min2;
			cout << r2 << "&" << r3 << endl;
	}
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值