FIELD
执行此程序后,它没有要求第二个scanf函数,所以它在第三个printf语句printf之后终止("你想......"); 帮我纠正它!
答案 0 :(得分:3)
基本问题是scanf()在缓冲区中的数字后面留下换行符,然后在下一遍中用%c读取它。
您可以使用" %c"
代替"%c"
来格式化字符串来拯救它。空白导致scanf()在读取字符
或者您可以使用getchar()函数
答案 1 :(得分:1)
将第一个scanf
更改为
scanf("%d\n", &num);
或将第二个scanf
更改为
scanf(" %c", &letter);
忽略换行符。
另一种选择(将读取直到输入有效整数)
#include <stdio.h>
int main() {
int n;
while(1) {
printf("Enter any number: ");
if (scanf("%d", &n) != 1)
break;
printf("Square of %d is %d\n", n, n * n);
}
}
<强>输入强>
2
3
5
<强>输出强>
Enter any number: 2
Square of 2 is 4
Enter any number: 3
Square of 3 is 9
Enter any number: 4
Square of 4 is 16
Enter any number:
答案 2 :(得分:0)
我稍微修改了你的代码:
#include<stdio.h>
#inlcude <conio.h>
void main()
{
char letter;
int num;
clrscr();
do
{
printf("Enter any number: ");
scanf(" %d",&num);
printf("Square of %d is %d\n",num,num*num);
printf(" you want to enter another number? y/n");
scanf(" %c",&letter);
}while(letter=='y');
}
我刚刚在scanf上添加空格以在scanf读取整数之前取消空格。 %d 只会读取整数,因此有一个text / char会取消该程序。希望它有所帮助!
编辑:我忘了告诉你,我为 clrscr(); 添加了另一个#include,以便在重新运行程序时清除屏幕。