C程序的While循环问题
我有一个程序要写,它给我带来了麻烦 它要求用户输入信息,例如建议他们希望知道区域和/或曲面的形状。这个元素,我已经掌握了 问题是,当我尝试添加while循环来表示响应无效时,它会把整个程序搞砸 我需要它说,“无效响应,请选择选项1、2、3或4等 我将循环编写如下:C程序的While循环问题,c,loops,C,Loops,我有一个程序要写,它给我带来了麻烦 它要求用户输入信息,例如建议他们希望知道区域和/或曲面的形状。这个元素,我已经掌握了 问题是,当我尝试添加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("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;
}
您发布的代码片段甚至不会编译,请发布一个真正编译并运行的代码片段printf(“请为面积输入1或为表面积输入2:”;scanf(“%i”),&menu1);而(menu1!=1&&menu1!=2){printf(“无效选项。请为面积输入1或为表面积输入2:”;scanf(“%i”,&menu1);}抱歉。这是从程序中复制的代码。我想你的键盘可能有问题。”“-这是一个空格字符,你可以将它复制粘贴到你的代码中。请始终从
scanf()
测试返回值;否则,你将不知道它何时告诉你它无法解释输入。if(scanf(“%I”,&menu1)!=1){…错误;无法读取整数…}
。例如,如果用户键入一个字母,您的代码将永远卡在循环中,scanf()
报告“我无法转换任何内容”,而您告诉它“再试一次”“。do-while循环在这里会更有用吗?@John可能。我试图让它尽可能与问题的主体相似,同时仍让它进行编译。当输入无效选项时(如'aa'),我的控制台被垃圾发送了printf
语句。@Cqnqrd不是C编程,我猜这是scanf
被赋予非整数值的错误?是的,请参阅
#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;
}