| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖
标题:动态链表入门必做题目,问题发现了,高手来解释下
只看楼主 加入收藏
zyhfbim1a9
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-3-15
收藏
 问题点数:0 回复次数:2 
动态链表入门必做题目,问题发现了,高手来解释下
源程序如如下:
#include "stdio.h"
#include "malloc.h"
#define null 0
#define len  sizeof(struct student)

struct student /*定义结构体*/
{long num; float score;struct student *next;};
int n;
struct student *creat(void)/*定义建立动态链表的函数*/
{ struct student *head;
    struct student *p1,*p2;
    n=0;
    p1=p2=(struct student *)malloc(len);
   printf("please input the student's date:\n");
    scanf("%ld,%f",&p1->num,&p1->score);
    while(p1->num!=0)
    {n=n+1;
        if(n==1)head=p1;
        else p2->next=p1;
        p2=p1;
        
        p1=(struct student *)malloc(len);
        
        scanf("%ld,%f",&p1->num,&p1->score);
        
   
        }
   
    p2->next=null;
    return(head);
   
   
    }
main()
{struct student *head;
    head=creat();
   
}
1)、当以(数据1,数据2)格式输入时,系统报错。
2)、当以空格代替数据1、2之间的逗号,形如(数据1 数据2)输入,运行正常。
而如果把源程序中的语句scanf("%ld,%f",&p1->num,&p1->score);改为          scanf("%ld %f",&p1->num,&p1->score);用以上第1种格式输入运行正常,第2种格式输入系统报错。
而如果把源程序中num 和score变量都定为长整形或浮点型,总之要定为一样的变量类型。当输入语句为scanf("%ld,%f",&p1->num,&p1->score);时不管以1、2哪种格式输入都运行正常。当输入语句为scanf("%ld %f",&p1->num,&p1->score);时,只能以第2种格式输入,第一种格式输入时,无法输入,但系统也不报错。
在一般情况下,如以下2个程序:
/*程序1*/
#include "stdio.h"
main()
{
    int a ,b,c;
    printf("please input date:\n");
    scanf("%d,%d,%d",&a,&b,&c);
    printf("%d,%d,%d",a,b,c);
   
}
必须以“,”号分隔输入数据
/*程序2*/
#include "stdio.h"
main()
{
    int a ,b,c;
    printf("please input date:\n");
    scanf("%d %d %d",&a,&b,&c);/*#空格代替逗号*/
    printf("%d,%d,%d",a,b,c);
   
}
必须以空格分隔输入数据。
也就是说在上面2个程序中输入格式必须与scanf中的一致。
但是这个动态链表,怎么会出现这样的情况呢,真搞不懂啊
搜索更多相关主题的帖子: 链表 入门 动态 
2008-04-15 11:24
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
请不要以运行结果看似无问题来判断,你的代码逻辑问题相当严重

" border="0" />
2008-04-15 11:42
zyhfbim1a9
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-3-15
收藏
得分:0 
???说详细点好么,
2008-04-15 11:55
快速回复:动态链表入门必做题目,问题发现了,高手来解释下
数据加载中...
 
   



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

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