回 帖 发 新 帖 刷新版面

主题:[讨论]指针这样编译不出来

#include<stdio.h>
#define N 3
struct student
{
    long number;
    char name;
    int score[4];
    float average;
};
void main()
{
    int i,j,sum,a[4],n;
    struct student stuarr[20];
    for(i=0;i<N;i++)
    {
        printf("请输入第%d位学生的信息(学号、姓名)\n",i+1);
        scanf("%d%s",&stuarr[i].number,&stuarr[i].name);
        printf("请输入其四科成绩\n");
        for(j=0;j<4;j++)
            scanf("%d",&stuarr[i].score[j]);
    }
    for(i=0;i<N;i++)
    {
        sum=0;
        for(j=0;j<4;j++)
        {
            sum+=stuarr[i].score[j];
            a[i]=sum;
        }
    }
    sum=a[0];
    for(i=1;i<4;i++)
    {
        if(a[i]>sum)
            sum=a[i];
            stuarr[i].average=sum/4;
        n=i;
    }
    printf("总平均分成绩最高的学生的学号为%d,姓名%s,平均成绩为%.2f\n",stuarr[n].number,stuarr[n].name,stuarr[n].average);
}


我想求出,3人中4科总平均最高的!可是不知道那里出问题了!
求各位高手们指点指点!!谢谢

回复列表 (共2个回复)

沙发

产生了一个段异常……访问超界,原因多半是你的printf里姓名用了%s,你自己声明name是char,自然应该用%c输出
另外:
    for(i=1;i<4;i++)//你前面都只到i<N,这里怎么变成<4了
    {
        if(a[i]>sum)
            sum=a[i];
            stuarr[i].average=sum/4;//注意,这里已经在if外面了
        n=i;//这个应该在if里吧,不然的话输出永远是stuarr[3],但是这个结构体变量你还没赋值过呢
    }
要注意大括号的正确使用

板凳

首先定义name时,应该定义成字符数组,空间自己定。
还有你在给a[i]赋值时,只赋到a[2],即a[3]没有值,而你在下面另一个for语句中,你有调用了a[3],其他的自己解决,都是有这两个问题衍生出来的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册