实习压轴题代码与分析

题目要求

学生成绩单制作

一、目的

1.掌握结构体变量及数组的定义、赋值、初始化、输入、输出

2.结构体数组的操作。

二、实习环境

个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境

三、实习内容、步骤与要求

1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩

2.从键盘输入10个学生的以上内容

3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩

4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分

5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:

number name math Chinese English average

103 tom 90 90 100 95

101 alice 90 80 70 80

代码的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#define N 3

struct student
{
int number;
char name[40];
float score[3];
float avage;
} stu[N],temp;

int main()
{
struct student stu[N];
int i, j;
int sum[3] = { 0 };
float temp1, temp2, temp3;
int t1, t2, t3;

//数据输入
for (i = 0; i < N; i++)
{
printf("请输入第%d个同学的学号和姓名:", i + 1);
scanf("%d %s", &stu[i].number, &stu[i].name);
for (j = 0; j < 3; j++)
{
printf("请输入%s的成绩%d:", stu[i].name, j + 1);
scanf("%f", &stu[i].score[j]);
}
}
//计算平均分
for (j = 0; j < N; j++)
{
for (i = 0; i < 3; i++) {

sum[j] += stu[j].score[i];
}
stu[j].avage = sum[j] / 3.0;
}
//单科成绩最高
printf("数学成绩最高\n");
temp1 = 0;
for (i = 0; i < N; i++)
{
if (temp1 < stu[i].score[0])
{
temp1 = stu[i].score[0];
t1 = i;
}
}
printf("%d\t%s\t%.2f\n", stu[t1].number, stu[t1].name, stu[t1].score[0]);

printf("语文成绩最高\n");
temp2 = 0;
for (i = 0; i < N; i++)
{
if (temp2 < stu[i].score[1])
{
temp2 = stu[i].score[1];
t2 = i;
}
}
printf("%d\t%s\t%.2f\n", stu[t2].number, stu[t2].name, stu[t2].score[1]);

printf("英语成绩最高\n");
temp3 = 0;
for (i = 0; i < N; i++)
{
if (temp3 < stu[i].score[2])
{
temp3 = stu[i].score[2];
t3 = i;
}
}
printf("%d\t%s\t%.2f\n", stu[t3].number, stu[t3].name, stu[t3].score[2]);

//输出平均分最高的学生

for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - i - 1; j++) {
if (stu[j].avage < stu[j + 1].avage) { //比较成绩的大小
temp = stu[j + 1]; //成绩大的交换所在的数组元素
stu[j + 1] = stu[j];
stu[j] = temp;
}
}
}
printf("平均分最高的学生\n");
printf("number\tname\taverage\n");
printf("%s\t%d\t%.2f\n",stu[0].name,stu[0].number,stu[0].avage);

//将10个学生按照平均分数从高到低进行排序,输出
printf("按照平均数从高到低输出\n");
printf("number\tname\tmath\tChinese\tEnglish\taverage\n");
for (i = 0; i < N; i++) {

printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].number, stu[i].name, stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].avage);
}
getchar();
getchar();
}

关于代码的具体分析,分析会放在代码中的注释之中,更方便阅读

你的支持是我最大的动力!
0%