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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王海江1 中级黑马   /  2014-6-25 23:14  /  1867 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是( )。
A. 123,456,789                               B. 1,456,789
C. 1,23,456,789                              D. 1,23,456
main()
{
    char  s[100];  int  c, i;
    scanf("%c",&c);  scanf("%d",&i);  scanf("%s",s);
    printf("%c,%d,%s\n",c,i,s);
}

答案选D
哪位给解释一下?

4 个回复

倒序浏览
是这样的:
scanf("%c",&c); 格式字符c是用来输入一个字符的,所以c变量里保存的是字符‘1’的整数代码。
scanf("%d",&i);  格式字符d是用来输入十进制数的,当输入不是数值的字符时,结束输入。所以i变量的值是23。
scanf("%s",s);格式字符s是用来输入字符串的,以遇到的第一个空白字符结束,并以'\0'作为最后一个字符,所以输出s时是456。
结果就是:1,23,456


回复 使用道具 举报
不懂帮顶,LS回答很详细。
回复 使用道具 举报
完美世界 发表于 2014-6-26 08:14
是这样的:
scanf("%c",&c); 格式字符c是用来输入一个字符的,所以c变量里保存的是字符‘1’的整数代码。
s ...

scanf("%s",s);格式字符s是用来输入字符串的,以遇到的第一个空白字符结束,并以'\0'作为最后一个字符,所以输出s时是456。
结果就是:1,23,456

以遇到的第一个空白字符结束------这句话说的不对吧????字符串应该是遇到\0才结束的吧??
回复 使用道具 举报
王海江1 发表于 2014-6-26 14:24
scanf("%s",s);格式字符s是用来输入字符串的,以遇到的第一个空白字符结束,并以'\0'作为最后一个字符,所 ...

用scanf函数从键盘输入字符串的时候,是这样的。并且系统会自动添加'\0'到字符串结尾处。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马