考题一:输出整数
输入四个整数,把输入的第三、第四个整数输出。
时间限制:3000
内存限制:65536
输入
只有一行,四个整数,整数之间由一个空格分隔,整数是32位有符号位整数
输出
只有一行,两个整数,即输入的第三、第四个整数,以一个空格分隔
样例输入
12 34 56 789
样例输出
56 789
#include <iostream>
using namespace std;
int main() {
int nums[4];
// 读取输入的四个整数
for (int i = 0; i < 4; i++) {
cin >> nums[i];
}
// 输出第三个和第四个整数
cout << nums[2] << " " << nums[3] << endl;
return 0;
}
解析:
声明一个大小为4的整数数组
nums
。使用
for
循环依次读取输入的四个整数,存入数组中。输出数组中的第三个和第四个整数,以空格分隔,末尾加上一个换行符
\n
。
考题二:新冠疫情死亡率
2020年全世界爆发了新冠疫情,请根据某个国家报告的新冠确诊数和死亡数,计算新冠疫情在该国的死亡率。
时间限制:10000
内存限制:65536
输入
输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数
输出
输出仅一行,新冠死亡率,以百分数形式输出,精确到小数点后三位
样例输入
10433 60
样例输出
0.575%
提示
输出%可以使用print("%%");
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int confirmed, deaths;
// 读取输入的确诊数和死亡数
cin >> confirmed >> deaths;
// 计算死亡率
double mortalityRate = (double) deaths / confirmed * 100;
// 设置输出格式,保留三位小数,输出百分号
cout << fixed << setprecision(3) << mortalityRate << "%" << endl;
return 0;
}
解析:
声明两个整数变量
confirmed
和deaths
,用于存储输入的确诊数和死亡数。使用
cin
读取输入的确诊数和死亡数。计算死亡率,将死亡数除以确诊数,并乘以100。由于除法涉及到浮点数,需要将其中一个操作数转换为浮点数,这里将
deaths
转换为double
类型。使用
fixed
和setprecision
来设置输出格式,保留三位小数。使用
cout
输出死亡率,并添加百分号。
考题三:有一门课不及格的学生
给出一名学生的语文成绩和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)
时间限制:10000
内存限制:65536
输入
输入一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩
输出
若该生恰好有一门课不及格,输出1,否则输出0
样例输入
50 80
样例输出
1
#include <iostream>
using namespace std;
int main() {
int chinese, math;
// 读取输入的语文成绩和数学成绩
cin >> chinese >> math;
// 判断是否恰好有一门课不及格
if ((chinese < 60 && math >= 60) || (chinese >= 60 && math < 60)) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
return 0;
}
解析:
声明两个整数变量
chinese
和math
,用于存储输入的语文成绩和数学成绩。使用
cin
读取输入的语文成绩和数学成绩。使用条件语句判断是否恰好有一门课不及格。如果语文成绩小于60且数学成绩大于等于60,或者语文成绩大于等于60且数学成绩小于60,则表示恰好有一门课不及格。
如果条件成立,输出1;否则,输出0。
考题四:整数的个数
给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数,写程序计算给定k个正整数中,1,5和10出现的次数。
时间限制:10000
内存限制:65536
输入
输入有两行,第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。
输出
输出有三行,第一行为1出现的次数,第二行为5出现的次数,第三行为10出现的次数
样例输入
5
1 5 8 10 5
样例输出
1
2
1
#include <iostream>
using namespace std;
int main() {
int k;
int count1 = 0, count5 = 0, count10 = 0;
// 读取输入的k和k个正整数
cin >> k;
for (int i = 0; i < k; i++) {
int num;
cin >> num;
// 判断正整数出现的次数
if (num == 1) {
count1++;
} else if (num == 5) {
count5++;
} else if (num == 10) {
count10++;
}
}
// 输出1, 5和10出现的次数
cout << count1 << endl;
cout << count5 << endl;
cout << count10 << endl;
return 0;
}
解析:
声明一个整数变量
k
,用于存储输入的正整数的个数。声明三个整数变量
count1
、count5
和count10
,分别用于记录1、5和10出现的次数,初始化为0。使用
cin
读取输入的k。使用
for
循环读取k个正整数,并在循环中判断正整数的值,并相应地增加对应的计数器。使用
cout
输出1、5和10出现的次数,并在每次输出后换行。
考题五:金币
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币...种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。时间限制:10000
内存限制:65536
输入
一个整数(范围1到10000),表示天数
输出
骑士获得的金币数
样例输入
6
样例输出
14
#include <iostream>
using namespace std;
int main() {
int days;
// 读取输入的天数
cin >> days;
int coins = 0;
int count = 1; // 记录每个工资周期的天数
int salary = 1; // 工资周期的金币数
for (int i = 1; i <= days; i++) {
coins += salary;
count--;
if (count == 0) {
salary++;
count = salary;
}
}
cout << coins << endl;
return 0;
}
解析:
声明一个整数变量
days
,用于存储输入的天数。使用
cin
读取输入的天数。声明一个整数变量
coins
,用于记录骑士获得的金币数,初始化为0。声明两个整数变量
count
和salary
,分别用于记录每个工资周期的天数和金币数,初始化为1。使用
for
循环遍历每一天,从第一天开始计算骑士获得的金币数。在循环中,累加金币数,并将
count
减1。当count
等于0时,表示一个工资周期结束,需要增加salary
并将count
重新赋值为salary
。使用
cout
输出骑士获得的金币数。