gpt4 book ai didi

c - While 循环与一些 if 语句获得超高数字

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:38 25 4
gpt4 key购买 nike

我正在用 C 语言做一个边界游戏,我的 while 循环和我在输出中得到的值有一些问题。

我有一个数组,里面有一些随机值,从 -5 ti 5 到 20% 的棋盘。而我要做的就是将该值添加到名为 player 的变量中。

int player1 = 0, player2 = 0, player3 = 0, player4 = 0;
int dice = 0, number_of_players = 0, number_of_players = 2;


while(player1 < 50 && player2 < 50){
if(number_of_players == 2){
dice = (rand() % 6) + 1;
player1 += dice;
if(border[player1] != 0){
player1 = player1 + (border[player1]);
}
dice = (rand() % 6) + 1;
player2 += dice;
if(border[player2] != 0){
player2 = player2 + (border[player2]);
}
}
}
if(player1 > player2) printf("Player 1 won. Score: %d", player1);
if(player2 > player1) printf("Player 2 won. Score: %d", player2);

这是我的名为“border”的数组的代码,它在我的 while 循环之上:

#define TAM 50

int border[TAM], i, pos, casas;
for( i=0; i<TAM; i++ )
border[i] = 0;

i = 0;
while( i < (int)TAM*0.1 ){
pos = rand() % TAM;
if( border[pos] == 0 ){
casas = (rand() % 5) + 1;
border[pos] = casas;
i++;
}
}

i = 0;

while( i < (int)TAM*0.1 ){
pos = rand() % TAM;
if(border[pos] == 0){
casas = (rand() % 5) + 1;
border[pos] = casas * (-1);
i++;
}
}

输出有时是 50,我不知道它是怎么来的,因为它只会在玩家达到 51 或更高时停止循环。我也得到了超高的值(value),如:299158477。我是 C 语言的新手。谢谢大家。

最佳答案

int dice = 0, number_of_players = 0, number_of_players = 2;

你的代码不应该是可编译的,一个变量声明了两次。


if(border[player1] != 0){
player1 = player1 + (border[player1]);

您不需要 if()。如果 border 为零,则结果不会改变。


i = 0;
while( i < (int)TAM*0.1 ){
pos = rand() % TAM;
if( border[pos] == 0 ){
casas = (rand() % 5) + 1;
border[pos] = casas;
i++;
}
}

这个while()应该是一个for()


while( i < (int)TAM*0.1 ){

应该是

while( i < (TAM/10) ){

casas = (rand() % 5) + 1;

也许应该是:

casas = (rand() % 6) + 1;

因为你有骰子?无论如何,与代码的逻辑无关。


player1 变为 >= TAM(在 player1 += dice; 之后),您访问了 border 之外的内存

player1 = player1 + (border[player1]);

关于c - While 循环与一些 if 语句获得超高数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com