为什么会跳过scanf?
#include<stdio.h>
void main()
{
int x;
while(1)
{
printf("Please input a integer:\n");
scanf("%d",&x);
if(x>=1000 || x<=0)
printf("The number you input is invalid.\n");
else
if(x>=100)
printf("The number has 3 digits.\n");
else if(x>=10)
printf("The number has 2 digits.\n");
else
printf("The number has 1 digit.\n");
}
}
源代码如上,当输入整数时反应正常, 但当输入小数(如3.4),就会陷入快速死循环, 好像跳过了scanf语句. 但把代码改成如下时, 反应正常. 不知是为什么, 我刚学编程,请大虾指导一下.
#include<stdio.h>
void main()
{
float x;
while(1)
{
printf("Please input a integer:\n");
scanf("%f",&x);
if(x>=1000 || x<=0)
printf("The number you input is invalid.\n");
else
if(x>=100)
printf("The number has 3 digits.\n");
else if(x>=10)
printf("The number has 2 digits.\n");
else
printf("The number has 1 digit.\n");
}
}
void main()
{
int x;
while(1)
{
printf("Please input a integer:\n");
scanf("%d",&x);
if(x>=1000 || x<=0)
printf("The number you input is invalid.\n");
else
if(x>=100)
printf("The number has 3 digits.\n");
else if(x>=10)
printf("The number has 2 digits.\n");
else
printf("The number has 1 digit.\n");
}
}
源代码如上,当输入整数时反应正常, 但当输入小数(如3.4),就会陷入快速死循环, 好像跳过了scanf语句. 但把代码改成如下时, 反应正常. 不知是为什么, 我刚学编程,请大虾指导一下.
#include<stdio.h>
void main()
{
float x;
while(1)
{
printf("Please input a integer:\n");
scanf("%f",&x);
if(x>=1000 || x<=0)
printf("The number you input is invalid.\n");
else
if(x>=100)
printf("The number has 3 digits.\n");
else if(x>=10)
printf("The number has 2 digits.\n");
else
printf("The number has 1 digit.\n");
}
}
...全文
相关推荐
C语言的 scanf 详细用法
**使用`*`跳过数据**: - 在格式字符前加`*`可以让`scanf`跳过对应的数据,不将其存储到变量中。
SCANF和GETCHAR的区别,GETCHAR的妙用
此外,scanf在读取数字时会自动跳过空格、制表符和换行符,直接读取数字字符。而getchar的妙用则体现在它对字符的精确控制上。
C语言printf与scanf讲解.pdf
scanf函数的格式控制字符串还可以用于跳过某些字符,例如"%*[^\n]%*c"可以跳过一行字符。同时,"%-20[^\n]"可以读取\n前20个字符。
C C++ Scanf函数的用法.
scanf 函数的控制串由三类字符构成:格式化说明符、空白符和非空白符。格式化说明符是 scanf 函数的核心部分,它定义了输入的格式。
scanf用法详解
例如:```cint i, j;scanf("%d %d", &i, &j);```这里,`&i`和`&j`分别表示变量`i`和`j`的地址。


