PAT乙级 1006换个格式输出整数 & 1004成绩排名

1004

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

感觉写的有点复杂了,但是主要是练习vector和class

#include <iostream>
#include<vector>
#include<string>
using namespace std;

class st//学生类
{
public:
	string name;
	string num;
	int grade;
};

st max(vector<st> s)//找最大值
{
	int max=0;
	st s1;
	for (int i = 0; i < s.size(); i++)
	{
		if (max < s[i].grade)
		{
			max = s[i].grade;
			s1 = s[i];
		}
	}
	return s1;
}

st min(vector<st> s)//找最小值
{
	int min = 100;
	st s1;
	for (int i = 0; i < s.size(); i++)
	{
		if (min > s[i].grade)
		{
			min = s[i].grade;
			s1 = s[i];
		}
	}
	return s1;
}


int main()
{
	vector<st> v;
	st s,smax,smin;
	int all = 0;
	cin >> all;
	for (int i = 0; i < all; i++)//输入
	{
		cin >> s.name;
		cin >> s.num;
		cin >> s.grade;
		v.push_back(s);
	}
	smax = max(v);
	smin = min(v);
	cout << smax.name << " " << smax.num<<"\n";
	cout << smin.name << " " << smin.num;
	return 0;
}

1006换个格式输出整数

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

输入格式:

每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。

输出格式:

每个测试用例的输出占一行,用规定的格式输出 n。

分析:比较简单的一道题,因为最多只到三位数,所以可以分三种情况考虑,活用除法和取余即可

#include<iostream>
using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n / 100 != 0)//三位数
	{
		int i = n / 100;
		while (i)
		{
			cout << "B";
			i--;
		}
		n = n % 100;
		if (n / 10 != 0)
		{
			i = n / 10;
			while (i)
			{
				cout << "S";
				i--;
			}
		}
		n = n % 10;
		if (n != 0)
		{
			for (int i1 = 1; i1 <= n; i1++)
				cout << i1;
		}
	}
	else if (n / 10 != 0)//两位数
	{
		int i2 = n / 10;
		while (i2)
		{
			cout << "S";
			i2--;
		}
		n = n % 10;
		if (n != 0)
		{
			for (int i1 = 1; i1 <= n; i1++)
				cout << i1;
		}
	}
	else//一位数
	{
		for (int i3 = 1; i3 <= n; i3++)
			cout << i3;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38386991/article/details/103896742