问题解决的话,请点下采纳
#include <stdio.h>
#define MAXN 61
char *bixiu[] = { "操作系统", "汇编语言", "软件工程", "编译原理", "数字电路", "Java语言" };
char *xuanxiu[] = { "人工智能", "多媒体", "计算机制图", "信号处理" };
float score[MAXN][10];
float epsilon = 0.01;
float weight[10] = { 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.05, 0.05, 0.05, 0.05 };
int n;
void statbixiu()
{
for (int i = 0; i < 6; i++)
{
float ave = 0;
for (int j = 0; j < n; j++)
{
ave += score[j][i];
}
printf("\"%s\"的平均成绩是%.2f。\n", bixiu[i], ave / n);
}
}
void statxuanxiu()
{
for (int i = 0; i < 4; i++)
{
float ave = 0;
int m = 0;
for (int j = 0; j < n; j++)
{
if (score[j][i + 6] >= epsilon)
{
ave += score[j][i + 6];
m++;
}
}
if (m == 0)
printf("\"%s\"没有人选。\n", xuanxiu[i]);
else
printf("\"%s\"的平均成绩是%.2f。\n", xuanxiu[i], ave / m);
}
}
float calcscore(int id)
{
float sum = 0;
for (int i = 0; i < 10; i++)
sum += score[id][i] * weight[i];
return sum;
}
void award()
{
int order[MAXN];
int rank[MAXN];
for (int i = 0; i < n; i++)
{
order[i] = i;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (calcscore(order[j]) < calcscore(order[j + 1]))
{
int t = order[j];
order[j] = order[j + 1];
order[j + 1] = t;
}
}
}
for (int i = 0; i < n; i++)
{
rank[order[i]] = i + 1;
}
for (int i = 0; i < n; i++)
{
printf("%d号学生是第%d名\n", i, rank[i]);
}
}
int main()
{
printf("请输入学生人数(<=60人):");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 6; j++)
{
printf("请输入第%d个学生的\"%s\"的成绩:", i + 1, bixiu[j]);
scanf("%f", &score[i][j]);
}
for (int j = 0; j < 4; j++)
{
printf("请输入第%d个学生的\"%s\"的成绩(如果没有选,请输入0):", i + 1, xuanxiu[j]);
scanf("%f", &score[i][j + 6]);
}
}
statbixiu();
statxuanxiu();
award();
return 0;
}