需要每次都会重复提示Enter value(1,2,e):
的代码。
- 输入
1
后,它应该做case 1
动作并重复提示。 - 输入
2
后,它应该做case 2
动作并重复提示。 - 输入
1,2,e
以外的内容后,应打印"try again"
并重复提示。 - 输入
e
后,它应该打印"exit program"
并结束。
错误:
如果我输入一个字符,循环是无限的......我该如何解决这个问题?
我已经尝试了一段时间循环switch statement
,如下所示。
int main() {
int value;
printf("%s", "Enter value(1,2,e):");
scanf_s("%d", &value);
while (value != 'e') {
switch (value) {
case 1:
printf("You have picked correctly!");
break;
case 2:
printf("You have picked incorrectly!");
break;
default:
printf("try again.");
}
printf("%s", "nEnter value(1,2,e):");
scanf_s("%d", &value);
} printf("Exit program");
getchar();
getchar();
}
我希望我的输出是:
Enter value(1,2,e):1 You have picked correctly!
Enter value(1,2,e):2 You have picked incorrectly!
Enter value(1,2,e):3 Try again!
Enter value(1,2,e):e Bye!
*exits program*
如果要
检查字母,则必须允许用户输入字母:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char buffer[81];
int value;
while (1) {
printf("%s", "Enter value(1,2,e):");
scanf("%s", buffer);
if ('e' == buffer[0]) {
break;
}
value = atoi(buffer);
switch (value) {
case 1:
printf("You have picked correctly!n");
break;
case 2:
printf("You have picked incorrectly!n");
break;
default:
printf("try again.n");
}
}
printf("Exit programn");
return 0;
}
注意
该程序不执行错误检查。不应在生产环境中使用此代码。
简单地说,我们可以将value
读取为 char 而不是整数,这样我们就可以输入任何东西,即数字或字符,当且仅当您想要选项"0 到 9"在开关情况下(下面的程序修改为使用字符(,如果情况大于 0..9,则程序由 @David Cullen 给出。
int main() {
char value;
printf("%s", "Enter value(1,2,e):");
scanf_s("%c", &value);
while (value != 'e') {
switch (value) {
case '1':
printf("You have picked correctly!");
break;
case '2':
printf("You have picked incorrectly!");
break;
default:
printf("try again.");
}
printf("%s", "nEnter value(1,2,e):");
scanf_s("%c", &value);
}
printf("Exit program");
getchar();
getchar();
}