永发信息网

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

答案:2  悬赏:70  手机版
解决时间 2021-03-01 15:22
  • 提问者网友:不爱我么
  • 2021-02-28 21:24
下列给定程序中的函数Creatlink的功能是:创建带头节点的单向链表,并为各节点数据域赋0到m-1的值。
请改正函数Creatlink中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
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;

p->next=NULL;
for(i=1;i { s=(NODE *) malloc(sizeof(NODE));

s->data=rand()%m;
s->next=p->next;p->next=s; p=p->next;
}
s->next=NULL;

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( )是什么?
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-02-28 21:58
>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
全部回答
  • 1楼网友:由着我着迷
  • 2021-02-28 23:06
10个评委,for(i=1;i<100;i++) 要改成 for(i=1;i<=10;i++) scanf("%d",integer);要改成scanf("%d",&integer); (不能用变量,要用变量的地址) (sum-max-min)/8 是整除,会丢掉小数部分。如果要保留小数可改为printf("average score:%f\n",(sum-max-min)/8.0);}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯