大学课后作业C语言编程之分数统计表

大一的时候老师上课安排了课后的作业就是关于分数统计表的,于是当时就兴致勃勃的进行了编程,用的是C语言,应为学的课程就是C语言嘛。

最近没什么东西好些的所以就把这个程序给贴出来了,赚赚流量和收录什么的,不喜勿喷啊。

大学课后作业C语言编程之分数统计表

以下是我的程序源代码,不可避免的会有BUG,到时候可以看着修改。

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
102
103
104
105
106
107
108
109
110
111
112
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
int n1, n2;
int i, j, e, f, k, h;
float *score, *all, *ave, g, l;
char **name, **subject;
puts( “请输入你要统计的人数:” );
scanf( “%d”, &n1 );
puts( “请输入你要统计的科目数:” );
scanf( “%d”, &n2 );
j = 10;
score = (float *) malloc( (n1 * (n2 + 2) ) * sizeof(float) ); /* 第一维 */
all = (float *) malloc( (n1) * sizeof(float) ); /* 第一维 */
ave = (float *) malloc( (n1) * sizeof(float) ); /* 第一维 */
name = (char * *) malloc( (n1 + 1) * sizeof(char*) ); /* 第一维 */
for ( i = 0; i < n1; i++ )
{
name[i] = (char *) malloc( j * sizeof(char) ); /* 第二维 */
}
subject = (char * *) malloc( (n2 + 2) * sizeof(char*) ); /* 第一维 */
for ( i = 0; i < n2; i++ )
{
subject[i] = (char *) malloc( j * sizeof(char) ); /* 第二维 */
}
for ( i = 0; i < n1; i++ )
{
printf( “请输入第%d人的名字:”, i + 1 );
scanf( “%s”, name[i] );
printf( “\n” );
}
for ( j = 0; j < n2; j++ )
{
printf( “请输入第%d门科目名:”, j + 1 );
scanf( “%s”, subject[j] );
printf( “\n” );
}
for ( i = 0; i < n1; i++ )
for ( j = 0; j < n2; j++ )
{
printf( “请输入%s的%s成绩:”, name[i], subject[j] );
scanf( “%f”, &score[i * (n2 + 2) + j] );
printf( “\n” );
}
subject[n2] = “总分”;
subject[n2 + 1] = “平均分”;
for ( i = 0; i < n1; i++ )
{
score[i * (n2 + 2) + n2] = 0;
for ( j = 0; j < n2; j++ )
score[i * (n2 + 2) + n2] = score[i * (n2 + 2) + n2] + score[i * (n2 + 2) + j];
score[i * (n2 + 2) + n2 + 1] = score[i * (n2 + 2) + n2] / n2;
}
for ( h = 0; h < 1; h )
{
printf( “请输入序号以选择你要选择排序的方式:\n\n” );
for ( i = 0; i < n2 + 2; i++ )
printf( “%d.%s “, i + 1, subject[i] );
printf( “\n” );
scanf( “%d”, &e );
e = e – 1;
if ( e < n2 + 2 )
{
printf( “\n你选择了以%s成绩排序!\n\n”, subject[e] );
for ( k = 1; k < n1; k++ )
for ( i = k; i < n1; i++ )
{
l = score[(i – 1) * (n2 + 2) + e];
if ( l < score[i * (n2 + 2) + e] )
{
f = i * (n2 + 2) + e;
g = score[(k – 1) * (n2 + 2) + e];
score[(k – 1) * (n2 + 2) + e] = score[f];
score[f] = g;
name[n1] = name[k – 1];
name[k – 1] = name[i];
name[i] = name[n1];
l = score[(k – 1) * (n2 + 2) + e];
for ( j = 0; j < (n2 + 2); j++ )
{
if ( j != e )
{
g = score[(k – 1) * (n2 + 2) + j];
score[(k – 1) * (n2 + 2) + j] = score[i * (n2 + 2) + j];
score[i * (n2 + 2) + j] = g;
}
}
}
}
printf( ” “ );
for ( i = 0; i < n2 + 2; i++ )
{
printf( “%8s”, subject[i] );
}
printf( “\n” );
for ( i = 0; i < n1; i++ )
{
printf( “%10s”, name[i] );
for ( j = 0; j < (n2 + 2); j++ )
printf( “%8.1f”, score[i * (n2 + 2) + j] );
printf( “\n” );
}
printf( “\n\n” );
}else
printf( “请输入正确的数字!\n\n” );
printf( “请输入0继续或者输入其他数字结束程序!\n” );
scanf( “%d”, &h );
printf( “\n\n” );
}
}

才发现原来我是这么的厉害啊,有点自恋了,当年能写出这样的程序还算是可以的了,不过现在什么都忘光光了。