蓝桥等考C++组别十六级
第一部分:选择题
1、
C++ L16 (
15
分)
关于结构体,以下说法正确的是( )。
A
.
结构体的成员变量默认可以在结构体外部访问
B.
结构体的成员变量
不能是
结构体类型
C.
结构体类型的变量不能充当函数的参数
D.
当结构体的成员变量含有数组时,不能直接对结构体变量进行赋值
正确答案:A
2
、C++ L16 (
15
分)
“a
*
.
???
”可以匹配以下哪个文件?( )
A
.
a
bc.html
B. books.txt
C.
a
.docx
D.
a
_001.bat
正确答案:
D
3
、C++ L16 (20分)
阅读下面的代码,要依次输出数组a的元素,下划线处填写正确的是( )。
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
for (int i = 0; i < 5; i++)
{
cout << _________ << ' ';
}
A
.
*(p++)
B.
*p[i]
C.
*(a++)
D.
p++
正确答案:A
第二部分:编程题
4、
C++ L16
考试(
2
0分)
题目名称:
考试
题目描述:
某考试成绩计算方式为:综合成绩=笔试成绩(满分5
0
分
)
+面试成绩(满分
35
分
)
+专业科目成绩(满分
15
分
)
,现给出几位考生的单项成绩,要求按输入顺序输出考生的考号和综合成绩。
输入:
第1行有1个整数,表示考生的人数n(1≤n≤100)。
接下来有n行,每行包
含4
个正整数,分别表示考生考号、笔试成绩(<
=
5
0)
、面试成绩(<
=35)
和专业科目成绩(<
=15)
,两数之间用一个空格分隔。
输出:
共n行,每行包含两个整数,分别是考生的考号和综合成绩,两数之间用一个空格分隔。
输入样例:
3
100004 50 20 15
100006 45 26 8
100007 42 29 14
输出样例:
100004 85
100006 79
100007 85
参考程序:
#include<iostream>
using namespace std;
const int N = 1000;
struct Score{
int sn;
int score1;
int score2;
int score3;
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].total = points[i].score1 + points[i].score2 + points[i].score3;
}
for (int i = 0; i < n; i++)
{
cout << points[i].sn << " " << points[i].total << endl;
}
return 0;
}
测试数据:
1.in
3
100004 50 20 15
100006 45 26 8
100007 42 29 14
1.out
100004 85
100006 79
100007 85
余下略
5、
C++ L16
考试成绩单(
3
0分)
题目名称:
考试成绩单
题目描述:
某考试成绩计算方式为:综合成绩=笔试成绩(满分5
0
分
)
+面试成绩(满分
35
分
)
+专业科目成绩(满分
15
分
)
,现给出几位考生的单项成绩,要求按综合成绩从高到低的顺序输出考生的考号和综合成绩。如果综合成绩相同,就将考号小的排在前面。
输入:
第1行有1个整数,表示考生的人数n(1≤n≤100)。
接下来有n行,每行包
含4
个正整数,分别表示考生考号、笔试成绩(<
=
5
0)
、面试成绩(<
=35)
和专业科目成绩(<
=15)
,两数之间用一个空格分隔。
数据保证考号不相同。
输出:
共n行,
每行包含两个整数,分别是考生的考号和综合成绩,两数之间用一个空格分隔。
输入样例:
3
100004 50 20 15
100006 45 26 8
100007 42 29 14
输出样例:
100004 85
100007 85
100006 79
参考程序:
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100;
struct Score{
int sn;
int score1;
int score2;
int score3;
int total;
} points[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 >> points[i].sn >> points[i].score1 >> points[i].score2 >> points[i].score3;
points[i].total = points[i].score1 + points[i].score2 + points[i].score3;
}
sort(points, points + n, cmp);
for (int i = 0; i < n; i++)
{
cout << points[i].sn << " " << points[i].total << endl;
}
return 0;
}
测试数据:
1.in
3
100004 50 20 15
100006 45 26 8
100007 42 29 14
1.out
100004 85
100007 85
100006 79
余下略
蓝桥杯青少组C++组别16级编程练习真题(第4套,共6套)