需要每次重复提示Enter value(1,2,e):
的代码。
1
后,它应该执行case 1
操作并重复提示。2
后,它应该执行case 2
操作并重复提示。1,2,e
以外的其他字符后,它应打印"try again"
并重复提示。e
后,它应打印"exit program"
并结束。错误:
如果我输入一个字符,则循环是无限的...我该如何解决?
我在while循环中尝试了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*
答案 0 :(得分:0)
如果要检查字母,则必须允许用户输入字母:
#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 program\n");
return 0;
}
注意
该程序不进行错误检查。此代码不应在生产环境中使用。
答案 1 :(得分:0)
为简单起见,我们可以将value
读为char而不是整数,这样,当且仅当您希望使用选项“ 0到9”时,我们才能输入数字或字符。
在switch case中(在修改为使用chars的程序下面),如果case大于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();
}