| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 439 人关注过本帖
标题:关于动态链表的问题
只看楼主 加入收藏
chaojishumiq
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2012-4-14
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:5 
关于动态链表的问题
这个程序哪里错误了,请高手帮忙啊 还没有完成,这是关于学生档案建立的,用链表

#include<stdio.h>
#include<malloc.h>
#define null 0
int n;
int main(void)
{
struct student
    {
    long int  num;
    char a[20];
    float Math,Eng,Sport,Biology,Chinese,Average;
    struct student *next;};
struct student *head, *tail,*p,*p1;
printf("please input student's num,Name,Math Achievement,Eng Achievement,SportAchievement,Biology Achievement,Chinese Achievement.\n");
n=0;
tail=p=(struct student*)malloc(sizeof(struct student));
head=null;
scanf("%ld,%c,%f,%f,%f,%f,%f",&p->num,&p->a,&p->Math,&p->Eng,&p->Sport,&p->Biology,&p->Chinese);
while(p->num!=0)
{
n=n+1;
if(n==1){head=p;tail=p;}
else tail->next=p;
p=(struct student*)malloc(sizeof(struct student));
scanf("%ld,%c,%f,%f,%f,%f,%f",&p->num,&p->a,&p->Math,&p->Eng,&p->Sport,&p->Biology,&p->Chinese);
}
tail->next=null;
p1=head;



while(p1!=null)
{
p1->Average=((p1->Math)+(p->Eng)+(p1->Sport)+(p1->Biology)+(p1->Chinese))/5;
printf("%c Average is %f",&p1->a,p1->Average);
p1=p1->next;
}

return(0);
}
搜索更多相关主题的帖子: head Chinese include please 
2012-05-26 11:41
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:7 
你这个有点乱,链表建立和删除以及清空都是成熟的模块,直接找书上拿来用,比如C Primer Plus

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-05-26 14:43
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:7 
你在建立链表的时候有问题,当n!=1时,应该有tail->next=p;tail=p;然后再是开辟空间,仔细想想是不是???
2012-05-26 17:04
jianyuling00
Rank: 3Rank: 3
来 自:琼州学院
等 级:论坛游侠
帖 子:89
专家分:177
注 册:2012-3-17
收藏
得分:7 
很明显,你的输入格式错误了


scanf("%ld,%c,%f,%f,%f,%f,%f",&p->num,&p->a,&p->Math,&p->Eng,&p->Sport,&p->Biology,&p->Chinese);

关于名字的char a[20],你的输入格式应该用%s
下面的格式统统要改

还有我发现输入用逗号很容易出错不知道为什么

链表我也改了下,指针删去多余的p1,将平均数变量Average独立出来,完善显示

如下

#include<stdio.h>
#include<malloc.h>
#define null 0
int n;
int main(void)
{
struct student
    {
    long int  num;
    char a[20];
    float Math,Eng,Sport,Biology,Chinese;
    struct student *next;};
struct student *head, *tail,*p;
float Average;
//printf("please input student's num,Name,Math Achievement,Eng Achievement,SportAchievement,Biology Achievement,Chinese Achievement.\n");
n=0;
tail=p=(struct student*)malloc(sizeof(struct student));
head=null;
printf("num   Name   Math   English   Sport   Biology   Chinese\n");   
scanf("%ld%s%f%f%f%f%f",&p->num,&p->a,&p->Math,&p->Eng,&p->Sport,&p->Biology,&p->Chinese);
printf("\n********************************************************************************\n");
while(p->num!=0)
{
n=n+1;
if(n==1)head=p;
else tail->next=p;
tail=p;
p=(struct student*)malloc(sizeof(struct student));
scanf("%ld%s%f%f%f%f%f",&p->num,&p->a,&p->Math,&p->Eng,&p->Sport,&p->Biology,&p->Chinese);
printf("\n********************************************************************************\n");
}
tail->next=null;
p=head;



while(p!=null)
{
Average=((p->Math)+(p->Eng)+(p->Sport)+(p->Biology)+(p->Chinese))/5;
printf("%s Average is %f\n",&p->a,Average);
p=p->next;
}

return(0);
}

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 jianyuling00 于 2012-5-27 11:17 编辑 ]
2012-05-27 00:54
chaojishumiq
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2012-4-14
收藏
得分:0 
谢谢大家,因为这几天在忙数学建模就没有上网
2012-06-04 15:16
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:0 
飘过
2013-01-02 19:40
快速回复:关于动态链表的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022026 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved