请教结构体问题
编译,连接都没问题,但是运行的是后出错,不解。尝试着把与求平均值(ave)的相关语句删除掉,结果就没问题,请教各位。
#include<stdio.h>
#define N 3 //学生人数
struct information
{
char name[20];
char ID[15];
int chi;
int mat;
int eng;
int phy;
int spo;
int sum;
int ave;}; //学生信息
struct information student,*p1;
get(struct information *pa) //录入学生信息函数
{
int i;
for(i=0;i<N;i++)
{
scanf("%s%s%d%d%d%d%d",(*pa).name,(*pa).ID,&(*pa).chi,&(*pa).mat,&(*pa).eng,&(*pa).phy,&(*pa).spo);
(*pa).sum=(*pa).chi+(*pa).mat+(*pa).eng+(*pa).phy+(*pa).spo;
(*pa).ave=(*pa).sum/5;
pa++;
}
}
out(struct information *pb) //输出学生信息函数
{
int i;
for(i=0;i<N;i++)
{
printf("%s %s %d %d %d %d %d %d %d \n",(*pb).name,(*pb).ID,(*pb).chi,(*pb).mat,(*pb).eng,(*pb).phy,(*pb).spo,(*pb).sum,(*pb).ave);
pb++;
}
}
main()
{
printf("请输入%d个学生的信息,每输入完一个按回车键:\n",N);
p1=&student;
get(p1);
printf("姓名 学号 语文 数学 英语 物理 体育 总分 均分\n");
out(p1);
}
[解决办法]
- C/C++ code
#include<stdio.h>#define N 3 //学生人数struct information{ char name[20]; char ID[15]; int chi; int mat; int eng; int phy; int spo; int sum; int ave; struct information *next;}; //学生信息struct information student , *p1;void get( struct information *pa ) //录入学生信息函数{ int i; struct information *tmp; tmp = pa; for( i = 0 ; i < N ; i++ ) { scanf( "%s%s%d%d%d%d%d" , ( *tmp ).name , ( *tmp ).ID , &( *tmp ).chi , &( *tmp ).mat , &( *tmp ).eng , &( *tmp ).phy , &( *tmp ).spo ); ( *tmp ).sum=( *tmp ).chi + ( *tmp ).mat+( *tmp ).eng + ( *tmp ).phy + ( *tmp ).spo; ( *tmp ).ave=( *tmp ).sum / 5; if( i < N - 1 ) { tmp->next = ( struct information * )malloc( sizeof( struct information ) ); tmp = tmp->next; } }}void out( struct information *pb ) //输出学生信息函数{ int i; for( i = 0 ; i < N ; i++ ) { printf( "%s %s %d %d %d %d %d %d %d \n" , ( *pb ).name , ( *pb ).ID , ( *pb ).chi , ( *pb ).mat , ( *pb ).eng , ( *pb ).phy , ( *pb ).spo , ( *pb ).sum , ( *pb ).ave ); pb = pb->next; }}main(){ printf( "请输入%d个学生的信息,每输入完一个按回车键:\n" , N ); p1 = &student; get( p1 ); printf("姓名 学号 语文 数学 英语 物理 体育 总分 均分\n"); out( p1 );}