我在c编程中哪里出错了


#include<stdio.h>
void game(int round, int *guess_number, int *player_number, char *status) {
if(guess_number<player_number&&round<=1)
printf("Try a smaller number.n");
else if(guess_number>player_number&&round<=1)
printf("Try a bigger number.n");
else if(guess_number==player_number)
status='W';
else
status='L';
}
int main() {
int i,g_number=45,p_number,status;
for(i=0;i<=2;i++) {
do {
printf("Enter a number between 0 to 100:");
scanf("%d",&p_number);
} while(p_number<0||p_number>100);
game(i,&g_number,&p_number,&status);
}
return 0;
}

我正在等待它猜测数字,并将状态均衡为W,如果数字正确,如果不正确,它将给出一个提示,并有权尝试2。如果最后一次尝试也是错误的,则其状态必须为"L"。

除了status之外,您不需要指针。

你想要这个:

#include <stdio.h>
void game(int round, int guess_number, int player_number, char *status) {
if (guess_number < player_number && round <= 1)   // don't use pointers
printf("Try a smaller number.n");
else if (guess_number > player_number && round <= 1)
printf("Try a bigger number.n");
else if (guess_number == player_number)
*status='W';   // dereference here
else
*status='L';   // dereference here
}
int main() {
int i, g_number = 45, p_number, status;
for (i = 0; i <= 2; i++) {
do {
printf("Enter a number between 0 to 100:");
scanf("%d", &p_number);
} while (p_number < 0 || p_number > 100);
game(i, g_number, p_number, &status);  // don't use pointers except for status
}
return 0;
}

还要注意,空格是你的朋友。

什么更可读?此:

if (guess_number > player_number && round <= 1)

或者这个

if(guess_number>player_number&&round<=1)`

请注意,如果程序尚未完成,则需要在调用game后检查status,以便向用户显示他是赢了还是输了。

最新更新