| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 955 人关注过本帖
标题:建立动态链表出错问题
只看楼主 加入收藏
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:11 
建立动态链表出错问题
马上要考试了 我很焦虑
在TC环境 输入学号和成绩 学号为0终止 编译通过 第一次输入时出错 求指点
#include<stdio.h>
int n;
struct stu
{
int num;
float gra;
struct stu *next;
};
struct stu *sca(void)
{
struct stu *head,*p1,*p2;
  head=p1=p2=(struct stu *)malloc(sizeof(struct stu));
  printf("begin:\n");
  scanf("%d%f",&head->num,&head->gra);/*输入时这里出错 说float point formats not linked*/
  if(head->num)
   for(n=1;p1->num;n++)
   {
    p1=(struct stu *)malloc(sizeof(struct stu));
    p2->next=p1;
    p2=p1;
    printf("next:\n");
    scanf("%d%f",&p1->num,&p1->gra);
   }
  p1->next=NULL;
  return head;
}
void pri(struct stu *h)
{
int m;
struct stu *temp;
  printf("number\tgrade\n");
  if(h->next)
  {
   printf("%d\t%f\n",h->num,h->gra);
   temp=h->next;
   for(m=1;m<=n;m++)
   {
    printf("%d\t%f\n",temp->num,temp->gra);
    temp=temp->next;
   }
  }
}
main()
{
pri(sca());
}



[ 本帖最后由 njzhangyuhao 于 2011-3-4 20:28 编辑 ]
搜索更多相关主题的帖子: 焦虑 formats include linked 动态 
2011-03-04 20:24
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
把float gra换成int gra 就好了 怎么回事?
2011-03-04 20:35
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:30 
#include<stdio.h>
#include<malloc.h>
int n;
struct stu
{
int num;
float gra;
struct stu *next;
};
struct stu *sca(void)
{
  struct stu *head,*p1,*p2;
  head=p1=p2=(struct stu *)malloc(sizeof(struct stu));
  printf("begin:\n");
  scanf("%d%f",&head->num,&head->gra);
  if(head->num)
  for(n=1;p1->num;n++)
   {
    p1=(struct stu *)malloc(sizeof(struct stu));
    p2->next=p1;
    p2=p1;
    printf("next:\n");
    scanf("%d%f",&p1->num,&p1->gra);
   }
  p1->next=NULL;
  return head;
}
void pri(struct stu *h)
{
  int m;
  struct stu *temp;
  printf("number\tgrade\n");
  if(h->next)
  {
   printf("%d\t%f\n",h->num,h->gra);
   temp=h->next;
   for(m=1;m<=n-2;m++)  //帮你改了这里,因为你的话有无用的东西输出来
   {
    printf("%d\t%f\n",temp->num,temp->gra);
    temp=temp->next;
   }
  }
}
void main()
{
pri(sca());
}
我只有VC6.0,VC与TC有区别的。
上面的改后的程序运行成功,试验结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 qq1023569223 于 2011-3-4 21:00 编辑 ]

   唯实惟新 至诚致志
2011-03-04 20:58
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
VC6.0运行没问题
不过输出时候,
for(m=1;m<n;m++)
2011-03-04 21:02
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:20 
   for(n=1;p1->num;n++)
   {
    p1=(struct stu *)malloc(sizeof(struct stu));
    p2->next=p1;
    p2=p1;
    printf("next:\n");
    scanf("%d%f",&p1->num,&p1->gra);
   }
认真看这个函数,有没发现n要退出时多加了一个?
   for(m=1;m<=n;m++)
   {
    printf("%d\t%f\n",temp->num,temp->gra);
    temp=temp->next;
   }
然后这边你又没把他减掉,所以有问题了
至于你说的那个好像没出问题

勤能补拙,熟能生巧!
2011-03-04 21:03
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
这个多输出的问题我改出来了 但是我还没执行到这一步就出错了 谁用TC的帮我看看 怎么浮点型有问题?
2011-03-04 21:06
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
高手登场??

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-03-04 21:13
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:20 
记得以前是出现过这样的问题。解决办法:
另外定义两个变量(不是结构体):
int num;
float gra;

scanf("%d%f", &num, &gra);
head->num = num;
head->gra = gra;

我写得比较简单,楼主明白了么?

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-03-04 21:20
cacker
该用户已被删除
收藏
得分:30 
提示: 作者被禁止或删除 内容自动屏蔽
2011-03-04 21:37
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
什么是浮点寄存器 如何初始化?
2011-03-04 21:40
快速回复:建立动态链表出错问题
数据加载中...
 
   



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

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