回复 2楼 laznrbfe
你好,我想问下,向下面这个截图,我想是各个数字对应每个文字,该怎样改,而且总分的代码怎样写,麻烦下,谢谢
/* 随机生成M个同学3个科目的成绩,范围在40~100(含) 统计每个同学的平均分和每个科目的平均分 将同学按总分(平均分)由高到低排列 输出特定格式的报表 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> /*M必须大于1*/ #define M 5 #define N 5 void input(int scores[][3]); void cal(int scores[][3], double avgR[], double avgC[]); void sort(double avgR[], int idx[]); int main(void) { char *ke[N] = {"语文","数学","英语","平均分","总分"}; char *names[M] = {"张三", "李四", "王五", "赵六", "田七"}; int scores[M][3] = {0}, idx[M] = {0}, i, j; double avgR[M] = {0}, avgC[3] = {0}; input(scores); cal(scores, avgR, avgC); sort(avgR, idx); for(j=0;j<N;j++) { printf(" %8s", ke[j]); } for (i = 0; i < M; i++) { printf("%8s", names[i]); for (j = 0; j < 3; j++) { printf("%4d ", scores[i][j]); } printf("%5.1lf\n", avgR[i]); } return 0; } void input(int score[][3]) { int i, j; for (i = 0; i < M; i++) for (j = 0; j < 3; j++) score[i][j] = 40 + rand() % 61; return; } void cal(int scores[][3], double avgR[], double avgC[]) { int i, j; for (i = 0; i < M; i++) { for (j = 0; j < 3; j++) { avgR[i] += scores[i][j]; avgC[j] += scores[i][j]; } avgR[i] /= 3; } for (j = 0; j < 3; j++) avgC[j] /= M; return; } void sort(double avgR[], int idx[]) { int i, j; for (i = 0; i < M; i++) idx[i] = i; for (i = 0; i < M - 1; i++) { for (j = i + 1; j < M; j++) if (avgR[i] < avgR[j]) idx[i] = j, idx[j] = i; } return; }
[ 本帖最后由 紫禁 于 2011-12-13 20:33 编辑 ]