青少年软件编程(C/C++)1级等级考试真题试卷(2024年6月)
第 1 题 问答题
奇迹
经典电影《阿甘正传》有句台词,说:“Miracles happen every day.”(奇迹每天都发生)。本题就请你直接在屏幕上输出这句话。
时间限制:1000
存限制:65535
输入
本题没有输入。
输出
在一行中输出 Miracles happen every day.。
样例输入
无
样例输出
Miracles happen every day.
//参考代码 1 C++
#include <iostream>
int main() {
// 输出字符串
std::cout << "Miracles happen every day." << std::endl;return 0;
}
//参考代码 2 C语言
#include <stdio.h>
int main() {
printf("Miracles happen every day.\n");
return 0;
}
第 2 题 问答题
九牛一毛
这是一道脑筋急转弯题:猪肉一斤 15 元,鸡肉一斤 20 元,那么一毛钱能买多少头牛?
案是:9 —— 因为“九牛一毛”。
本题就请你按照这个逻辑,计算一下 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
间限制:1000
内存限制:65536
输入
输入在一行中给出一个不超过 1000 的正整数 N,即以“元”为单位的货币量。
输出
在一行中顺序输出 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。三个数字都取整数,其间以 1 个空格分隔,行首尾不得有多余空格。
样例输入
18
样例输出
1 0 1620
//参考代码 1 C++
#include <bits/stdc++.h>
sing namespace std;
int main() {
int n;
cin>>n;
cout<<n/15<<" "<<n/20<<" "<<n*90;
}
//参考代码 2 C语言
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
// 计算能买到的猪肉斤数
int pork = N / 15;scanf("%d", &N);
// 计算能买到的鸡肉斤数
// 注意,如果买完猪肉后还有剩余的钱,才考虑买鸡肉
int chicken = (N - pork * 15) / 20;
// 计算能买到的牛的数量
// 使用“九牛一毛”的逻辑,即 1 毛钱可以买 9 头牛
// 因此 N 元(即 10*N 毛钱)可以买 9*10*N 头牛,但结果需要取整数
nt cows = (N * 10) * 9; // 先算出理论上能买到的牛的数量,然后再取整
// 输出结果
printf("%d %d %d\n", pork, chicken, cows);
return 0;
}
第 3 题 问答题
A除以B
给定两个绝对值不超过 100 的整数 A 和 B,要求你按照“A/B=商”的格式输出结果。
间限制:1000
内存限制:65536
输入
输入在第一行给出两个整数 A 和 B(-100 ≤ A, B ≤ 100),数字间以空格分隔。
输出
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为“Error”。输出的商应保留小数点后2位。
样例输入
样例1:
-1 2
样例2:
1 -3
样例3:
5 0
样例输出
样例1:
-1/2=-0.50
样例2:
1/(-3)=-0.33
样例3:
5/0=Error
```cpp
//参考代码1 C语言
#include <stdio.h>
int main(void) //如果不需要从命令行中获取参数,请用int main(void);
{
int a,b;
scanf("%d %d",&a,&b);
if(b>0){
printf("%d/%d=%.2f",a,b,a*1.0/b);
}else if(b<0){
printf("%d/(%d)=%.2f",a,b,a*1.0/b);
}else if(b==0){
printf("%d/%d=Error",a,b);
}
return 0;
}
//参考代码2 C语言
#include <stdio.h>
int main() {
int A, B;
scanf("%d %d", &A, &B);
if (B == 0) {
printf("%d/0=Error\n", A);
} else {
if (A % B == 0) {
printf("%d/%d=%d.00\n", A, B, A / B);
} else {
if (B < 0) {
printf("%d/(%d)=%.2f\n", A, B, (float)A / B);
} else {
printf("%d/%d=%.2f\n", A, B, (float)A / B);
}
}
}
return 0;
}
第 4 题 问答题
进化论
在“一年一度喜剧大赛”上有一部作品《进化论》,讲的是动物园两只猩猩进化的故事。猩猩吕严说自己已经进
化了 9 年了,因为“三年又三年”。猩猩土豆指出“三年又三年是六年呐”……
本题给定两个数字,以及用这两个数字计算的结果,要求你根据结果判断,这是吕严算出来的,还是土豆算出来的。
时间限制:1000
内存限制:65535
输入
输入第一行给出一个正整数 N,随后 N 行,每行给出三个正整数 A、B 和 C。其中 C 不超过 10000,其他三
个数字都不超过 100。
输出
对每一行给出的三个数,如果 C 是 A×B,就在一行中输出 Lv Yan;如果是 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!
//参考代码1 C++
#include <iostream>
using namespace std;
void solve()
{
int a , b , c;
cin >> a >> b >> c;
if(c == a*b)
cout << "Lv Yan" << endl;
else if(c == a+b)
cout << "Tu Dou" << endl;
else
cout << "zhe du shi sha ya!" << endl;
}
int main()
{
int T;
cin >> T;
while(T--)
solve();
return 0;
}
//参考代码2 C语言
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int A, B, C;
scanf("%d %d %d", &A, &B, &C);
if (C == A * B) {
printf("Lv Yan\n");
} else if (C == A + B) {
printf("Tu Dou\n");
} else {
printf("zhe du shi sha ya!\n");
}
}
return 0;
}
5 题 问答题
药房管理(2024年6月)
随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已 知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒 绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
时间限制:1000
内存限制:65536
输入
共3行 第一行是每天开始时的药品总量m 第二行是这一天取药的人数n(0 < n <= 100) 第三行共有n个数,
分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),两数之间以空格分隔
输出
只有1行,为这一天没有取上药品的人数。
答案
样例输入
30
6
10 5 20 6 7 8
样例输出
2
//C++答案
#include <iostream>
using namespace std;
int main() {
int i = 0, m, n, x, s = 0;
cin >> m >> n;
while (n--) {
cin >> x;
s = s + x;
if (s > m) {
i++;
s = s - x;
}
}
cout << i;
return 0;
}
//C语言答案
#include <stdio.h>
int main() {
int m, n;
scanf("%d", &m); // 每天开始时的药品总量
scanf("%d", &n); // 取药的病人数
int patients[n];
for (int i = 0; i < n; i++) {
scanf("%d", &patients[i]); // 记录每个病人希望取走的药品数量
}
int unsatisfied = 0; // 没有取到药品的病人数量
for (int i = 0; i < n; i++) {
if (patients[i] > m) {
unsatisfied++;
} else {
m -= patients[i];
}
}
printf("%d\n", unsatisfied);
return 0;
}