| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1009 人关注过本帖
标题:懂C的朋友看一下
只看楼主 加入收藏
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
懂C的朋友看一下
建立一个有若干名学生数据(学号,成绩)的单向动态链表
备注:输入学号为0时,表示输入完毕。
C代码如下:
# include <malloc.h>
# define NULL 0                           /* 用NULL等于0表示空地址 */
# define LEN sizeof(struct student)       /* 用LEN代表结构体类型数据的长度 */
struct student                              /* 定义结构体 */
{long num;
 float score;                               /* 此处用int定义变量score,结果正确,但用float定义,当输入时,会出现错误 */
 struct student *next;
};
int n;
struct student *creat(void)                   /* 定义一个指针函数 */
{struct student *head;
 struct student *p1,*p2;
 n=0;
 p1=p2=(struct student *)malloc(LEN);              /* 开辟链表的第一个新结点,使p1p1指向它 */
 scanf("%ld,%f",&p1->num,&p1->score);
 head=NULL;
 while(p1->num!=0)
 {n=n+1;
  if(n==1) head=p1;
  else p2->next=p1;
  p2=p1;
  p1=(struct student *)malloc(LEN);                /* 再开辟一个新结点,使p1指向它 */
  scanf("%ld,%lf",&p1->num,&p1->score);
 }
 p2->next=NULL;                                     /* 链表尾结点的指针变量置NULL */
 return head;
}                                                       /* 函数返回链表的首地址 */
void print(struct student *head)
{struct student *p;                                     /* 函数功能:输出链表 */
 printf("\nNow,These %d records are:\n",n);
 p=head;
 if(head!=NULL)
   do
     {printf("%ld,%lf\n",p->num,p->score);
      p=p->next;
     }
   while(p!=NULL);
}
main()
{struct student *p;
 p=creat();
 print(p);
}
当结构体类型的score用int 定义时,程序可以正常运行。
但当用float定义时,当输入第一个学号分数(101,89)时,显示如下信息(在turboc2.0上运行):
scanf:floating point formats not linked abnormal program termination
清楚的说一下。
搜索更多相关主题的帖子: 结构体 朋友 long 
2011-01-13 21:18
aaronhexin
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:199
注 册:2010-12-6
收藏
得分:0 
这好像是TC2.0的bug,你输入个101,89.0看看
听说到TC3.0解决了这个bug
直接换平台  
2011-01-13 21:53
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
收藏
得分:0 
输入101,89.0跟101,89都一样(TC2),如果真像你说的,那可浪费不少时间了。
2011-01-13 21:58
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
收藏
得分:0 
回复 2楼 aaronhexin
应该不是这原因吧
2011-01-13 22:01
aaronhexin
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:199
注 册:2010-12-6
收藏
得分:0 
反正这是平台的一个bug
你在那个scanf前加上一句
p1->score = 0.0看看
2011-01-13 22:01
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
唉.还没学到链表
2011-01-13 22:03
aaronhexin
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:199
注 册:2010-12-6
收藏
得分:0 
回复 3楼 lqpqbyb
90%的感觉告诉我是这个原因,因为我遇到过
2011-01-13 22:07
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
收藏
得分:0 
回复 5楼 aaronhexin
&0.0肯定编译出错的,&后面跟个变量才行啊。
2011-01-13 22:08
aaronhexin
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:199
注 册:2010-12-6
收藏
得分:0 
我没说加&
我说的是p1->score = 0.0
试试
2011-01-13 22:11
lqpqbyb
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2011-1-8
收藏
得分:0 
回复 9楼 aaronhexin
结果还是错
2011-01-13 22:29
快速回复:懂C的朋友看一下
数据加载中...
 
   



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

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