gpt4 book ai didi

c - 试图学习 C,但我遇到了奇怪的错误(至少对我而言)

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

我正在尝试自学 C,我之前有一些 Matlab 和 Python 方面的经验。我正在尝试创建一个简单的猜谜游戏,你给出一个数字,计算机猜测一个数字,你必须告诉它它是高还是低。我写了一些代码,但它不起作用(例如,尝试输入 30)。代码很丑陋,但我只是想了解发生了什么。

我试过使用 case 语句编写它,但结果相同。

此外,当您用 yy 回答 y/n 问题时发生了什么?数字突然上升?

#include "stdio.h"
#include "stdlib.h"

int main(void) {
int a;
int i = 1;
int b = 50;
int temp;
int last = 0;
char ans = ' ';
printf("Enter value for computer to guess (0-100): ");
scanf("%d", &a);

while (a - b) {
printf("Is the number larger than %i (y/n): ", b);
scanf("%s", &ans);
if (ans == 'y') {
temp = b;
b = b + ((b + last) / 2);
last = temp;
} else {
temp = b;
b = b - ((b + last) / 2);
last = temp;
}
i++;
}
printf("Your number was: %i. Number of guesses was: %i \n", b, i);
return 0;
}

最佳答案

在你的代码中

 scanf("%s",&ans);

调用 undefined behavior因为您超出了分配的内存。

要使用 %s 格式说明符,您需要一个数组作为参数(具体来说,是指向数组第一个元素的指针)。

但是,在你的情况下,改变

 scanf("%s",&ans);

scanf(" %c",&ans);  // note the space

可能会解决问题。或者,要处理额外输入(如yyy),您可以考虑在读取每个输入后清除输入缓冲区,如

while (getchar() != '\n');

或类似的。

关于c - 试图学习 C,但我遇到了奇怪的错误(至少对我而言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887156/

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