【发布时间】:2021-12-22 08:53:46
【问题描述】:
我有这段代码(因为逻辑是家庭作业的一部分,所以省略了函数):
#include <stdio.h>
int main()
{
char c = 'q';
int size;
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("Length:");
scanf("%d",&size);
while(c!='q')
{
switch(c)
{
case 'l': line(size); break;
case 's': square(size); break;
case 't': triangle(size); break;
}
printf("\nShape (l/s/t):");
scanf("%c",&c);
printf("\nLength:");
scanf("%d",&size);
}
return 0;
}
前两个 Scanf 的工作很好,一旦我们进入 while 循环就没有问题,我有一个问题,当你应该被提示输入一个新的形状字符时,它反而跳到了 printf 的长度并等待从那里获取一个字符的输入,然后在循环的下一次迭代中获取一个小数。
预循环迭代:
Scanf:形状。效果很好
Scanf:长度。没问题
循环 1。
Scanf:形状。跳过这个
Scanf:长度。问题,这个 scanf 映射到形状 char。
循环 2
Scanf:形状。跳过这个
Scanf:长度。问题,这个 scanf 现在映射到大小 int 。
为什么要这样做?
【问题讨论】: