c语言scanf函数格式问题

int x1,x2;

char y1,y2;

scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);

若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)

A.10A└┘20B B.10└┘A20B

C.10 └┘A└┘20└┘ B D.10A20└┘B
为什么选a啊 不输入空格我知道也可以输入 但是为什么啊我没让用户输入空格啊

scanf从缓冲区读取的时候不是依据空格的,读整数就取一个整数,读字符就取一个字符
所以是A,比如C,读取整数10之后读到空格,会将空格当做字符放到y1中
最好的办法就是写程序跑一下,下面是程序和结果

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <iostream>
using namespace std;

int main()
{
int x1,x2;
char y1,y2;
scanf("%d%c%d%c",&x1,&y1,&x2,&y2);
printf("%d %c %d %c\n", x1,y1,x2,y2);
system("pause");
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
首先明确
1. 对于%d的输入,会忽略之前的空格
2. 对于%c的输入则不会忽略。
3. 对于%d的输入,会被字符截断,这也就是 输入"10A20B"的时候,也不会错的原因了。
正确答案是A
x1接收了10, y1接收了字符A,之后是一个空格,而输入的是%d,所以会忽略空格,所以x2接收了20,y2接收了字符B
分下下其它的选项
B, x1 接收了10, y1接收了空格,错误
C 错误同B
D x1接收了10, y1接收了A,x2接收了20,y1接收了空格。本回答被提问者采纳

C语言中scanf函数的3种常见问题与应对技巧你都会了吗?
1. 空白符问题 在输入数据时,如果在整数后面输入了一个空格或回车符,程序可能会出错。这是因为scanf函数在读取到空白字符后会跳过这些字符继续读取下一位。解决方法是确保在整数后没有额外的空白符。例如:int a;输入:5(不包含空格或回车)输出:5 避免在整数输入后添加空格或回车,以防止scanf跳过...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
C语言中的scanf函数主要用于从标准输入流中读取数据,其基本格式是scanf(“输入格式”,“输入地址”)。对于字符串的读取,虽然理论上可以通过定义字符指针并逐个读取字符,但在实践中,特别是处理用户输入时,理解并正确使用scanf的特性是至关重要的。总的来说,添加空格到scanf的输入格式是提高代码健壮性...

C语言scanf输入时可以加逗号的吗?
结论是,C语言的scanf函数在输入数据时,确实可以使用逗号来分隔不同的数据类型,但这需要确保输入的格式与scanf的格式控制字符串匹配。例如,当你使用scanf("%d,%d", &a, &b);时,输入的整数必须用逗号分隔,而不能用空格或回车。然而,对于scanf("%d%d", &a, &b);这样的格式,空白字符(空格...

C语言,语句scanf("","");
原问题是“C语言,语句scanf("7.2f",&a);是一个合法的scanf函数?”,我猜测这里"7.2f"应该问的是"%7.2f",但是也可能就是"7.2f",所以对这两种情况均进行分析。网上说“使用scanf函数对实型变量进行赋值时,在格式%f中不得控制小数位的精度,但在printf函数中可以使用,并且经常使用”,因此...

C语言scanf函数输入时键盘缓冲区\\n的问题
scanf("%c",&a);scanf("%c",&b);printf("%d %d",a,b);} 键盘输入 9<回车>buffer:39H,0AH 因为scanf会按照第一个%c格式扫描buffer(只扫描一个字节就结束),然后把扫描到的39H直接送到变量a(当以%d格式读出来时,39H就是57)此时,buffer中只有:0AH。然后,scanft又遇到第二个%...

关于c语言中scanf的问题?
(1)如果:scanf中%f之间用空格,即:scanf("%f %f %f",&a,&b,&c);应该输入1 2 3(中间有空格)(2)如果:scanf中%f之间用逗号,即:scanf("%f,%f,%f",&a,&b,&c);应该输入1,2,3(中间有,)但不能没有分隔符号,您的写法,要求3个数连续输入,这样:人都没办法分辨,机器更没法...

C语言scanf函数用法结果出现的问题
你的输入形式完全取决于你scanf("%d,%d",&a,&b); 中的形式,如你中间加了一个逗号,那么你输入的时候就应该是5,6 如果你不加逗号,那么你可以连续输入,如56它会认为是5和6.

scanf是输入格式吗?
scanf的输入格式是scanf(“输入控制符”,输入参数)。scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令)它是格式输入函数。scanf的输入格式是...

C语言关于scanf函数问题
第一个问题,因为你的scanf函数使用了域宽来指定读入的格式。所谓域宽,就是说读入的时候把某个宽度内的值付给某变量。那么。你第一个参数读入规则是%3c,意思是设置域宽为3,读入一个char型数据。你输入的是abcde。那么前面的abc将作为第一个参数给一个char型数据。而char型数据只需要一个字符,所以a...

C语言中关于scanf()函数分隔符问题?
scanf不指定分割符号时,默认以空格、回车、制表符(tab),作为分割符号,可间隔多个分割符号。至于你最后打印的c,那是换行符对应的ascii码,因为你最后输入的字符是回车。

相似回答