C语言问题,求解释
执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是()。main(){chars[100];intc,i;scanf("%c",&c);scanf...
执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是( )。
main()
{ char s[100];
int c, i;
scanf("%c", &c);
scanf("%d", &i);
scanf("%s", s);
printf("%c, %d, %s\n", c, i, s);
}
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);
}
A) 123,456,789 B) 1,456,789
C) 1,23,456,789 D) 1,23,456 展开
展开全部
在键盘输入的时候 空格消息表示null代表输入结束 空格前边的值就赋给变量
123空格 由于第一个接收的是字符类型 只能接收'1' 23还在缓冲区里 这时i变量正需要接收10进制的整形数据...所以23就赋给了i 23后边是空格 就停止了
之后s又从缓冲区里接收了 字符串456 后边又是空格 接收停止 所以最后答案是1,23,456
如果第三个scanf改一下 变成scanf("%[^\n]", s); 答案就应该是第三个(456和789中间没有逗号)
scanf中%[^\n]是接收从^字符到\n字符的所有字符,原本scanf是不接收空格的,遇到空格就当做null来处理停止接受其后边的字符,但是这样控制输入后就会接收空格了,其实也可以用gets函数来接收,gets也接收空格的
123空格 由于第一个接收的是字符类型 只能接收'1' 23还在缓冲区里 这时i变量正需要接收10进制的整形数据...所以23就赋给了i 23后边是空格 就停止了
之后s又从缓冲区里接收了 字符串456 后边又是空格 接收停止 所以最后答案是1,23,456
如果第三个scanf改一下 变成scanf("%[^\n]", s); 答案就应该是第三个(456和789中间没有逗号)
scanf中%[^\n]是接收从^字符到\n字符的所有字符,原本scanf是不接收空格的,遇到空格就当做null来处理停止接受其后边的字符,但是这样控制输入后就会接收空格了,其实也可以用gets函数来接收,gets也接收空格的
展开全部
d
原因:
123 456 789
char :只要一个字符键入,就结束。‘1’,从2开始,识别为整数
int: 遇到空格结束,故整数识别为 23
string:空格被转义,结束串。识别为456
789被忽略
原因:
123 456 789
char :只要一个字符键入,就结束。‘1’,从2开始,识别为整数
int: 遇到空格结束,故整数识别为 23
string:空格被转义,结束串。识别为456
789被忽略
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得应该是: (D)1,23,456
第一个scanf接受是一个字符,所以为1
第二个scanf接受一个数字,遇到空格或回车或Tab数字就停止接受,所以是23
第三个scanf接受字符串,遇到回车或空格或Tab字符串就停止接受所以为456
第一个scanf接受是一个字符,所以为1
第二个scanf接受一个数字,遇到空格或回车或Tab数字就停止接受,所以是23
第三个scanf接受字符串,遇到回车或空格或Tab字符串就停止接受所以为456
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-12
展开全部
%c是输入一个字符,所以向c中读取的就是1这个字符,接着将23赋值给int i,空格之后,才输入的是对s的赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-12
展开全部
好像都不对
更多追问追答
追问
真心有答案
追答
1,23,456
实践是检验真理的唯一标准。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询