永发信息网

c语言问题,again.

答案:4  悬赏:20  手机版
解决时间 2021-04-01 15:27
  • 提问者网友:献世佛
  • 2021-04-01 09:49
c语言问题,again.
最佳答案
  • 五星知识达人网友:走死在岁月里
  • 2021-04-01 10:10
int card[hand-1];这里card数组长度是hand-1 ,下面 当n=hand-1的时候card[n]越界

然后 srand也不是这么用的。 只需要srand一次,然后每次就 rand()得到随机数就可以了
全部回答
  • 1楼网友:底特律间谍
  • 2021-04-01 12:35
#include<stdio.h>
#include<stdlib.h>
#define hand 40
void readcards(int[],int);
int main(int argc,char **argv){
int card[hand -1];
readcards(card,hand);
return 0;
}
void readcards(int card[],int hand1){//你原来的hand与define hand 40 冲突
int n,seed;
for (n=0;n<hand1-1;n++){//hand1-1,不然数组越界card[hand-1]
seed=n;
srand(seed);
card[n]=1+rand()%12;
printf("%d,(n=%d)-\n ",card[n],n);
}
}
  • 2楼网友:孤老序
  • 2021-04-01 11:02
readcards函数中的int hand 和#define hand 40
重命名了,这样改
#include<stdio.h>
#include<stdlib.h>
#define hand 40
void readcards(int[],int);
int main(int argc,char **argv)
{
int card[hand-1];
readcards(card,hand);
return 0;
}
void readcards(int card[],int _hand)
{
int n,seed;
for (n=0;n<hand;n++)
{
seed=n+1;
srand(seed);
card[n]=1+rand()%12;
printf("%d, ",card[n]);
}
}
  • 3楼网友:低音帝王
  • 2021-04-01 10:19
朋友,首先一点,常量请用大写,害我找了半天哪有hand
没仔细看,也不清楚你程序要干嘛,但是for循环里面肯定要指针越界
hand是40,card是39位的数组,下表最多到38,n=39的时候,是可以进for循环的,所以,运行到card[39]就错了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯