PAT :计算机程序设计能力考试:一个高校编程学习赛,内容基础,据说题目描述含糊不清,造成诸多理解错误。
第一观感是:输入输出样例极少,未给学生充分理解题目,提供更多辅助。
PAT 乙级:只涉及基础编程,最难到排序算法。适合基础语法学习阶段的同学。
问题描述
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式
每个测试用例的输出占一行,用规定的格式输出 n。
输入输出样例
| 输入样例 | 输出样例 |
|---|---|
| 234 | BBSSS1234 |
| 23 | SS123 |
样例解释:无
题解 1
思路分析:数字范围很小,直接 if 判断所有可能。
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
if(n <= 9) {
for(int i = 1; i <= n; i++) {
cout << i;
}
} else if(n <= 99) {
for(int i = 1; i <= n/10; i++) {
cout << 'S';
}
for(int i = 1; i <= n%10; i++) {
cout << i;
}
} else if(n <= 999) {
for(int i = 1; i <= n/100; i++) {
cout << 'B';
}
for(int i = 1; i <= n/10%10; i++) {
cout << 'S';
}
for(int i = 1; i <= n%10; i++) {
cout << i;
}
}
cout << endl;
return 0;
}
题解 2
题解 1 中,可直接借助 for 循环的条件,间接判定数字 n 的位数。自己体会。
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1; i <= n/100; i++) {
cout << 'B';
}
for(int i = 1; i <= n/10%10; i++) {
cout << 'S';
}
for(int i = 1; i <= n%10; i++) {
cout << i;
}
cout << endl;
return 0;
}
这篇博客介绍了PAT计算机程序设计能力考试中的一道题目,该题目要求以特定格式输出不超过三位的正整数。由于输入输出样例不足,导致理解难度增加。作者提供了两种解决方案,分别通过if判断和优化后的for循环实现,旨在帮助初学者理解基础编程和数字位数处理。
299

被折叠的 条评论
为什么被折叠?



