黑马程序员技术交流社区

标题: scanf和printf [打印本页]

作者: 王海江1    时间: 2014-6-25 23:14
标题: scanf和printf
运行下面的程序,如果从键盘上输入: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
哪位给解释一下?
作者: 完美世界    时间: 2014-6-26 08:14
是这样的:
scanf("%c",&c); 格式字符c是用来输入一个字符的,所以c变量里保存的是字符‘1’的整数代码。
scanf("%d",&i);  格式字符d是用来输入十进制数的,当输入不是数值的字符时,结束输入。所以i变量的值是23。
scanf("%s",s);格式字符s是用来输入字符串的,以遇到的第一个空白字符结束,并以'\0'作为最后一个字符,所以输出s时是456。
结果就是:1,23,456



作者: Emy♪    时间: 2014-6-26 09:40
不懂帮顶,LS回答很详细。
作者: 王海江1    时间: 2014-6-26 14:24
完美世界 发表于 2014-6-26 08:14
是这样的:
scanf("%c",&c); 格式字符c是用来输入一个字符的,所以c变量里保存的是字符‘1’的整数代码。
s ...

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

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

用scanf函数从键盘输入字符串的时候,是这样的。并且系统会自动添加'\0'到字符串结尾处。




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