c语言scanf的问题
#include<stdio.h>#include<math.h>
void main()
{
int a,b;
scanf("%d ",&a);
scanf("%d ",&b);
printf("%d %d\n",a,b);
}
为什么我要输入3个数字才行? 本帖最后由 Hello. 于 2020-8-16 20:45 编辑
#include<stdio.h>
#include<math.h>
int main()
{
int a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d,%d\n",a,b);
} "%d "后面的空格在用%d时表示分格符,意思是说后面还有内容等你输入; 后面输入的内会遗留在缓中区。等下次你使用相关代码时才会从缓冲区中调出。
代码:
#include<stdio.h>
#include<math.h>
void main()
{
int a,b;
char c;
scanf("%d ",&a); // %d内存存入a中。空格分格符表示后面还有内容待输入。
scanf("%d ",&b); //%d b存入的是上一条scanf空格后面遗留在缓冲区的内容。同样空格分格符表示后面还有内容待输入。
c = getchar(); // 取得上面一条scanf空格后面遗留在缓冲区的内容
printf("%d %d\n",a,b);
printf("%c\n",c);
}
"%d %d" 中间空间用%d时表示分格符,正确输入方式: 1 2 后遇'\n'回车结束。
scanf("%d ",&b);
这句话中"%d "这个格式的意思是说是在读完一个整数后,格式中的空格还需要匹配一次有效的输入,即再次读入一个非 空格/tab/回车 的数据之后才正常返回
所以改为楼上的不加空格的格式就行了
详情可以百度 scanf加空格 键盘输入 scanf() 函数是严格按照你在引号内的格式从缓冲区读取字符。一般情况下引号之间只写格式化要求,格式化内容要和输入内容一致,数与数、字符与字符之间可以用空格隔开,也可以用逗号隔开,否则就会出错。除了格式化操作符以外,不加任何其他字符,连空格都不要加。
scanf () 在你输入一个数后,它是不会立即显示的,要等再接收到一个非(空格、制表符、回车)的输入scanf语句才结束。而且,最后输入的那个非(空格、制表符、回车)的东西是不会被这个scanf读进来的,而是留在输入流里。
以下是百度百科的内容:
scanf()是C语言中的一个输出函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
#include<stdio.h>
#include<math.h>
void main()
{
int a,b;
scanf("%d ",&a);//去掉%d后的空格
scanf("%d ",&b);//去掉%d后的空格
printf("%d %d\n",a,b);
}
这样就可以正常运行
这道题,有用到 math.h ? 我怎么看不出来呀
页:
[1]