回复 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 编辑 ]






