【发布时间】:2014-09-07 12:16:26
【问题描述】:
我才开始编写 C 代码。(这里是大一,没有经验,只有基本的 html) 出于某种原因,每当我选择选项“N”时,它只会创建一个新行。
在我的第二个scanf 中,每当我更改我的'%s' 时,结果都会发生变化。
当我使用"%d"时,输入一个数字后,它不断输入“Choose a number between 1-4”。如果我使用"%c",输入数字后会直接跳到循环。帮忙?
#include <stdio.h>
int main()
{
int n, ok = 0;
char input;
while (ok == 0)
{
printf("Choose a number between 1-4\n");
scanf("%d", &n);
switch (n)
{
case 1:
printf("You've chosen number 1");
break;
case 2:
printf("You've chosen number 2");
break;
case 3:
printf("You've chosen number 3");
break;
case 4:
printf("You've chosen number 4");
break;
default:
printf("You have chosen an invalid number");
}
printf("\nInput again? (Y/N)\n");
scanf("%s", &input);
if (input=='n'||input=='N')
{ok++;}
else if (input=='Y'||input=='y')
{printf("\n");}
}
getchar();
getchar();
}
【问题讨论】:
-
为什么没有
iostream的std::cin?它更易于使用。 -
scanf("%d"不会从流中删除换行符(对应于您按 Enter 键的内容)。您随后的scanf会阅读它。要检测到这一点,您可以检查scanf("%s"的结果并检查您收到的内容(除了与 YyNn 进行比较之外)。为防止出现这种情况,您需要在成功输入%d后丢弃该行的其余部分。 -
与你的问题无关,但你的代码不是很优雅。如果要选择的数字在 1 到 100 之间,如何编写此代码?
标签: c++ c loops switch-statement case