假设现在有一个知识竟赛的决赛,首先从键盘输入进入决赛的选手人数(n),然后输入每名裁判(假设有4位裁判)对每位选手的打分情况(百分制),用堆空间来存放所有成绩(注意是二维数组形式),要求输出每位选手的成绩(每位裁判打分的平均成绩就是那位选手的成绩),以及最终冠军获得者是第几位选手。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
// 假设现在有一个知识竟赛的决赛,首先从键盘输入进入决赛的选手人数(n),然后输入每名裁判(假设有4位裁判)对每位选手的打分情况(百分制),用堆空间来存放所有成绩(注意是二维数组形式),要求输出每位选手的成绩(每位裁判打分的平均成绩就是那位选手的成绩),以及最终冠军获得者是第几位选手。
int num;
printf("输入决赛选手数量!\n");
scanf("%d", &num);
int **p = malloc(num * sizeof(int));
if (p == NULL)
{
perror("内存分配失败!\n");
free(p);
}
for (int i = 0; i < num; i++)
{
p[i] = malloc(5 * sizeof(int));
if (p[i] == NULL)
{
perror("评委内存分配失败!\n");
free(p[i]);
}
}
for (int i = 0; i < num; i++)
{
printf("第%d位选手\n", i + 1);
int count = 0;
for (int j = 0; j < 4; j++)
{
printf("第%d位评委:", j + 1);
scanf("%d", &p[i][j]);
count += p[i][j];
}
p[i][4] = count;
}
int sort = p[0][4];
int index = 0;
for (int i = 0; i < num; i++)
{
printf("第%d位选手\t", i + 1);
for (int j = 0; j < 4; j++)
{
printf("第%d位评委评分:%d\t", j + 1, p[i][j]);
}
printf("总分:%d\t", p[i][4]);
if (sort < p[i][4])
{
sort = p[i][4];
index=i;
}
printf("\n");
}
printf("第%d位选手是冠军\t", index + 1);
free(p);
return 0;
}