【发布时间】:2014-02-20 14:02:36
【问题描述】:
我有一个程序要写,它给我带来了麻烦。
它会询问用户输入,例如建议他们想知道区域和/或表面的形状。这个元素,我已经掌握了。
问题在于,当我尝试添加 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);
}
现在的问题是当用户做出有效响应时,会出现“无效响应”。如何解决这个问题?
【问题讨论】:
-
你贴的sn-p代码连编译都编译不了,请贴出真正能编译运行的,遇到你描述的问题
-
printf("面积请输入1,表面积请输入2:"); scanf("%i",&menu1); while(menu1!=1&&menu1!=2) { printf("无效选项。请输入 1 表示面积或 2 表示表面积:"); scanf("%i",&menu1); }
-
道歉。那是从程序中复制的代码。
-
我认为您的键盘有问题。 " " - 这是一个空格字符,因此您可以将其复制粘贴到您的代码中。
-
总是测试来自
scanf()的返回值;否则,您将不知道它何时告诉您它无法解释输入。if (scanf("%i", &menu1) != 1) { …error; could not read integer… }。例如,如果用户键入一个字母,您的代码将永远陷入循环,scanf()报告“我无法转换任何内容”,而您告诉它“再试一次”。