荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: bakey (一日不见,如隔生抽), 信区: Program
标 题: [合集]请教一个简单的问题!
发信站: 荔园晨风BBS站 (2005年07月12日18:47:09 星期二), 站内信件
☆ 1 ──────────── 我是分割线 ─────────────────☆
发信人: tth (没有风的天空), 信区: Program
标 题: 请教一个简单的问题!
时 间: 2005年07月06日23:22:45 星期三
这是一个建立链表的简单问题,我是初学者,不知道那里出错了,看不到结果.请帮忙看下
好吗?谢谢!
#include"stdio.h"
#include"conio.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);
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);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void main()
{struct student *creat(void);
struct student *p;
p=creat();
do
{printf("%ld%f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
getch();
}
☆ 2 ──────────── 我是分割线 ─────────────────☆
发信人: achang (马甲被封), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日11:42:11 星期四
这程序咋一看没啥问题啊。。
可是运行就不掂了。。不知道什么原因。。。
☆ 3 ──────────── 我是分割线 ─────────────────☆
发信人: tth (没有风的天空), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日12:38:16 星期四
是啊,看不出那里有问题运行也没有错,但却得不到结果,郁闷!
☆ 4 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (一日不见,如隔生抽), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日13:05:59 星期四
你看不到结果是以为
create函数那里的while后面加了分号,去掉就可以了
不过你的程序还是有问题的
☆ 5 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (一日不见,如隔生抽), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日13:34:23 星期四
我把你的程序改了一下
你应该是想建一个单链表之类吧,我按这个去修改了,你看看
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.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=(struct student*)malloc(LEN);
scanf("%ld%f",&p1->num,&p1->score);
head=p2=p1;
head->next = NULL;
while(p1->num!=0)
{
n ++;
if (n > 1)
{
p2->next = p1;
p2 = p1;
p2->next = NULL;
}
p1=(struct student*)malloc(LEN);
p1->next = NULL;
scanf("%ld%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void main()
{
struct student *creat(void);
struct student *p;
p=creat();
do
{
if (p == NULL)
break;
printf("%ld %.4f\n",p->num,p->score);
p=p->next;
}while (p != NULL);
}
☆ 6 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (一日不见,如隔生抽), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日13:37:32 星期四
关于你的问题:都是一些细节
1,while这种循环语句记得后面不要加分号。这个在自己debug的时候应该很快查出来
2,你的输入写成了这样:scanf("%d, %f",&p->num,&p->score);
双引号里面是不需要加逗号的。以后注意了。
ps:我调试的时候很长时间都没看到这个错误.....
写链表最重要的是要把握好指针的运用,你应该很清晰地知道每个指针是指向哪里的
要不很容易造成内存出错
☆ 7 ──────────── 我是分割线 ─────────────────☆
寄信人: achang (马甲被封)
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日17:56:30 星期四
来 源: 192.168.110.128
我跟你相反,我第一眼就看到那个逗号了。。
但是while后面的那个分号却一直都没看出来。。
而且也很想知道这个分号产生了怎样的效果,
PS:什么时候下来教我一些调试技巧。。
☆ 8 ──────────── 我是分割线 ─────────────────☆
发信人: kevinh (如果爱·搁浅), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日20:23:35 星期四
do
{
}while();
后面要加分号的.
☆ 9 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (一日不见,如隔生抽), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日20:39:10 星期四
不是这个while..
☆ 10 ──────────── 我是分割线 ─────────────────☆
发信人: kevinh (如果爱·搁浅), 信区: Program
标 题: Re: 请教一个简单的问题!
时 间: 2005年07月07日22:12:47 星期四
oooo,看到了。。。。。
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店