一道C语言改错题,这句我不懂

下列给定程序中的函数Creatlink的功能是:创建带头节点的单向链表,并为各节点数据域赋0到m-1的值。请改正函数Creatlink中的错误,使它能得出正确的结果。注意... 下列给定程序中的函数Creatlink的功能是:创建带头节点的单向链表,并为各节点数据域赋0到m-1的值。
请改正函数Creatlink中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{ int data;
struct aa *next;
} NODE;

NODE *Creatlink(int n, int m)
{ NODE *h=NULL,*p,*s;
int i;
s=(NODE *)malloc(sizeof(NODE));
h=s;
/*************found**************/
p->next=NULL;
for(i=1;i<n;i++)
{ s=(NODE *) malloc(sizeof(NODE));
/*************found**************/
s->data=rand()%m;
s->next=p->next;p->next=s; p=p->next;
}
s->next=NULL;
/*************found**************/
return p;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\n The LIST :\n\n HEAD");
while(p)
{ printf("->%d",p->data);
p=p->next;}
printf("\n");
}
main()
{ NODE *head;
system("CLS");
head=Creatlink(8,22);
outlink(head);
}

【参考答案】
(1)错误:p->next=NULL; 正确:p=s;
(2)错误:s->date=rand( )%m ;
正确:s->data=rand( )%(m - 1);
(3)错误:return p; 正确:return h;

s->date=rand( )%m ;是啥意思?
rand( )是什么?
展开
 我来答
匿名用户
2009-02-08
展开全部
>s->date=rand( )%m ;是啥意思?
>rand( )是什么?

rand()函数,作用是:产生一个随机数。

通常,通过rand函数产生随机数以后,用%m来限定它的范围。即:rand( )%m。
其原理是:用那个随机数,去除以m,留下所得余数,作为最终结果。

下面来说一下你那道题:
s->date=rand( )%m,就是从0到m-1随即选取一个数。
并将这个数赋值给s->date。
比如,rand()函数生成的随机数为98,m为8,98除以8的余数为2,
所以最后也就是将2赋值给s->date
勤谨还甜美丶小鲤鱼p
2009-02-08 · TA获得超过4680个赞
知道大有可为答主
回答量:5699
采纳率:0%
帮助的人:4248万
展开全部
rand( )是什么?
rand()是产生随机数的函数.

s->date=rand( )%m ;是啥意思?
这是说产生一个随机数,让它除以m求余数,再把这个余数赋给结构体s的成员date.
就这样,朋友.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式