读书人

请问结构体有关问题

发布时间: 2012-04-03 12:38:19 作者: rapoo

请教结构体问题
编译,连接都没问题,但是运行的是后出错,不解。尝试着把与求平均值(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 );} 

读书人网 >C语言

热点推荐