回 帖 发 新 帖 刷新版面

主题:关于结构体静态链表的问题(代码很短)

想实现的是求每门课的平均值(只限于如下的方法)(VC++ 6.0)
查错的时候没有发现错误,但是输入数据后就弹出一个对话框,说是

"0x004019df"指令"0x0000001c"内存。该内存不能为"read"。

我检查了代码的,好像没有问题。
#define NULL 0
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
struct Student *next;
};
int main()
{
int i,j,sum,m=5,n=3;//m=学生人数;n=课程数
Student a[5],*head,*p;//修改学生人数时只需要改这里
cout<<"请输入"<<m<<"个学生的学号,姓名和"<<n<<"门课的成绩:\n";
for(i=0;i<m;i++)
{
cin>>a[i].num>>a[i].name;
for(j=0;j<n;j++)
cin>>a[i].score[j];
}
head=&a[0];
for(i=0;i<m-1;i++)
a[i].next=&a[i+1];
a[m-1].next=NULL;
p=head;
for(j=0;j<n;j++)
{
sum=0;
do
{
sum=sum+p->score[j];
p=p->next;
}while(p!=NULL);
cout<<"第"<<j+1<<"门课的平均成绩:"<<sum/m<<endl;
}
cout<<endl;
return 0;
}

请帮帮忙,谢谢!

回复列表 (共1个回复)

沙发

p=head;
for(j=0;j<n;j++)
{
sum=0;
do
{
sum=sum+p->score[j];
p=p->next;
}while(p!=NULL);
cout<<"第"<<j+1<<"门课的平均成绩:"<<sum/m<<endl;
}
改成
for(j=0;j<n;j++)
{
p=head;

sum=0;
do
{
sum=sum+p->score[j];
p=p->next;
}while(p!=NULL);
cout<<"第"<<j+1<<"门课的平均成绩:"<<sum/m<<endl;
}
每个循环后p应该重新赋值

我来回复

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