蓝桥等考C++组别十六级
第一部分:选择题
1、
C++ L16 (
15
分)
已定义结构体:
struct Student{
int sn;
string name;
int age;
double height;
double weight;
};
在以下代码中,不正确的是( )。
Student stu1 = {1111, "Xiaozhi", 11, 1.32, 39.5};
Student sut2(1111, "Xiaozhi", 11, 1.32, 39.5);
Student stu3 = {};
Student stu4 = stu1;
A
.
Student stu1 = {1111, "Xiaozhi", 11, 1.32, 39.5};
B.
Student sut2(1111, "Xiaozhi", 11, 1.32, 39.5);
C.
Student stu3 = {};
D.
Student stu4 = stu1;
正确答案:B
2
、C++ L16 (
15
分)
以下说法正确的是( )。
A
.
通过
文件名可以判断出它是否是文本文件
B.
目录的名称不能和它的子目录
名称
相同
C.
文件名通配符
“*”表示其可以是零个或多个字符
D.
在
Windows
系统里,只有一个根目录
“/”
正确答案:C
3
、C++ L16 (20分)
以下说法正确的是( )。
A
.
可以通过
&p
来间接访问指针变量
p
所指向的数据内容
B.
指针变量里面存放变量的地址,指针变量里面的值初始化之后不可改变
C.
定义为指向
int
型变量的指针,可以指向
double
类型的变量
D.
C++
中,通过函数名称可以获取到函数的地址
正确答案:D
第二部分:编程题
4、
C++ L16
美食烹饪大赛(
2
0分)
题目名称:
美食烹饪大赛
题目描述:
某电视台举办的美食烹饪大赛中,各位评委根据味感、质感、观感和营养卫生这四个考核项目给参赛选手打分。现在给定了几位选手的各项得分,要求按输入顺序输出选手的编号和总分。
输入:
第1行有1个整数,表示参赛选手的人数n(1≤n≤100)。
接下来有n行,每行包含
5
个正整数,分别表示选手编号以及味感、质感、观感和营养卫生这四个项目的得分(总分不大于1
00
),两数之间用一个空格分隔。
输出:
共n行,
每行包含两个整数,分别是选手编号和总分,两数之间用一个空格分隔。
输入样例:
3
1 27 20 30 7
2 25 26 28 8
3 22 29 24 9
输出样例:
1 84
2 87
3 84
参考程序:
#include<iostream>
using namespace std;
const int N = 100;
struct Score{
int sn;
int score1;
int score2;
int score3;
int score4;
int total;
} points[N + 1];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> points[i].sn >> points[i].score1 >> points[i].score2 >> points[i].score3 >> points[i].score4;
points[i].total = points[i].score1 + points[i].score2 + points[i].score3 + points[i].score4;
}
for (int i = 0; i < n; i++)
{
cout << points[i].sn << " " << points[i].total << endl;
}
return 0;
}
测试数据:
1.in
3
1 27 20 30 7
2 25 26 28 8
3 22 29 24 9
1.out
1 84
2 87
3 84
余下略
5、
C++ L16
美食烹饪大赛
排名
(
3
0分)
题目名称:
美食烹饪大赛排名
题目描述:
某电视台举办美食烹饪大赛,现在给定了几位选手的选手编号和总分,要求按总分从高到低的顺序输出选手的编号和总分,如果总分相同,就将选手编号小的排在前面。
输入:
第1行有1个整数,表示参赛选手的人数n(1≤n≤1
0
0)。
接下来有n行数据,每行包
含2
个正整数,分别表示选手编号和总分(总分不大于1
00
),两数之间用一个空格分隔。
输出:
共n行,
每行包含两个整数,分别是选手编号和总分,两数之间用一个空格分隔。
输入样例:
3
1 84
2 87
3 84
输出样例:
2 87
1 84
3 84
参考程序:
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100;
struct Score{
int sn;
int total;
} score[N + 1];
bool cmp(Score a, Score b)
{
if(a.total != b.total)
return a.total > b.total;
return a.sn < b.sn;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> score[i].sn >> score[i].total;
}
sort(score, score + n, cmp);
for (int i = 0; i < n; i++)
{
cout << score[i].sn << " " << score[i].total << endl;
}
return 0;
}
测试数据:
1.in
3
1 84
2 87
3 84
1.out
2 87
1 84
3 84
余下略
蓝桥杯青少组C++组别16级编程练习真题(第3套,共6套)