用scanf函数输入数据,举例并分析错误缘由 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入。

今天遇到一个小学弟开始学c语言,问了一道题。java

用scanf函数输入数据,举例并分析错误缘由函数

用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入。测试

#include<stdio.h>code

int main()blog

{io

int a, b;class

float x, y;变量

char c1, c2;百度

scanf("a=%d b=%d",&a,&b);float

scanf("%f %e",&x,&y);

scanf("%c%c", &c1, &c2);

return 0;

}

我上机运行了下:

在控制台输入了 3 7 8.5 71.82Aa

为什莫出错??????

最后看了看莫非scanf("a=%d b=%d",&a,&b);??????????????

百度下,

 scanf("输入控制符非输入控制符", 输入参数);

这种用法几乎是不用的,也建议大家永远都不要用。可是常常有人问,为何 printf 中能够有“非输出控制符”,而 scanf 中就不能够有“非输入控制符”。事实上不是不能够有,而是没有必要!下面来看一个程序:

# include <stdio.h>
int main(void)
{
int i;
scanf("i = %d", &i);
printf("i = %d\n", i);
return 0;
}

在 printf 中,全部的“非输出控制符”都要原样输出。一样,在 scanf 中,全部的“非输入控制符”都要原样输入。因此在输入的时候i=必需要原样输入。好比要从键盘给变量 i 赋值 123,那么必需要输入i=123才正确,少一个都不行,不然就是错误。

因此 scanf 中%d后面也没有必要加\n,由于在 scanf 中\n不起换行的做用。它不但什么做用都没有,你还要原样将它输入一遍。

因此在 scanf 的使用中必定要记住:双引号内永远都不要加“非输入控制符”。除了“输入控制符”以外,什么都不要加,不然就是自找麻烦。并且对于用户而言,确定是输入越简单越好。

因此正确输入为

a=3 b=7

8.5 71.82Aa

测试一下下

 对于初学的同窗详细解释一下:

  • scanf是向键盘接受数据。
  • 相似%d,%f它的做用是将输出的数据转换为指定的格式输出
  • %d 整数,%f浮点数,%e指数形式,%c字符,
  • 上面程序第3行scnaf接受两个字符,有同窗敲下一个回车或空格,没输完,就输出了。是由于,系统认为回车或空格是一个字符就接受了,因此不能输入空格。可是第一个和第二个scanf接受的不是字符,系统接受时输入一个空格或是回车就会随自动过滤掉。因此输入是:

    a=3 b=7

    8.5 71.82Aa