
运行的时候不知道这里是哪错了,能运行
还有我不知道该这么输入数据
#include
struct Student
{
int num, score[3];//学号 三门成绩
int avg;//平均成绩
char name[20];//个人名字
}stu[10];
int main()
{
int sum, i, j, max, n;//定义三个成绩之和,i,j循环,平均值最大值,n用来表达最大那个学生的号码
for (i = 0; i < 10; i++)
{
scanf_s("num=%d", &stu[i].num);
scanf_s("name=%s", &stu[i].name);//输入每个人的学号,名字
for (j = 0; j < 3; j++)
{
scanf_s("%d", &stu[i].score[j]);//输入每个人三个成绩
}
}
for (i = 0; i < 10; i++)
{
sum = 0;//sum使每个人的初始总和值为0
for (j = 0; j < 3; j++) {
sum = sum + stu[i].score[j];//每个人的总和
}
stu[i].avg = sum / 3;//每个人的平均值
printf_s("%d", sum);//输出总和
printf_s("%d\n", stu[i].avg);//输出平均
}
max = stu[0].avg;//假使最大值是第一个人的平均值
{
for (i = 0; i < 10; i++)
{
if (stu[i].avg > max)//判断大小
{
max = stu[i].avg;//选出最大值
n = i;//选出最大值的人的号码
}
}
printf_s("mame=%s\n", stu[n].name);//输出最大值的名字
printf_s("num=%d\n", stu[n].num);//输出最大值的人的学号
printf_s("score1=%d\n,score2=%d\n,score3=%d\n", stu[n].score[0], stu[n].score[1], stu[n].score[2]);//输出最大值的人的三个成绩
printf_s("avg=%d", stu[n].avg);//输出最大值的人的平均值
}
return 0;
}
因为scanf_s没有正确读取到对应的值
应该是因为输入的方式不对,需要把每个学生的学号,姓名,3门成绩依次输入,而不是先输入所有学生的学号,姓名,所有成绩。
然后还有其他一些细节的问题,如学生平均分成员变量的数据类型可以使用浮点数类型,scanf()函数里面使用的格式说明符不需要加"num="或"name="等。
下面的代码在Dev-C++测试,所以scanf_s,printf_s等修改为了scanf和printf;然后为了测试方便,把学生的个数设置为3.
修改如下:
参考链接:
#include<stdio.h>
#define N 3 // 为了测试方便,学生个数设置为3
struct Student
{
int num, score[3];//学号 三门成绩
double avg;//平均成绩 ,使用double类型,因为平均分有小数
char name[20];//个人名字
}stu[10];
int main()
{
int sum, i, j, max, n;//定义三个成绩之和,i,j循环,平均值最大值,n用来表达最大那个学生的号码
for (i = 0; i < N; i++)
{
scanf("%d", &stu[i].num);
scanf("%s", stu[i].name);//输入每个人的学号,名字,获取学生字符串姓名这里不需要加取址符&
for (j = 0; j < 3; j++)
{
scanf("%d", &stu[i].score[j]);//输入每个人三个成绩
}
}
for (i = 0; i < N; i++)
{
sum = 0;//sum使每个人的初始总和值为0
for (j = 0; j < 3; j++) {
sum = sum + stu[i].score[j];//每个人的总和
}
stu[i].avg = sum / 3.0;//每个人的平均值
printf("%d,", sum);//输出总和
printf("%f\n", stu[i].avg);//输出平均
}
max = stu[0].avg;//假使最大值是第一个人的平均值
{
for (i = 0; i < N; i++)
{
if (stu[i].avg > max)//判断大小
{
max = stu[i].avg;//选出最大值
n = i;//选出最大值的人的号码
}
}
printf("mame=%s\n", stu[n].name);//输出最大值的名字
printf("num=%d\n", stu[n].num);//输出最大值的人的学号
printf("score1=%d\nscore2=%d\nscore3=%d\n", stu[n].score[0], stu[n].score[1], stu[n].score[2]);//输出最大值的人的三个成绩
printf("avg=%f", stu[n].avg);//输出最大值的人的平均值
}
return 0;
}