C语言链表,指针数组问题。

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:13:04
一个程序输入n(数据组数),和n组数据;输出每组学生的学号平均分和N个平均分的平均分。大概的代码如下:哪位英雄帮帮忙看看,帮我改下.不尽感激!
#include <stdio.h>
#include <stdlib.h>
float total=0.0; //每位学生的平均分总和
float tave; //总平均分
typedef struct stu
{
int num;
float score[3];
float average;
struct stu *link;
}kid;
void creat(int *p,float *q[3],float *w,int n)//建立链表
{
kid *head,*p1,*p2;
int i;
head=(kid *)malloc(sizeof(kid));
if(head==NULL)
{
printf("error");
exit(1);
}
head->num=p[0];
head->score=q+0;
head->average=w[0]
head->link=NULL;
p1=head;
for(i=0;i<n;i++)
{
p1=(kid *)malloc(sizeof(kid));
if(p1==NULL)
{
printf("error");
exit(1);
}
p1->num=p[i];
p1->score=*(q+i);
p1->average=w[i];
p2->link=p1;
p2=p2->link;
}
return head;/

不要急于写程序,先熟悉如何写代码:
我将你的代码编译通过了,但是不能运行,你的指针没有申请空间就使用了
导致了运行错误

#include <stdio.h>
#include <stdlib.h>
float total=0.0; //每位学生的平均分总和
float tave; //总平均分
typedef struct stu
{
int num;
float score[3];
float average;
struct stu *link;
}kid;

kid* creat(int *p,float *q[3],float *w,int n)//建立链表
{
kid *head,*p1,*p2;
int i;
head=(kid *)malloc(sizeof(kid));
if(head==NULL)
{
printf("error");
exit(1);
}
head->num=p[0];

head->score[0]=q[0][0];
head->score[1]=q[0][1];
head->score[2]=q[0][2];

head->average=w[0];

head->link=NULL;
p1=head;
for(i=0;i<n;i++)
{
p1=(kid *)malloc(sizeof(kid));
if(p1==NULL)
{
printf("error");
exit(1);
}
p1->num=p[i];

head-&