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

T1. 奇迹

题目链接:SOJ D1268

经典电影《阿甘正传》有句台词,说:“Miracles happen every day.”(奇迹每天都发生)。本题就请你直接在屏幕上输出这句话。

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

  • 输入
    本题没有输入。
  • 输出
    在一行中输出 Miracles happen every day.
  • 样例输入
  • 样例输出
    Miracles happen every day.
    

思路分析

此题考查基本输出,属于入门题。

按照题目要求输出即可。

/*
 * Name: T1.cpp
 * Problem: 奇迹
 * Author: Teacher Gao.
 * Date&Time: 2025/01/14 17:04
 */

#include <iostream>

using namespace std;

int main()
{
    cout << "Miracles happen every day." << endl;

    return 0;
}

T2. 九牛一毛

题目链接:SOJ D1269

这是一道脑筋急转弯题:猪肉一斤 15 15 15 元,鸡肉一斤 20 20 20 元,那么一毛钱能买多少头牛?

答案是: 9 9 9 —— 因为 “九牛一毛”。

本题就请你按照这个逻辑,计算一下 N N N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。

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

  • 输入
    输入在一行中给出一个不超过 1000 1000 1000 的正整数 N N N,即以 “元” 为单位的货币量。
  • 输出
    在一行中顺序输出 N N N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。三个数字都取整数,其间以 1 1 1 个空格分隔,行首尾不得有多余空格。
  • 样例输入
    18
    
  • 样例输出
    1 0 1620
    

思路分析

此题考查算术运算,属于入门题。

猪肉的数量为 ⌊ n / 15 ⌋ \lfloor n/15\rfloor n/15,鸡肉的数量为 ⌊ n / 20 ⌋ \lfloor n/20\rfloor n/20,牛的数量为 n × 10 × 9 n\times 10\times 9 n×10×9。向下取整可以通过将 n n n 声明为整型来自动完成。

/*
 * Name: T2.cpp
 * Problem: 九牛一毛
 * Author: Teacher Gao.
 * Date&Time: 2025/01/14 17:05
 */

#include <iostream>

using namespace std;

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

    cout << n / 15 << " " << n / 20 << " " << n * 10 * 9 << endl;

    return 0;
}

T3. A 除以 B

题目链接:SOJ D1270

给定两个绝对值不超过 100 100 100 的整数 A A A B B B,要求你按照 A/B=商 的格式输出结果。

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

  • 输入
    输入在第一行给出两个整数 A A A B B B − 100 ≤ A , B ≤ 100 -100 ≤ A, B ≤ 100 100A,B100),数字间以空格分隔。
  • 输出
    在一行中输出结果:如果分母是正数,则输出 A/B=商;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为 Error。输出的商应保留小数点后 2 2 2 位。
  • 样例输入 1
    -1 2
    
  • 样例输出 1
    -1/2=-0.50
    
  • 样例输入 2
    1 -3
    
  • 样例输出 2
    1/(-3)=-0.33
    
  • 样例输入 3
    5 0
    
  • 样例输出 3
    5/0=Error
    

思路分析

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

按照题目要求进行判断并输出即可,对于小数商的计算,可以使用 1.0 * a / b 来自动完成类型转换。

/*
 * Name: T3.cpp
 * Problem: A 除以 B
 * Author: Teacher Gao.
 * Date&Time: 2025/01/14 17:07
 */

#include <cstdio>

using namespace std;

int main()
{
    int a, b;
    scanf("%d%d", &a, &b);

    if (b == 0) {
        printf("%d/%d=Error\n", a, b);
    }
    else if (b < 0) {
        printf("%d/(%d)=%.2lf\n", a, b, 1.0 * a / b);
    }
    else {
        printf("%d/%d=%.2lf\n", a, b, 1.0 * a / b);
    }

    return 0;
}

T4. 进化论

题目链接:SOJ D1271

在 “一年一度喜剧大赛” 上有一部作品《进化论》,讲的是动物园两只猩猩进化的故事。猩猩吕严说自己已经进化了 9 9 9 年了,因为 “三年又三年”。猩猩土豆指出 “三年又三年是六年呐” ……

本题给定两个数字,以及用这两个数字计算的结果,要求你根据结果判断,这是吕严算出来的,还是土豆算出来的。

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

  • 输入
    输入第一行给出一个正整数 N N N,随后 N N N 行,每行给出三个正整数 A A A B B B C C C。其中 C C C 不超过 10000 10000 10000,其他三个数字都不超过 100 100 100
  • 输出
    对每一行给出的三个数,如果 C C C A × B A×B A×B,就在一行中输出 Lv Yan;如果是 A + B A+B A+B,就在一行中输出 Tu Dou;如果都不是,就在一行中输出 zhe du shi sha ya!
  • 样例输入
    3
    3 3 9
    3 3 6
    3 3 12
    
  • 样例输出
    Lv Yan
    Tu Dou
    zhe du shi sha ya!
    

思路分析

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

对于输入的每组 a , b , c a,b,c a,b,c,按照题目要求进行判断输出即可。

/*
 * Name: T4.cpp
 * Problem: 进化论
 * Author: Teacher Gao.
 * Date&Time: 2025/01/14 17:10
 */

#include <iostream>

using namespace std;

int main()
{
    int n, a, b, c;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a >> b >> c;
        if (a * b == c) {
            cout << "Lv Yan\n";
        }
        else if (a + b == c) {
            cout << "Tu Dou\n";
        }
        else {
            cout << "zhe du shi sha ya!\n";
        }
    }

    return 0;
}

T5. 药房管理

题目链接:SOJ D1042

随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。

对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。

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

  • 输入
    3 3 3 行:
    1 1 1 行是每天开始时的药品总量 m m m
    2 2 2 行是这一天取药的人数 n n n 0 < n ≤ 100 0 < n \le 100 0<n100
    3 3 3 行共有 n n n 个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),两数之间以空格分隔。
  • 输出
    只有 1 1 1 行,为这一天没有取上药品的人数。
  • 样例输入
    30
    6
    10 5 20 6 7 8
    
  • 样例输出
    2
    

思路分析

此题考查循环结构,以及分支结构判断大小关系,药房管理的故事背景让此题难度略有提升,属于一般应用题。

此题需要设置一个计数器变量 t o t tot tot 来统计没有取上药的病人数。依次输入每个病人取药的数量 x x x,然后检测药房中的库存量 m m m 是否足够,即 m m m 是否大于等于 x x x。若 m < x m < x m<x,说明药房的库存不够,则拒绝该病人的请求,计数器 t o t tot tot 1 1 1。否则,取出数量为 x x x 的药给该病人,即库存 m m m 减少 x x x

/*
 * Name: T5.cpp
 * Problem: 药房管理
 * Author: Teacher Gao.
 * Date&Time: 2024/03/03 14:00
 */

#include <iostream>

using namespace std;

int main()
{
	int m, n, x, tot = 0;
	cin >> m >> n;

	for (int i = 1; i <= n; i++) {
		cin >> x;
		if (x > m) {
			tot++;
		}
		else {
			m -= x;
		}
	}

	cout << tot << endl;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南朔 Clancy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值