在C中生成4个唯一的随机数0-8

  • 本文关键字:唯一 随机数 4个 c
  • 更新时间 :
  • 英文 :


我需要生成4个从0到8的唯一数字,然后将它们作为字符添加到数组中。我尝试了我在网上找到的这个方法,但它将值更改为48-55。

int main(int ac, char** av) {
char winningCode[5];

if(ac>2 && av[1][0] == '-' && av[1][1]=='c'){
for(int i=0; i<4; i++){
winningCode[i]=av[2][i];
}
}
else{
srand(time(NULL));

for(int i = 0 ; i < 4 ; i++ ) {
int random_number = (rand() % 8);
winningCode[i]=(random_number+'0');
}
}
winningCode[4]='';
printf("%dn",winningCode[0]);
printf("%dn",winningCode[1]);
printf("%dn",winningCode[2]);
printf("%dn",winningCode[3]);
printf("%dn",winningCode[4]);
int round = 0;
char ch[6];
printf("Will you find the secret code?nPlease enter a valid guessn");
while(wellplaced(winningCode, ch)<4 && round<10){
read_input(ch);
if(checkInput(ch)){
printf("nRound %dnWell placed pieces: %dnMisplaced pieces: %d",round,wellplaced(winningCode,ch),missplaced(winningCode,ch)-wellplaced(winningCode,ch));
round++;
}else{

printf("Wrong input!n");
}
}
printf("Congratz! You did it!");
return 0;
}

输出:

52
50
54
55
0

代码中的+'0'将值调整为每个数字的ASCII表示。当您使用%d格式代码打印单个值时,它打印的是ASCII序数,而不是它所对应的ASCII字符。将格式代码更改为%c,它就会工作。由于您明确地NUL-终止,您也可以使用轻松地将它们全部打印在一行上

printf("%sn", winningCode);

最新更新