2022 年 9 月青少年软编等考 C 语言一级真题解析

T1. 指定顺序输出

依次输入 3 3 3 个整数 a a a b b b c c c,将他们以 c c c a a a b b b 的顺序输出。

时间限制: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
  • 输出
    一行 3 3 3 个整数 c c c a a a b b b,整数之间以一个空格分隔。
  • 样例输入
    1 2 3
    
  • 样例输出
    3 1 2
    

思路分析

此题考查基本输入输出,属于入门题。按照题目要求的格式编写代码输出即可。

/*
 * Name: T1.cpp
 * Problem: 指定顺序输出
 * Author: Teacher Gao.
 * Date&Time: 2024/03/04 23:05
 */

#include <iostream>

using namespace std;

int main()
{
	int a, b, c;
	cin >> a >> b >> c;

	cout << c << " " << a << " " << b << endl;

	return 0;
}

T2. 成绩判定

给定一门课的考试分数,如果分数大于等于 60 60 60,则该门课成绩合格,记为 P,否者成绩不合格,记为 F

时间限制:1 s
内存限制:64 MB

  • 输入
    一个整数 s s s,表示这门课的分数。( 0 ≤ s ≤ 100 0 ≤ s ≤ 100 0s100
  • 输出
    如果成绩合格,输出字母 P,否者输出字母 F
  • 样例输入
    59
    
  • 样例输出
    F
    

思路分析

此题考察分支结构比较大小,属于入门题。

此题只需要按照题目描述,将输入数据 s s s 60 60 60 进行比较即可。若 s ≥ 60 s \ge 60 s60,则输出 P,否则输出 F

/*
 * Name: T2.cpp
 * Problem: 成绩判定
 * Author: Teacher Gao.
 * Date&Time: 2024/03/04 23:06
 */

#include <iostream>

using namespace std;

int main()
{
	int s;
	cin >> s;

	if (s >= 60) {
		cout << "P" << endl;
	}
	else {
		cout << "F" << endl;
	}

	return 0;
}

T3. 简单排序

依次输入 3 3 3 个整数 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
  • 输出
    一行 3 3 3 个整数,即将 a a a b b b c c c 从小到大排序的 3 3 3 个整数,整数之间以一个空格分隔。
  • 样例输入
    10 5 20
    
  • 样例输出
    5 10 20
    

思路分析

此题考查分支结构,以及三个数排序,有一定的难度,属于基础应用题。此题需要用到打擂台的思想,可以参考 2022 年 6 月青少年软编等考 C 语言一级真题解析中的 T3。

我们可以先用 bc 分别和 a 打擂台,之后 a 将存储 3 3 3 个数中的最小值。需要注意的是,bc 有可能打赢 a,从而将 a 的值覆盖掉。为了避免 a 的值被覆盖,导致数据丢失,我们在打擂台时可以将两个变量的值进行交换。在两轮擂台打完,决出最小值之后,只需要让 bc 再打一次擂台,决出大小即可完成排序的任务。

/*
 * Name: T3.cpp
 * Problem: 简单排序
 * Author: Teacher Gao.
 * Date&Time: 2024/03/04 23:08
 */

#include <iostream>

using namespace std;

int main()
{
	int a, b, c;
	cin >> a >> b >> c;

	if (b < a) {
		swap(a, b);
	}
	if (c < a) {
		swap(a, c);
	}
	if (c < b) {
		swap(b, c);
	}

	cout << a << " " << b << " " << c << endl;

	return 0;
}

T4. 数字求和

给定一个正整数 a a a,以及另外的 5 5 5 个正整数,问题是:这 5 5 5 个整数中,小于 a a a 的整数的和是多少?

时间限制:3 s
内存限制:64 MB

  • 输入
    输入一行,只包括 6 6 6 个小于 100 100 100 的正整数,其中第一个正整数就是 a a a
  • 输出
    输出一行,给出一个正整数,是 5 5 5 个数中小于 a a a 的数的和。
  • 样例输入
    10 1 2 3 4 11
    
  • 样例输出
    10
    

思路分析

此题考查循环结构与分支结构,属于入门题。

此题需要依次判断输入的每个数 x。若 x 小于 a,则将 x 累加。

/*
 * Name: T4.cpp
 * Problem: 数字求和
 * Author: Teacher Gao.
 * Date&Time: 2024/03/04 23:09
 */

#include <iostream>

using namespace std;

int main()
{
	int a, x;
	cin >> a;

	int sum = 0;
	for (int i = 1; i <= 5; i++) {
		cin >> x;
		if (x < a) {
			sum += x;
		}
	}

	cout << sum << endl;

	return 0;
}

T5. 数 1 的个数

给定一个十进制正整数 n n n,写下从 1 1 1 n n n 的所有整数,然后数一下其中出现的数字 “ 1 1 1” 的个数。

例如当 n = 2 n=2 n=2 时,写下 1 1 1 2 2 2。这样只出现了 1 1 1 个 “ 1 1 1”;当 n = 12 n=12 n=12 时,写下 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12。这样出现了 5 5 5 个 “ 1 1 1”。

时间限制:1 s
内存限制:64 MB

  • 输入
    正整数 n n n。( 1 ≤ n ≤ 10000 1 \le n \le 10000 1n10000
  • 输出
    一个正整数,即 “ 1 1 1” 的个数。
  • 样例输入
    12
    
  • 样例输出
    5
    

思路分析

此题考查循环结构,以及数位拆分,属于一般应用题。思路与 2021 2021 2021 6 6 6 月份考试的 T4 相似,难度略低,可以参考 2021 年 6 月青少年软编等考 C 语言一级真题解析中的 T4。

需要注意的是此题在数位拆分过程中不能使用 break,因为需要统计数字 1 1 1 出现的次数,而不是包含数字 “ 1 1 1” 的数的个数。

/*
 * Name: T5.cpp
 * Problem: 数 1 的个数
 * Author: Teacher Gao.
 * Date&Time: 2024/03/04 23:10
 */

#include <iostream>

using namespace std;

int main()
{
	int n;
    cin >> n;

    int tot = 0;
    for (int i = 1; i <= n; i++) {
        int t = i;
		while (t) {
			if (t % 10 == 1) {
				tot++;
			}
			t /= 10;
		}
    }

	cout << tot << endl;

	return 0;
}
  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朔北之忘 Clancy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值