gpt4 book ai didi

c - 结合 if 语句来设置值限制

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:10 24 4
gpt4 key购买 nike

我正在为我的程序创建一个战舰程序;该程序运行良好,但我试图确保当用户将坐标超出范围时,程序会说他们输入的坐标不正确。这是代码:

    #include <stdio.h>
#include <stdlib.h>

void startBoard(int board[][5])
{
int line, column;
for(line=0 ; line < 5 ; line++ )
for(column=0 ; column < 5 ; column++ )
board[line][column]=-1;
}

void showBoard(int board[][5])
{

int line, column;

printf("\t1 \t2 \t3 \t4 \t5");
printf("\n");

for(line=0 ; line < 5 ; line++ ){
printf("%d",line+1);
for(column=0 ; column < 5 ; column++ ){
if(board[line][column]==-1){
printf("\t~");
}else if(board[line][column]==0){
printf("\t*");
}else if(board[line][column]==1){
printf("\tX");
}

}
printf("\n");
}

}

void startShips(int ships[][2]){
srand(time(NULL));
int ship, last;

for(ship=0 ; ship < 3 ; ship++){
ships[ship][0]= rand()%5;
ships[ship][1]= rand()%5;
for(last=0 ; last < ship ; last++){
if( (ships[ship][0] == ships[last][0])&&(ships[ship][1] == ships[last][1]) )
do{
ships[ship][0]= rand()%5;
ships[ship][1]= rand()%5;
}while( (ships[ship][0] == ships[last][0])&&(ships[ship][1] == ships[last][1]) );
}

}
}

void giveShot(int shot[2])
{

printf("Line: ");
scanf("%d",&shot[0]);
shot[0]--;

printf("Column: ");
scanf("%d",&shot[1]);
shot[1]--;

}

int hitship(int shot[2], int ships[][2])
{
int ship;

for(ship=0 ; ship < 3 ; ship++){
if( shot[0]==ships[ship][0] && shot[1]==ships[ship][1]){
printf("You hit a ship with the shot (%d,%d)\n",shot[0]+1,shot[1]+1);
return 1;
}
}
return 0;
}

void tip(int shot[2], int ships[][2], int attempt)
{
int line=0,
column=0,
row;

//count how many ships there is line/column
for(row=0 ; row < 3 ; row++){
if(ships[row][0]==shot[0])
line++;
if(ships[row][1]==shot[1])
column++;
}

printf("\nDica %d: \nline %d -> %d ships\ncolumn %d -> %d ships\n",attempt,shot[0]+1,line,shot[1]+1,column);
}

void changeBoard(int shot[2], int ships[][2], int board[][5]){
if(hitship(shot,ships))
board[shot[0]][shot[1]]=1;
else
board[shot[0]][shot[1]]=0;
}

int main() {
int board[5][5];
int ships[3][2];
int shot[2];
int attempts=0,
hits=0;

startBoard(board);
startShips(ships);

printf("\n");

do{
showBoard(board);
giveShot(shot);
attempts++;

if(hitship(shot,ships)){
tip(shot,ships,attempts);
hits++;
}
else
tip(shot,ships,attempts);

changeBoard(shot,ships,board);


}while(hits!=3);

printf("\n\n\nFinished game. You hit the three ships in %d attempts", attempts);
showBoard(board);
}

最佳答案

我认为 while 语句比 if 更有用。

首先要求用户输入值。然后,当用户输入错误的值时,您会继续询问他。

它可能看起来像这样:

printf("Line: ");
scanf("%d",&shot[0]);
while(shot[0]<lower_bound || shot[0]>upper_bound){
printf("Incorrect entry");
printf("Enter a correct Line: ");
scanf("%d",&shot[0]);
}
shot[0]--;

如果您确实需要 if,您可以将 while 更改为 if,但这只会检查一次值,而一会儿语句会不断检查,直到你得到你需要的。

关于c - 结合 if 语句来设置值限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175955/

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