看了半天不知道错在哪
题目如下:
错误详情:
代码如下:
# include <stdio.h>
struct data
{
char number;
char name[10];
float a[3];
};
int main()
{
int num;
float sum = 0;
struct data student[10];
scanf("%d", &num);
getchar();
int i;
for (i = 0; i < num; i++)
{
scanf("%c%s%f%f%f", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
getchar();
}
float b[3];
int j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < num; j++)
{
sum = sum + student[j].a[i];
}
b[i] = sum / num;
sum = 0;
}
float c[10] = { 0 };
int jishu = 0;
for(i=0;i<num;i++)
for (j = 0; j < 3; j++)
c[i] = c[i] + student[i].a[j];
for (i = 0; i < num - 1; i++)
{
if (c[i] > c[i + 1])
c[i+1] = c[i];
else jishu = jishu + 1;
}
for (i = 0; i < 3; i++)
printf("%2.f ", b[i]);
printf("\n");
printf("%c %s %2.f %2.f %2.f", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
return 0;
}
求最高成绩的地方不对吧,输出第一行的最后多了一个空格,用下面的代码试试:
# include <stdio.h>
struct data
{
char number;
char name[10];
float a[3];
};
int main()
{
int num;
float sum = 0;
struct data student[10];
scanf("%d", &num);
getchar();
int i;
for (i = 0; i < num; i++)
{
scanf("%c%s%f%f%f", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
getchar();
}
float b[3];
int j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < num; j++)
{
sum = sum + student[j].a[i];
}
b[i] = sum / num;
sum = 0;
}
float c[10] = { 0 };
int jishu = 0;
for(i=0;i<num;i++)
for (j = 0; j < 3; j++)
c[i] = c[i] + student[i].a[j];
//修改部分
for (i = 1; i < num; i++)
{
if (c[i] > c[jishu])
jishu = i;//c[i+1] = c[i];
//else jishu = jishu + 1;
}
for (i = 0; i < 3; i++)
{
if(i<2)
printf("%2.f ", b[i]);
else
printf("%2.f",b[i]); //没有最后的空格
}
printf("\n");
printf("%c %s %2.f %2.f %2.f", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
return 0;
}
结构体中float a[3];定义为int类型再提交试试
我给你都改了
# include <stdio.h>
struct data
{
char number;
char name[10];
int a[3];
};
int main()
{
int num;
int sum = 0;
struct data student[10];
scanf("%d", &num);
getchar();
int i;
for (i = 0; i < num; i++)
{
scanf("%c%s%d%d%d", &student[i].number, student[i].name, &student[i].a[0], &student[i].a[1], &student[i].a[2]);
getchar();
}
int b[3];
int j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < num; j++)
{
sum = sum + student[j].a[i];
}
b[i] = sum / num;
sum = 0;
}
int c[10] = { 0 };
int jishu = 0;
for(i=0;i<num;i++)
for (j = 0; j < 3; j++)
c[i] = c[i] + student[i].a[j];
for (i = 0; i < num - 1; i++)
{
if (c[i] > c[i + 1])
c[i+1] = c[i];
else jishu = jishu + 1;
}
for (i = 0; i < 3; i++)
printf("%d ", b[i]);
printf("\n");
printf("%c %s %d %d %d", student[jishu].number, student[jishu].name, student[jishu].a[0], student[jishu].a[1], student[jishu].a[2]);
return 0;
}
/*
2
1 blue 90 80 70
b clan 80 70 60
*/
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!