T1. 倒序输出
依次输入 4 4 4 个整数 a a a、 b b b、 c c c、 d d d,将他们倒序输出,即依次输出 d d d、 c c c、 b b b、 a a a 这 4 4 4 个数。
时间限制:1 s
内存限制:64 MB
- 输入
一行 4 4 4 个整数 a a a、 b b b、 c c c、 d d d,以空格分隔。 0 < a , b , c , d < 1 0 8 0 < a,b,c,d < 10^8 0<a,b,c,d<108。 - 输出
一行 4 4 4 个整数 d d d、 c c c、 b b b、 a a a,整数之间以一个空格分隔。 - 样例输入
1 2 3 4
- 样例输出
4 3 2 1
思路分析
此题考查基本输入输出,属于入门题。按照题目要求进行输入输出即可。
/*
* Name: T1.cpp
* Problem: 倒序输出
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:36
*/
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << d << " " << c << " " << b << " " << a << endl;
return 0;
}
T2. 平方差计算
给定的两个整数 a , b a, b a,b,他们的平方差结果为 a 2 − b 2 a^2-b^2 a2−b2,可以化简为 ( a + b ) ( a − b ) (a + b)(a-b) (a+b)(a−b)。例如 5 5 5 和 4 4 4 的平方差为 5 2 − 4 2 = ( 5 + 4 ) ( 5 − 4 ) = 9 5^2-4^2=(5+4)(5-4)=9 52−42=(5+4)(5−4)=9。现给定两个整数,求他们的平方差。
时间限制:1 s
内存限制:64 MB
- 输入
一行两个整数 a a a、 b b b,以空格分隔。 0 < b < a < 1 0 4 0 < b < a < 10^4 0<b<a<104。 - 输出
输出 a a a 和 b b b 的平方差。 - 样例输入
5 4
- 样例输出
9
思路分析
此题考查算术运算,属于入门题。
此题只需按照题目中给出的公式进行计算输出即可,题目中有两个公式,使用任意一个皆可。
/*
* Name: T2.cpp
* Problem: 平方差计算
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:37
*/
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << (a + b) * (a - b);
return 0;
}
T3. 最小的数
依次输入 3 3 3 个整数 a a a、 b b b、 c c c,将 a a a、 b b b、 c c c 中的最小值输出。
时间限制:1 s
内存限制:64 MB
- 输入
一行 3 3 3 个整数 a a a、 b b b、 c c c,以空格分隔。 0 < a , b , c < 1 0 8 0 < a,b,c < 10^8 0<a,b,c<108。 - 输出
1 1 1 个整数,即 3 3 3 个整数的最小值。 - 样例输入
2 3 2
- 样例输出
2
思路分析
此题考察分支结构比较大小,属于入门题。
此题可以用分支嵌套解决,是一种容易想到的做法。若 a > b
,则继续比较 b
和 c
,否则就比较 a
和 c
。
此题也可以用级联 if
语句结合逻辑运算符求解,也比较容易想到。若 a < b
并且 a < c
,那么 a
就是最小值;若 b < a
并且 b < c
,那么 b
就是最小值;以上两种情况都不符合的情况下,c
就是最小值。
此题还可以连用两次单分支,执行打擂台,这种做法不太容易想到。可以假设 a
是最小值(擂主),然后用 b
和 a
作比较,若 b
小于 a
(b
战胜了擂主),则用 b
更新 a
(b
成为新擂主)。对 c
采取同样的处理方式即可。详见参考代码。
/*
* Name: T3.cpp
* Problem: 最小的数
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:40
*/
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if (b < a) {
a = b;
}
if (c < a) {
a = c;
}
cout << a << endl;
return 0;
}
T4. 计算成绩优秀的人数
现有一个班一门课程考试的分数,请统计其中成绩为优秀的人数。成绩为优秀的要求是分数大于等于 85 85 85。
时间限制:1 s
内存限制:64 MB
- 输入
第一行 1 1 1 个整数 n n n,表示分数的个数。 0 < n ≤ 100 0 < n ≤ 100 0<n≤100。
第二行 n n n 个正整数,表示每一个分数,每个分数小于等于 100 100 100。 - 输出
输出一个整数,表示成绩为优秀的人数。 - 样例输入
10 85 70 99 90 78 55 100 62 88 84
- 样例输出
5
思路分析
此题考查循环结构与分支结构,属于入门题。
此题需要依次判断输入的每个数 x
。若 x
大于或等于
85
85
85,则答案累加
1
1
1。
/*
* Name: T4.cpp
* Problem: 计算成绩优秀的人数
* Author: Teacher Gao.
* Date&Time: 2024/03/04 22:56
*/
#include <iostream>
using namespace std;
int main()
{
int n, x;
cin >> n;
int tot = 0;
for (int i = 1; i <= n; i++) {
cin >> x;
if (x >= 85) {
tot++;
}
}
cout << tot << endl;
return 0;
}
T5. 开关灯
假设有 n n n 盏灯( n n n 为不大于 5000 5000 5000 的正整数),从 1 1 1 到 n n n 按顺序依次编号,初始时全部处于开启状态;有 m m m 个人( m m m 为不大于 n n n 的正整数)也从 1 1 1 到 m m m 依次编号。
第一个人( 1 1 1 号)将灯全部关闭,第二个人( 2 2 2 号)将编号为 2 2 2 的倍数的灯打开,第三个人( 3 3 3 号)将编号为 3 3 3 的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和 3 3 3 号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第 m m m 个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
时间限制:1 s
内存限制:64 MB
- 输入
输入正整数 N N N 和 M M M,以单个空格隔开。 - 输出
顺次输出关闭的灯的编号,其间用逗号间隔。 - 样例输入
10 10
- 样例输出
1,4,9
思路分析
此题考查循环结构,以及标记法,属于基础题,不过输出逗号的要求给这道题增加了不少难度。思路与 2021 2021 2021 年 6 6 6 月份考试的 T5 一致,可以参考 2021 年 6 月青少年软编等考 C 语言一级真题解析中的 T5。
需要注意的是,此题输出的是与原始状态相反的灯的编号。此外,两个输出的整数之间需要输出一个逗号,这里也可以采用标记法这个技巧。将输出看作是先输出一个逗号,再输出一个整数,于是我们只需要将第一个逗号处理掉就可以了。具体来说,可以在输出前设置一个标记 flag = 1
,输出时检测该标记是否为
1
1
1。若是,则将 flag
赋值为
0
0
0,否则输出一个逗号。
当然,我们还可以采用一种更简单的方式来处理,那就是将输出的第
1
1
1 个数单独放在循环之前进行输出,这样循环内部就只需要从第
2
2
2 个数开始输出,每次输出时先输出逗号 ,
,再输出数字即可。根据题目中的数据范围,可以确定第
1
1
1 个被输出的数字一定是 1
,因为这个开关只会被第
1
1
1 个人按一次。虽然这种方式的通用性比不上前面的标记法,但代码确实简单。参考代码仍然以更具通用性的标记法为例,至于第二种方法,大家可以自行尝试。
/*
* Name: T5.cpp
* Problem: 开关灯
* Author: Teacher Gao.
* Date&Time: 2024/03/04 20:50
*/
#include <iostream>
using namespace std;
int main()
{
int n, m;
bool a[5005] = {0};
cin >> n >> m;
// 枚举人的编号
for (int j = 1; j <= m; j++) {
// 枚举灯的编号
for (int i = j; i <= n; i += j) {
a[i] = !a[i];
}
}
bool flag = 1;
for (int i = 1; i <= n; i++) {
if (a[i]) {
if (flag) {
flag = 0;
}
else {
cout << ",";
}
cout << i;
}
}
return 0;
}