大一的时候老师上课安排了课后的作业就是关于分数统计表的,于是当时就兴致勃勃的进行了编程,用的是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” ); } }
|
才发现原来我是这么的厉害啊,有点自恋了,当年能写出这样的程序还算是可以的了,不过现在什么都忘光光了。