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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40301026/article/details/88836511

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

用scanf函数输入数据,举例并分析错误原因

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

#include<stdio.h>

int main()

{

int a, b;

float x, y;

char c1, c2;

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

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

猜你喜欢

转载自blog.csdn.net/qq_40301026/article/details/88836511