黑马程序员技术交流社区

标题: 数据输入格式问题 [打印本页]

作者: 每天进步一点点    时间: 2014-6-10 12:04
标题: 数据输入格式问题
本帖最后由 每天进步一点点 于 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

请高人详细讲解:


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


作者: 大龄产妇    时间: 2014-6-10 12:28
这题我似乎做过。 scanf输出原理是遇到\n就取走,scanf在接收char类型数据的时候,要保证输入缓存区内无\n 。要么加上getchar()取走这个\n,要么就用其他办法,这里是用空格。所以答案是A,先取走第一个输入char类型数据留下的\n,再输入新的char 类型数据,这样输入就不会有错。
作者: 每天进步一点点    时间: 2014-6-11 07:24
大龄产妇 发表于 2014-6-10 12:28
这题我似乎做过。 scanf输出原理是遇到\n就取走,scanf在接收char类型数据的时候,要保证输入缓存区内无\n  ...

不好意思哥哥,真心没明白,能说的再详细一点吗?谢谢
作者: 大龄产妇    时间: 2014-6-11 12:42
每天进步一点点 发表于 2014-6-11 07:24
不好意思哥哥,真心没明白,能说的再详细一点吗?谢谢

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

汗~~~~~~~~~亲,咱不在这交流去哪交流啊??快哭了说的我
作者: 康佳兴    时间: 2014-6-11 22:55
大神啊,好厉害的样子+




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2