PAT基础级-黄金段位样卷2

本文介绍了六个编程题目,涵盖字符串处理、条件判断、循环控制和字符操作等多个方面。从简单的PTA(父母教师协会)口号拼音输出,到判断彩票是否幸运,再到实现汉字倒置,每个问题都提供了示例代码,旨在锻炼程序员的基础能力和逻辑思维。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7-1 PTA使我精神焕发

以上是湖北经济学院同学的大作。本题就请你用汉语拼音输出这句话。

输入格式:
本题没有输入。

输出格式:
在一行中按照样例输出,以惊叹号结尾。

输入样例:

输出样例:

PTA shi3 wo3 jing1 shen2 huan4 fa1 !

代码如下:

#include <iostream>
using namespace std;

int main() {
    cout << "PTA shi3 wo3 jing1 shen2 huan4 fa1 !";
    return 0;
}

7-2 宇宙无敌大招呼

据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。

输入格式:
输入在第一行给出一个星球的名字 S ,是一个由不超过7个英文字母组成的单词,以回车结束。

输出格式:
在一行中输出 Hello S ,跟输入的 S 星球打个招呼。

输入样例:

Mars

输出样例:

Hello Mars

代码如下:

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    cout << "Hello " << s;
    return 0;
}

7-3 谁是赢家

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。

输入格式:
输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。

输出格式:
按以下格式输出赢家:

The winner is x: P1 + P2

其中 x 是代表赢家的字母,P1 是赢家得到的观众票数,P2 是赢家得到的评委票数。

输入样例:

327 129
1 0 1

输出样例:

The winner is a: 327 + 1

代码如下:

#include <iostream>
using namespace std;

int main() {
    int pa, pb, x, y, z;
    cin >> pa >> pb >> x >> y >> z;
    int a = 0, b = 0;
    x ? ++b : ++a;
    y ? ++b : ++a;
    z ? ++b : ++a;
    cout << "The winner is ";
    if (pa > pb && a >= 1 || a == 3) cout << "a: " << pa << " + " << a;
    else cout << "b: " << pb << " + " << b;
    return 0;
}

7-4 大笨钟

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。

下面就请你写个程序,根据当前时间替大笨钟敲钟。

输入格式:
输入第一行按照 hh:mm 的格式给出当前时间。其中 hh 是小时,在00到23之间;mm 是分钟,在00到59之间。

输出格式:
根据当前时间替大笨钟敲钟,即在一行中输出相应数量个 Dang 。如果不是敲钟期,则输出:

Only hh:mm.  Too early to Dang.

其中 hh:mm 是输入的时间。

输入样例1:

19:05

输出样例1:

DangDangDangDangDangDangDangDang

输入样例2:

07:05

输出样例2:

Only 07:05.  Too early to Dang.

代码如下:

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

int main() {
	int h, m;
	scanf("%d:%d", &h, &m);
	if (h < 12 || (h == 12 && m == 0))
		printf("Only %02d:%02d.  Too early to Dang.\n", h, m);
	else {
		for (int i = 13; i <= h; ++i)
			cout << "Dang";
		if (m != 0) cout << "Dang\n";
	}
	return 0;
}

7-5 幸运彩票

彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
输入格式:

输入在第一行中给出一个正整数 N( ≤ 100 ≤ 100 100)。随后 N 行,每行给出一张彩票的 6 位数字。
输出格式:

对每张彩票,如果它是幸运的,就在一行中输出 You are lucky! ;否则输出 Wish you good luck.

输入样例:

2
233008
123456

输出样例:

You are lucky!
Wish you good luck.

代码如下:

#include <iostream>
using namespace std;
bool isLucky(int n) {
    int f3 = 0, s3 = 0;
    s3 = n % 10 + n / 10 % 10 + n / 100 % 10;
    f3 = n / 1000 % 10 + n / 10000 % 10 + n / 100000;
    if (s3 == f3) return true;
    return false;
}
int main() {
    int n, a;
    cin >> n;
    while (n--) {
        cin >> a;
        if (isLucky(a)) cout << "You are lucky!\n";
        else cout << "Wish you good luck.\n";
    }
}

7-6 福到了

“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。

输入格式:
输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @ 或者为空格。

输出格式:
输出倒置的网格,如样例所示。但是,如果这个字正过来倒过去是一样的,就先输出 bu yong dao le ,然后再用输入指定的字符将其输出。

输入样例 1:

$ 9
 @  @@@@@
@@@  @@@ 
 @   @ @ 
@@@  @@@ 
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
 @  @ @ @
 @  @@@@@

输出样例 1:

$$$$$  $ 
$ $ $  $ 
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
 $$$  $$$
 $ $   $ 
 $$$  $$$
$$$$$  $ 

输入样例 2:

& 3
@@@
 @ 
@@@

输出样例 2:

bu yong dao le
&&&
 & 
&&&

本题是模拟题,代码如下:

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

int main() {
	char c;
	int n;
	scanf("%c %d", &c, &n); 
	string s[n], revs[n]; 
	getchar();
	for (int i = 0; i < n; ++i) {
		getline(cin, s[i]); 
		int t = n - 1 - i;
		revs[t] = s[i];
		reverse(revs[t].begin(), revs[t].end());
	}
	bool flag = true;
	for (int i = 0; i < n; ++i) {
		if (s[i] != revs[i]) {
			flag = false;
			break;
		}
	}
	if (flag) cout << "bu yong dao le\n";
	for (int i = 0; i < n; ++i) 
		for (int j = 0; j < revs[i].size(); ++j) 
			if (revs[i][j] == '@')
				revs[i][j] = c;
	for (int i = 0; i < n; ++i) 
		cout << revs[i] << endl;
	return 0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值