目录
- [T1. 希望如光](#T1. 希望如光)
- [T2. 计算表达式的值](#T2. 计算表达式的值)
- [T3. 倒计时](#T3. 倒计时)
- [T4. 渡河问题](#T4. 渡河问题)
- [T5. 镜像加密](#T5. 镜像加密)
T1. 希望如光
在充满挑战的生活中,希望往往是支撑人们穿越黑暗的核心力量。这句台词来自影史经典《肖申克的救赎》,当被囚禁在高墙内的安迪说出 "Hope is a good thing, maybe the best of things." 时,不仅打破了监狱的压抑氛围,更向观众揭示了一个深刻的哲理:真正的自由源于内心的希望,而美好的事物永远不会消逝。这句话跨越银幕,成为无数人在低谷中重整旗鼓的精神燃料。
时间限制:1 s
内存限制:128 MB
-
输入
本题没有输入。 -
输出
如题面所示,输出分两行。注意标点符号是英文输入法的标点,并请注意大小写必须与要求一致。 -
样例输入
无 -
样例输出
Hope is a good thing, maybe the best of things.
思路分析
此题考查基本输出,属于入门题。
按照题目要求输出即可。
cpp
/*
* Name: T1.cpp
* Problem: 希望如光
* Author: Teacher Gao.
* Date&Time: 2026/01/07 23:47
*/
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cout << "Hope is a good thing,\nmaybe the best of things." << endl;
return 0;
}
T2. 计算表达式的值
给定 3 3 3 个整数 a , b , c a,b,c a,b,c,计算表达式 b − ( 2 a − c ) b - (2a - c) b−(2a−c) 的值。
时间限制:1 s
内存限制:256 MB
-
输入
输入一行,包含三个整数 a , b , c a,b,c a,b,c,数与数之间以一个空格分开, − 10000 ≤ a , b , c ≤ 10000 -10000 \le a,b,c \le 10000 −10000≤a,b,c≤10000。 -
输出
输出一个整数,即表达式的值。 -
样例输入
2 3 5 -
样例输出
4
思路分析
此题考查算术运算,属于入门题。
按照题意输入三个整数后,按照给定的表达式计算输出即可。
cpp
/*
* Name: T2.cpp
* Problem: 计算表达式的值
* Author: Teacher Gao.
* Date&Time: 2026/01/07 23:48
*/
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
int a, b, c;
cin >> a >> b >> c;
cout << b - (2 * a - c) << endl;
return 0;
}
T3. 倒计时
给定一个正整数 n n n,请输出从 n n n 开始的倒计时序列。数字以逗号分隔,不含空格。倒计时的最后一个数字为 1 1 1。
时间限制:1 s
内存限制:128 MB
-
输入
单个正整数:表示 n n n, 1 ≤ n ≤ 1000 1\leq n\leq 1000 1≤n≤1000。 -
输出
一行有 n n n 个正整数。从 n n n 开始接下来是 n − 1 n-1 n−1、 n − 2 n-2 n−2 等直到 1 1 1,中间以半角的逗号隔开。 -
样例输入
3 -
样例输出
3,2,1
思路分析
此题考查循环结构,属于入门题。
对于输入的整数 n n n,从 n n n 到 1 1 1 输出是很容易的,麻烦的是逗号的处理。可以先输出一个 n n n,之后再循环,循环体中先输出一个逗号再输出数据即可。虽然这个问题有明确的循环次数,更适合用 for 语句求解,不过这个简单问题使用 while 语句会更加简洁。
cpp
/*
* Name: T3.cpp
* Problem: 倒计时
* Author: Teacher Gao.
* Date&Time: 2026/01/07 23:50
*/
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
int n;
cin >> n;
cout << n;
while (--n) {
cout << "," << n;
}
return 0;
}
T4. 渡河问题
某个班级有 a a a 个男生, b b b 个女生,以及 2 2 2 个老师一起春游。现在遇到了一条河流,需要搭乘摆渡船过河。摆渡船只有一艘,摆渡船是由人工智能自动驾驶的,一艘船可以坐 4 4 4 个乘客。
为了让所有人渡河,至少需要几次?
时间限制:1 s
内存限制:128 MB
-
输入
第一行:两个正整数 a a a 和 b b b, 1 ≤ a , b ≤ 50 1\leq a,b\leq 50 1≤a,b≤50。 -
输出
第一行:单个整数,表示小船的往返次数。 -
样例输入 1
30 40 -
样例输出 1
18 -
样例输入 2
10 11 -
样例输出 2
6
思路分析
此题考查分支结构,属于入门题。
首先计算出总人数为 a + b + 2 a + b + 2 a+b+2,那么答案为 ⌈ a + b + 2 4 ⌉ \lceil \frac{a + b + 2}{4}\rceil ⌈4a+b+2⌉,利用分支结构判断 a + b + 2 a+b+2 a+b+2 是否为 4 4 4 的倍数即可。
事实上,利用 C++ 中的整除运算,可以在不使用分支结构的情况下求出向上取整 的结果,公式为
分子 + 分母 − 1 分母 \frac{分子 + 分母 - 1}{分母} 分母分子+分母−1
于是此题答案为 C++ 表达式 (a + b + 2 + 3) / 4。
cpp
/*
* Name: T4.cpp
* Problem: 渡河问题
* Author: Teacher Gao.
* Date&Time: 2026/01/07 23:56
*/
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
int a, b;
cin >> a >> b;
cout << (a + b + 2 + 3) / 4 << endl;
return 0;
}
T5. 镜像加密
镜像加密是一种加密方法,它通过将一个字母替换成另一个字母完成加密。加密规则如下:将前 13 13 13 个字母和后 13 13 13 个字母分成两组,镜像地构成映射:即 A 替换成 Z,B 替换成 Y,C 替换成 X,依次类推。明文和密文之间的对应关系如下:
-
明文:
ABCDEFGHIJKLM -
密文:
ZYXWVUTSRQPON -
明文:
ZYXWVUTSRQPON -
密文:
ABCDEFGHIJKLM
镜像加密的一个特点是,加密和解密算法是一样的,给一个字母加密两次,就被恢复成了明文。现在给定一个字符,请输出它被镜像加密之后的结果。注意小写字母加密后仍旧是小写字母,大写字母加密后仍旧是大写字母。
时间限制:1 s
内存限制:128 MB
-
输入
一个英文字母,表示需要加密的字母。 -
输出
一个英文字母,表示被加密后的字母。 -
样例输入 1
C -
样例输出 1
X -
样例输入 2
w -
样例输出 2
d
思路分析
此题考查分支结构,属于基础题。
假设 c c c 是输入的字符变量,首先通过 'z' - c 或者 'Z' - c 计算出字符 c c c 到最后一个字母的距离,在镜像加密的规则下,加密之后的字母到第一个字母 'a' 或 'A' 的距离与这个距离是相等的。于是最终结果就是 'z' - c + 'a' 或 'Z' - c + 'A',只需要根据字母 c c c 的大小写进行选择即可。
需要注意的是,C++ 中 char 类型是一种小整数,在参与算术运算的过程中会自动转换为 int 类型,因此需要使用强制类型转换,或者 cout.put() 输出对应的字符。
cpp
/*
* Name: T5.cpp
* Problem: 镜像加密
* Author: Teacher Gao.
* Date&Time: 2026/01/08 00:07
*/
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
char c;
cin >> c;
if (c <= 'Z') {
cout.put('Z' - c + 'A');
}
else {
cout.put('z' - c + 'a');
}
return 0;
}