c语言scanf函数格式问题

intx1,x2;chary1,y2;scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的... 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啊 不输入空格我知道也可以输入 但是为什么啊我没让用户输入空格啊
展开
 我来答
百度网友834a0a1e3
2015-01-05 · TA获得超过835个赞
知道小有建树答主
回答量:1031
采纳率:62%
帮助的人:155万
展开全部
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;
}

寒寒家
推荐于2017-09-03 · TA获得超过2919个赞
知道大有可为答主
回答量:1482
采纳率:100%
帮助的人:1954万
展开全部
首先明确
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接收了空格。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式