好友
阅读权限10
听众
最后登录1970-1-1
|
谭浩强第五版第九章课后第五题
题目:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
10个学生太多了,我就修改成了3个。
标准答案:[C] 纯文本查看 复制代码 #include <STDIO.H>
struct student
{
char num[6];
char name[8];
float sco[3];
float ave;
}stu[3];
int main()
{
int i=0,j,k;
float sum,max=0,aver=0;
for (i;i<3;i++)
{
printf("请输入学生%d的成绩:\n",i+1);
printf("序号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for (j=0;j<3;j++)
{
printf("请输入成绩%d:",j+1);
scanf("%f",&stu[i].sco[j]);
}
}
k=0;
for (i=0;i<3;i++)
{
sum=0;
for (j=0;j<3;j++)
{
sum=sum+stu[i].sco[j];
}
stu[i].ave=sum/3.0;
aver=aver+stu[i].ave;
if (sum>max)
{
max=sum;
k=i;
}
}
aver=aver/3;
printf(" 序号 姓名 成绩1 成绩2 成绩3 平均分 \n");
for (i=0;i<3;i++)
{
printf("%5s%10s",stu[i].num,stu[i].name);
for (j=0;j<3;j++)
{
printf("%11.2f",stu[i].sco[j]);
}
printf("%9.2f\n",stu[i].ave);
}
printf("平均分=%5.2f\n",aver);
printf("最高的成绩是:学生%s,%s\n",stu[k].num,stu[k].name);
printf("他的成绩为:%6.2f,%6.2f,%6.2f,平均分为:%5.2f \n",stu[k].sco[0],stu[k].sco[1],stu[k].sco[2],stu[k].ave);
return 0;
}
根据标准答案,修改了一下:
[C] 纯文本查看 复制代码 #include <STDIO.H>
struct student
{
char num[6];
char name[8];
float sco[3];
float ave;
}stu[3];
int main()
{
struct student *p;
p=stu;
int i=0,j,k;
float sum,max=0,aver=0;
for (;p<stu+3;p++,i++)
{
printf("请输入学生%d的成绩:\n",i+1);
printf("序号:");
scanf("%s",p->num);
printf("姓名:");
scanf("%s",p->name);
for (j=0;j<3;j++)
{
printf("请输入成绩%d:",j+1);
scanf("%f",&p->sco[j]);
}
}
k=0;
for (p=stu;p<stu+3;p++)
{
sum=0;
for (j=0;j<3;j++)
{
sum=sum+p->sco[j];
}
p->ave=sum/3.0;
aver=aver+p->ave;
if (sum>max)
{
max=sum;
k=i;
}
}
aver=aver/3;
printf(" 序号 姓名 成绩1 成绩2 成绩3 平均分 \n");
for (p=stu;p<stu+3;p++)
{
printf("%5s%10s",p->num,p->name);
for (j=0;j<3;j++)
{
printf("%11.2f",p->sco[j]);
}
printf("%9.2f\n",p->ave);
}
printf("平均分=%5.2f\n",aver);
p=stu+k;
printf("最高的成绩是:学生%s,%s\n",p->num,p->name);
printf("他的成绩为:%6.2f,%6.2f,%6.2f,平均分为:%5.2f \n",p->sco[0],p->sco[1],p->sco[2],p->ave);
return 0;
}
结果,成绩最大的学生输出失败,问题应该是出在倒数第五行 p=stu+k; 我想法是把指针指向最大的那个学生,然后输出他的信息,可是没有成功,我把k改成0,1,2,输出的时候没问题,改成k就出现了问题,大佬能解释一下为什么?
我输出的结果如下: |
-
结果
免费评分
-
查看全部评分
|