
@C语言大神,此处为何数组下标无效?求解释??跪谢!
//题目:10个学生,每个学生包括学号、姓名、3门成绩。//现输入10个学生的数据,求3门课总平均成绩,和最高分学生的学号、姓名、3门成绩、平均分。#include<st...
//题目:10个学生,每个学生包括学号、姓名、3门成绩。
//现输入10个学生的数据,求3门课总平均成绩,和最高分学生的学号、姓名、3门成绩、平均分。
# include<stdio.h>
# include<conio.h>
# define N 10
struct student
{
char name[6];
char num[8];
float score[3];
float average;
}stu[N];
int main()
{
int i,j;
float max=0,maxi=0,average=0,sum=0;
for(i=0;i<N;i++)
{printf("iput the %dth number",i+1);
printf("NO:");
scanf("%s",stu[i].num);
printf("Name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("the %dth score:",j+1);
scanf("%f",&stu[i].score);
}}
for(i=0;i<N;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].average=sum/3.0;
if(sum>max)
{max=sum;maxi=i;}
average+=stu[i].average;
}
average/=N;
printf("NO. name score1 score2 score3 average\n");
for(i=0;i<N;i++)
{
printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9.2f",stu[i].score[j]);
printf("%8.2f",stu[i].average);
}
printf("average=%5.2f\n",average);
printf("highest is %s,%s",stu[maxi].num,stu[maxi].name);
printf("grade is %6.2f,%6.2f,%6.2f,average is %5.2f.\n",
stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].average);
getch();
} 展开
//现输入10个学生的数据,求3门课总平均成绩,和最高分学生的学号、姓名、3门成绩、平均分。
# include<stdio.h>
# include<conio.h>
# define N 10
struct student
{
char name[6];
char num[8];
float score[3];
float average;
}stu[N];
int main()
{
int i,j;
float max=0,maxi=0,average=0,sum=0;
for(i=0;i<N;i++)
{printf("iput the %dth number",i+1);
printf("NO:");
scanf("%s",stu[i].num);
printf("Name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("the %dth score:",j+1);
scanf("%f",&stu[i].score);
}}
for(i=0;i<N;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].average=sum/3.0;
if(sum>max)
{max=sum;maxi=i;}
average+=stu[i].average;
}
average/=N;
printf("NO. name score1 score2 score3 average\n");
for(i=0;i<N;i++)
{
printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9.2f",stu[i].score[j]);
printf("%8.2f",stu[i].average);
}
printf("average=%5.2f\n",average);
printf("highest is %s,%s",stu[maxi].num,stu[maxi].name);
printf("grade is %6.2f,%6.2f,%6.2f,average is %5.2f.\n",
stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].average);
getch();
} 展开
3个回答
展开全部
printf("highest is %s,%s",stu[maxi].num,stu[maxi].name);
printf("grade is %6.2f,%6.2f,%6.2f,average is %5.2f.\n",
stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].average);
这两句,数组下标是float。要求数组下标只能是整数或者char
我让你取一个数组中第4.8个元素,你取的出来?
printf("grade is %6.2f,%6.2f,%6.2f,average is %5.2f.\n",
stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].average);
这两句,数组下标是float。要求数组下标只能是整数或者char
我让你取一个数组中第4.8个元素,你取的出来?
展开全部
scanf("%f",&stu[i].score); //score定义是数组,你这样用肯定不正确了
printf("highest is %s,%s",stu[maxi].num,stu[maxi].name); //maxi定义是float,下标应该使用int类型
程序还是有点问题的,仔细检查一下吧。
printf("highest is %s,%s",stu[maxi].num,stu[maxi].name); //maxi定义是float,下标应该使用int类型
程序还是有点问题的,仔细检查一下吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%f",&stu[i].score);错误。因为stu[i].score本来是地址,你又写了&取地址符号,相当于地址的地址,所以无效
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询