A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 每天进步一点点 中级黑马   /  2014-6-10 12:04  /  1499 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 每天进步一点点 于 2014-6-13 22:00 编辑

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

请高人详细讲解:


如果是一道填空题,答案都有哪些?

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

6 个回复

倒序浏览
这题我似乎做过。 scanf输出原理是遇到\n就取走,scanf在接收char类型数据的时候,要保证输入缓存区内无\n 。要么加上getchar()取走这个\n,要么就用其他办法,这里是用空格。所以答案是A,先取走第一个输入char类型数据留下的\n,再输入新的char 类型数据,这样输入就不会有错。

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报
大龄产妇 发表于 2014-6-10 12:28
这题我似乎做过。 scanf输出原理是遇到\n就取走,scanf在接收char类型数据的时候,要保证输入缓存区内无\n  ...

不好意思哥哥,真心没明白,能说的再详细一点吗?谢谢
回复 使用道具 举报
每天进步一点点 发表于 2014-6-11 07:24
不好意思哥哥,真心没明白,能说的再详细一点吗?谢谢

我说上好像说的时\n  应该是‘\0’,你 就记得当输入char类型的时候,char类型结尾都以\0结尾,当scanf输入数据时,会去输入缓存区内找,直接把char类型的 \0 之前所有东西都取走。留下\0,当下次输入数据的时候,取的不是再次输入的数据,而是这个 \0 。要想避免,就在输入一次char类型数据完成后,立即吧\0 取走。方法,getchar( ) ,或空格。你自己再看看scanf原理,我回答你很多问题,一道题都没有加分。你提问有点多了,刷分嫌疑。我也白回答了。  
回复 使用道具 举报
只有A是对的
回复 使用道具 举报
大龄产妇 发表于 2014-6-11 12:42
我说上好像说的时\n  应该是‘\0’,你 就记得当输入char类型的时候,char类型结尾都以\0结尾,当scanf输 ...

汗~~~~~~~~~亲,咱不在这交流去哪交流啊??快哭了说的我
回复 使用道具 举报
大神啊,好厉害的样子+
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马