中学生 NOI C++入门题目
一个适合中学生NOI(全国青少年信息学奥林匹克竞赛)比赛的C++编程题目入门示例。 这个题目涉及到基本的算法和数据结构,适合初学者练习。
题目:计算数字的平均值
问题描述:
给定一组整数,计算它们的平均值,并找出大于平均值的整数的数量。
输入:
第一行包含一个整数n(1 <= n <= 100),表示整数的数量。
接下来的一行包含n个整数,每个整数都在-100到100之间。
输出:
第一行输出平均值(保留两位小数)。
第二行输出大于平均值的整数的数量。
示例输入:
5
12 7 3 15 9
示例输出
9.20
3
编程要求:
请使用C++编写一个程序,读取输入数据并计算平均值以及大于平均值的整数数量。然后输出结果。
这个题目可以帮助学生练习基本的输入/输出操作,循环和条件语句的使用,以及基本的数学运算。同时,它也可以帮助他们熟悉C++的语法和编程环境。如果需要更多的编程题目,可以考虑扩展这个题目或查找其他类似的问题。
参考实现代码
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> numbers(n);
int sum = 0;
for (int i = 0; i < n; ++i) {
cin >> numbers[i];
sum += numbers[i];
}
double average = static_cast<double>(sum) / n;
int countAboveAverage = 0;
for (int i = 0; i < n; ++i) {
if (numbers[i] > average) {
countAboveAverage++;
}
}
cout << fixed;
cout.precision(2);
cout << average << endl;
cout << countAboveAverage << endl;
return 0;
}
这段代码首先读取整数的数量n,然后使用一个vector来存储输入的整数。接着,它计算这些整数的总和,然后通过总和除以n来计算平均值。最后,它遍历整数数组,计算大于平均值的整数数量,并将结果输出到标准输出。
你可以将这段代码复制到C++编译器中进行编译和运行,以查看它的工作方式并测试不同的输入。希望这有助于你练习编程和理解基本的C++编程概念。
其他入门题目
题目1:计算阶乘
问题描述:
给定一个正整数n,计算n的阶乘。
输入:
一个正整数n(1 <= n <= 10)。
输出:
n的阶乘。
示例输入:
5
示例输出:
120
题目2:查找最大元素
问题描述:
给定一组整数,找出其中的最大元素。
输入:
第一行包含一个整数n(1 <= n <= 100),表示整数的数量。
接下来的一行包含n个整数,每个整数都在-100到100之间。
输出:
最大的整数。
示例输入:
7
12 7 3 15 9 21 8
示例输出:
21
题目3:数字反转
问题描述:
给定一个正整数,将其各位数字反转。
输入:
一个正整数x(1 <= x <= 10^9)。
输出:
x的各位数字反转后的结果。
示例输入:
12345
示例输出:
54321
这些题目涵盖了一些基本的算法和数据结构概念,包括循环、条件语句和基本的数学运算。它们可以帮助学生巩固C++编程基础和解决问题的能力。你可以使用这些题目作为练习,或者根据需要进行扩展和修改,以满足学生的需求和挑战级别
参考实现代码
题目1:计算阶乘
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int factorial = 1;
for (int i = 1; i <= n; ++i) {
factorial *= i;
}
cout << factorial << endl;
return 0;
}
题目2:查找最大元素
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> numbers(n);
for (int i = 0; i < n; ++i) {
cin >> numbers[i];
}
int maxNumber = numbers[0];
for (int i = 1; i < n; ++i) {
if (numbers[i] > maxNumber) {
maxNumber = numbers[i];
}
}
cout << maxNumber << endl;
return 0;
}
题目3:数字反转
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
int reversed = 0;
while (x > 0) {
reversed = reversed * 10 + x % 10;
x /= 10;
}
cout << reversed << endl;
return 0;
}