2024年06月中国电子学会青少年软件编程(C/C++)等级考试试卷(一级)真题 + 答案

青少年软件编程(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;
}

### 电子学会 C++ 一级 考试试题 #### 题目背景 针对电子学会中小学生软件编程C++等级考试一级试题,这些题目旨在考察学生对于基础语法的理解以及基本程序设计能力。这类测试通常会涉及变量定义、输入输出操作、条件判断、循环结构等内容。 #### 示例试题展示 ##### 输入描述 给定的第一行为一个正整数 \(N\) (表示后续有几组数据),之后的每一行包含三个由空格隔开的正整数\(A\), \(B\), 和 \(C\)【注意】这里所有的数值范围都有限制:\(N \leqslant 10000,\ A,B,C \leqslant 100\) 【此部分来源于特定考题设定[^3]】 ##### 输出要求 对于每一对输入的数据\(A, B, C\),计算并打印出它们之间的某种关系或结果(具体的任务取决于实际考题的要求)。例如可以是比较大小后的最大值最小值,也可以是基于这三个数字的一些简单算术运算的结果等。 ##### 参考代码实现 下面是一个简单的例子来说明如何处理上述类型的输入: ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 获取有多少组数据 while(n--) { // 循环n次 int a, b, c; cin >> a >> b >> c; // 对于每次迭代读取一组abc // 这里可以根据具体需求添加不同的逻辑处理 cout << "The sum is: " << a + b + c << endl; // 假设我们只是求和作为示范 } return 0; } ``` 该段代码展示了如何接收多组输入,并对每组数据执行相同的操作——这里是简单的加总后输出。当然真实的考试可能会让考生完成更复杂的任务,比如比较大小、分类讨论或是应用某些特定算法等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

伶俐角少儿编程

伶俐角少儿编程公众号~

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

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

打赏作者

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

抵扣说明:

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

余额充值