Skip to main content

实验5 数组及其应用

本实验共 7 个子实验题目。每题含:题目、输入格式、输出格式、样例、6 组测试数据(输入/输出)以及 C 语言参考代码。

实验内容1 成绩统计​

一、题目​

输入 n 名学生的成绩(整数),输出平均分(保留两位小数)、最高分、最低分, 以及高于平均分的人数。

二、输入格式​

第一行一个整数 n(1 ≤ n ≤ 100);第二行 n 个整数,表示成绩,用空格分隔。

三、输出格式​

输出四行: 第一行为平均分(保留 2 位小数); 第二行为最高分; 第三行为最低分; 第四行为高于平均分的人数。

四、样例​

输入:

5
80 90 70 60 100

输出:

80.00
100
60
2

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
5
80 90 70 60 100
  • 输出:
80.00
100
60
2

第 2 组

  • 输入:
3
50 50 50
  • 输出:
50.00
50
50
0

第 3 组

  • 输入:
6
88 92 75 60 99 81
  • 输出:
82.50
99
60
3

第 4 组

  • 输入:
1
100
  • 输出:
100.00
100
100
0

第 5 组

  • 输入:
4
0 0 0 0
  • 输出:
0.00
0
0
0

第 6 组

  • 输入:
10
95 85 75 65 55 45 35 25 15 5
  • 输出:
50.00
95
5
5

实验内容2 整数升序排序​

一、题目​

输入 n 个整数,将其按升序排列后输出(相邻两数用空格分隔)。

二、输入格式​

第一行一个整数 n(1 ≤ n ≤ 100);第二行 n 个整数,用空格分隔。

三、输出格式​

输出一行:升序排列后的 n 个整数,用空格分隔。

四、样例​

输入:

5
5 3 8 1 2

输出:

1 2 3 5 8

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
5
5 3 8 1 2
  • 输出:
1 2 3 5 8

第 2 组

  • 输入:
3
9 9 1
  • 输出:
1 9 9

第 3 组

  • 输入:
6
-3 0 4 -1 2 7
  • 输出:
-3 -1 0 2 4 7

第 4 组

  • 输入:
1
42
  • 输出:
42

第 5 组

  • 输入:
10
10 9 8 7 6 5 4 3 2 1
  • 输出:
1 2 3 4 5 6 7 8 9 10

第 6 组

  • 输入:
4
2 2 1 3
  • 输出:
1 2 2 3

实验内容3 有序数组二分查找​

一、题目​

输入一个升序排列的整数数组和一个目标值 x,用二分查找返回 x 在数组中的位置 (0 基下标);若不在数组中则输出 -1。

二、输入格式​

第一行一个整数 n(1 ≤ n ≤ 100); 第二行 n 个升序整数,用空格分隔; 第三行一个整数 x,为查找目标。

三、输出格式​

输出一行一个整数:x 的下标(从 0 开始),未找到则输出 -1。

四、样例​

输入:

5
1 3 5 7 9
5

输出:

2

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
5
1 3 5 7 9
5
  • 输出:
2

第 2 组

  • 输入:
6
2 4 6 8 10 12
6
  • 输出:
2

第 3 组

  • 输入:
5
1 2 3 4 5
99
  • 输出:
-1

第 4 组

  • 输入:
1
7
7
  • 输出:
0

第 5 组

  • 输入:
7
10 20 30 40 50 60 70
40
  • 输出:
3

第 6 组

  • 输入:
4
-5 -2 0 3
-2
  • 输出:
1

实验内容4 字符统计​

一、题目​

输入一行字符(可能包含空格),统计其中字母、数字、空格以及其他字符的个数并输出。

二、输入格式​

输入一行字符串(长度不超过 200),以换行结束。

三、输出格式​

输出一行四个整数,依次为:字母个数、数字个数、空格个数、其他字符个数,用空格分隔。

四、样例​

输入:

Hello World 123!

输出:

10 3 2 2

五、提示​

读入含空格的一行请用 fgets(s, sizeof(s), stdin)。

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
Hello World 123!
  • 输出:
10 3 2 2

第 2 组

  • 输入:
abc
  • 输出:
3 0 0 1

第 3 组

  • 输入:
a1 b2 c3
  • 输出:
3 3 2 1

第 4 组

  • 输入:
@#$
  • 输出:
0 0 2 4

第 5 组

  • 输入:
Abc123 XyZ
  • 输出:
6 3 1 1

第 6 组

  • 输入:
  • 输出:
0 0 0 1

实验内容5 矩阵转置​

一、题目​

输入一个 m 行 n 列的矩阵,输出它的转置矩阵(行列互换)。

二、输入格式​

第一行两个整数 m、n(均 ≤ 20),用空格分隔; 接下来 m 行,每行 n 个整数,用空格分隔,表示矩阵。

三、输出格式​

输出 n 行,每行 m 个整数(转置后),整数之间用空格分隔。

四、样例​

输入:

2 3
1 2 3
4 5 6

输出:

1 4
2 5
3 6

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
2 3
1 2 3
4 5 6
  • 输出:
1 4
2 5
3 6

第 2 组

  • 输入:
3 3
1 2 3
4 5 6
7 8 9
  • 输出:
1 4 7
2 5 8
3 6 9

第 3 组

  • 输入:
1 4
1 2 3 4
  • 输出:
1
2
3
4

第 4 组

  • 输入:
3 1
10
20
30
  • 输出:
10 20 30

第 5 组

  • 输入:
2 2
0 1
1 0
  • 输出:
0 1
1 0

第 6 组

  • 输入:
4 2
1 2
3 4
5 6
7 8
  • 输出:
1 3 5 7
2 4 6 8

实验内容6 杨辉三角​

一、题目​

输入正整数 n,输出杨辉三角的前 n 行。第 i 行有 i 个数,首尾为 1,其余为上一行相邻两数之和; 每行数字用空格分隔。

二、输入格式​

输入一行一个正整数 n(1 ≤ n ≤ 20)。

三、输出格式​

输出 n 行:第 i 行输出 i 个整数,用空格分隔,表示杨辉三角第 i 行。

四、样例​

输入:

5

输出:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
5
  • 输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

第 2 组

  • 输入:
1
  • 输出:
1

第 3 组

  • 输入:
7
  • 输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

第 4 组

  • 输入:
3
  • 输出:
1
1 1
1 2 1

第 5 组

  • 输入:
10
  • 输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

第 6 组

  • 输入:
8
  • 输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1

实验内容7 班级成绩分析​

一、题目​

输入 5 名学生各 3 门课程(语文、数学、英语)的成绩, 输出每名学生的学习总分与平均分(平均分保留 1 位小数,按学生顺序), 最后输出三门课程各自的平均分(保留 1 位小数)。

二、输入格式​

输入 5 行,每行三个整数,分别表示一名学生的语文、数学、英语成绩,用空格分隔。

三、输出格式​

输出 5 行:每行一个学生的“总分 平均分”(平均分保留 1 位小数); 最后一行输出三个实数:语文、数学、英语三门课的平均分(均保留 1 位小数),用空格分隔。

四、样例​

输入:

80 90 70
60 75 85
90 95 88
70 65 60
85 80 90

输出:

240 80.0
220 73.3
273 91.0
195 65.0
255 85.0
77.0 81.0 78.6

六、测试数据(6 组,输入 / 输出)​

第 1 组

  • 输入:
80 90 70
60 75 85
90 95 88
70 65 60
85 80 90
  • 输出:
240 80.0
220 73.3
273 91.0
195 65.0
255 85.0
77.0 81.0 78.6

第 2 组

  • 输入:
100 100 100
90 90 90
80 80 80
70 70 70
60 60 60
  • 输出:
300 100.0
270 90.0
240 80.0
210 70.0
180 60.0
80.0 80.0 80.0

第 3 组

  • 输入:
50 60 70
55 65 75
60 70 80
65 75 85
70 80 90
  • 输出:
180 60.0
195 65.0
210 70.0
225 75.0
240 80.0
60.0 70.0 80.0

第 4 组

  • 输入:
88 92 75
60 99 81
77 63 55
41 59 88
95 85 75
  • 输出:
255 85.0
240 80.0
195 65.0
188 62.7
255 85.0
72.2 79.6 74.8

第 5 组

  • 输入:
0 0 0
100 100 100
50 50 50
75 75 75
25 25 25
  • 输出:
0 0.0
300 100.0
150 50.0
225 75.0
75 25.0
50.0 50.0 50.0

第 6 组

  • 输入:
91 82 73
84 85 86
77 88 99
66 55 44
33 22 11
  • 输出:
246 82.0
255 85.0
264 88.0
165 55.0
66 22.0
70.2 66.4 62.6