gpt4 book ai didi

C程序While循环问题

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

我有一个程序要写,但它给我带来了麻烦。

它要求用户输入,例如建议他们想知道区域和/或表面的形状。这个元素,我已经掌握了。

问题是,当我尝试添加 while 循环来说明响应无效时,它会把整个程序搞得一团糟。

我需要它说,“无效响应,请选择选项 1、2、3 或 4 等。”

我正在编写如下循环:

printf("Please enter 1 for area or 2 for surface area: ");
scanf("%i",&menu1);
while(menu1!=1&&menu1!=2) {
printf("Invalid option. Please enter 1 for area or 2 for surface area: ");
scanf("%i",&menu1);
}

现在的问题是,当用户做出有效响应时,会出现“无效响应”。如何解决这个问题?

最佳答案

以下对我有用:

#include <stdio.h>

int main(void) {
int menu1; // Make sure this is declared

printf("Please enter 1 for area or 2 for surface area: ");
scanf("%i", &menu1);

while((menu1 != 1) && (menu1 != 2)) {
printf("Invalid option. Please enter 1 for area or 2 for surface area: ");
scanf("%i", &menu1);
}

return 0;
}

您没有发布完整的代码,但我假设您在 scanf 中使用它之前没有声明 menu1。那肯定会引起问题。

更新

正如@John 在评论中指出的那样,您可以通过使用 do-while 来消除一些冗余,以确保循环始终至少运行一次。

正如@Cqnqrd 指出的那样,如果您输入非整数值,scanf 可能会导致一些无限循环问题,原因详述 here .您可以使用 fgets 和 atoi 比 scanf 更好地处理非整数输入(防止在诸如“aa”之类的输入上出现无限循环)。

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

int main(void) {
int menu1 = 0;
char input[256];

do {
printf("Please enter 1 for area or 2 for surface area: ");
fgets(input, 256, stdin);
menu1 = atoi(input);

if ((menu1 != 1) && (menu1 != 2)) printf("Invalid entry. ");
} while ((menu1 != 1) && (menu1 != 2));

return 0;
}

关于C程序While循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21910679/

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