蓝桥等考C++组别十六级
第一部分:选择题
1、
C++ L16 (
15
分)
关于结构体,以下说法正确的是( )。
A
.
结构体的成员变量必须是相同类型的
B.
可以用结构体类型声明变量,但是不能声明结构体数组
C.
结构体类型可以嵌套其它结构体类型的成员
D.
结构体变量的名称可以和定义此变量的结构体类型的名称相同(改
:结构体变量不能直接赋值给另外一个结构体变量
)
正确答案:C
2
、C++ L16 (
15
分)
关于计算机文件,以下说法正确的是( )。
A
.
文件名中不能包含空格
B.
在
Unix系统里
文件名区分大小写
C.
文件名通配符
“*”表示其所在的位置可以是任意一个字符
D.
在
Windows
系统里,一个目录下可以同时存在
a
.txt
和
A
.txt
两个文件
正确答案:
B
3
、C++ L16 (20分)
关于C++中的指针,以下说法正确的是( )。
A
.
可以通过
P
*
来间接访问指针变量
P
所指向的数据内容
B.
指针变量执行
p
++
,表示
p
指向下一个字节,而不是加
1
C.
数组名实际上是指向数组的首地址
D.
指针作为函数的参数,实际传递的是指针所指向的变量的值
正确答案:
C
第二部分:编程题
4、
C++ L16
成绩统计(
2
0分)
题目名称:
成绩统计
题目描述:
在一次考试中,知道了每个学生的学号及语文、数学和英语三科的成绩,要求按输入顺序输出学生的学号和总成绩。
输入:
第1行有1个整数,表示学生的人数n(1≤n≤100)。
其后有n行数据,每行包括
4
个正整数,分别表示学号、语文、数学和英语三科的成绩(不大于1
50
),每两个数中间用一个空格分隔。
输出:
共n行,
每行包含两个整数,分别是学生的学号和总成绩,中间用单个空格分隔。
输入样例:
3
100001 90 80 70
100002 93 99 100
100003 89 91 69
输出样例:
100001 240
100002 292
100003 249
参考程序:
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100;
struct Score{
int sn;
int c;
int m;
int e;
int total;
} score[N + 1];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> score[i].sn >> score[i].c >> score[i].m >> score[i].e;
score[i].total = score[i].c + score[i].m + score[i].e;
}
for (int i = 0; i < n; i++)
{
cout << score[i].sn << " " << score[i].total << endl;
}
return 0;
}
测试数据:
1.in
3
100001 90 80 70
100002 93 99 100
100003 89 91 69
1.out
100001 240
100002 292
100003 249
2.in
5
705593 112 122 95
705594 92 111 139
705595 88 90 73
705596 50 116 126
705597 73 80 125
2.out
705593 329
705594 342
705595 251
705596 292
705597 278
余下略
5、
C++ L16
成绩排序(
3
0分)
题目名称:
成绩排序
题目描述:
给出班里一次考试的成绩单,成绩单上包含所有学生的学号和总成绩。请你按每个学生的总成绩从高到低对成绩单进行排序,如果成绩相同,则学号小的排在前面。
输入:
第一行是一个正整数n (0 < n < 100),表示成绩单里的人数;
接下来的n行,每行包含两个正整数,分别为每个学生的学号(不大于999999)和总成绩(不大于450), 中间用一个空格隔开。
题目数据保证学号不重复。
输出:
n行,是将成绩单按总成绩从高到低的顺序进行排序的结果,每行包含学号和总成绩两项,之间有一个空格。
输入样例:
3
100001 240
100002 292
100003 249
输出样例:
100002 292
100003 249
100001 240
参考程序:
#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
100001 240
100002 292
100003 249
1.out
100002 292
100003 249
100001 240
2.in
8
375359 437
375360 370
375361 264
375362 357
375363 368
375364 439
375365 296
375366 157
2.out
375364 439
375359 437
375360 370
375363 368
375362 357
375365 296
375361 264
375366 157
3.in
24
591546 229
591547 408
591548 290
591549 224
591550 239
591551 182
591552 250
591553 288
591554 185
591555 185
591556 268
591557 406
591558 446
591559 385
591560 166
591561 302
591562 326
591563 351
591564 390
591565 336
591566 391
591567 190
591568 204
591569 383
3.out
591558 446
591547 408
591557 406
591566 391
591564 390
591559 385
591569 383
5
蓝桥杯青少组C++组别16级编程练习真题(第1套,共6套)