c语言选择题,如图,求解
2个回答
展开全部
先看scanf语句
scanf("%d%c%d%c")
中间没有任何间隔符(空格或者,),也就是scanf不会忽略掉字符全部读入。而scanf读取十进制%d数据的时候,会自动到非数字停止,即输入1076s10的话,scanf会自动检测到中间有一个非数字s的存在,会只读入1076赋值给十进制数字。
A 10A 20B
首先scanf会要求一个10进制数字,检测到10A,发现非数字,因此读入10赋值给a1,留下A 20B;然后再要求读入一个字符,发现A,赋值给c1,留下 20B;再要求读入一个10进制数字,忽略到最开始的空格,检测到20B,发现非数字,因此读入20赋值给a2,留下B;然后再要求读入一个字符,发现B,赋值给c2。因此A是正确的。
B 10 A20B
首先scanf会要求一个10进制数字,检测到10 (空格),发现非数字,因此读入10赋值给a1,留下 (空格)A20B;然后再要求读入一个字符,发现(空格),赋值给c1。因此B错误。
C 10A20 B
同A选项,a1=10,c1 = A,a2=20;读入完a2后,留下的是 B,这时要求读入一个字符的时候,发现的是 (空格),所以c2 = 空格了,错误
D 10 A 20 B
这个就不讲了吧
具体scanf是怎么略去间隔符的讲解可以详细参见百科
http://baike.baidu.com/link?url=WrFvCrlgbC0QyCWIBG25UkT1MrikbVEAEreGwsAzmhJcELTeAgYNo5BSS5aJTbzwRSJrFDsfNrkX3GZ6SJuy8q
scanf("%d%c%d%c")
中间没有任何间隔符(空格或者,),也就是scanf不会忽略掉字符全部读入。而scanf读取十进制%d数据的时候,会自动到非数字停止,即输入1076s10的话,scanf会自动检测到中间有一个非数字s的存在,会只读入1076赋值给十进制数字。
A 10A 20B
首先scanf会要求一个10进制数字,检测到10A,发现非数字,因此读入10赋值给a1,留下A 20B;然后再要求读入一个字符,发现A,赋值给c1,留下 20B;再要求读入一个10进制数字,忽略到最开始的空格,检测到20B,发现非数字,因此读入20赋值给a2,留下B;然后再要求读入一个字符,发现B,赋值给c2。因此A是正确的。
B 10 A20B
首先scanf会要求一个10进制数字,检测到10 (空格),发现非数字,因此读入10赋值给a1,留下 (空格)A20B;然后再要求读入一个字符,发现(空格),赋值给c1。因此B错误。
C 10A20 B
同A选项,a1=10,c1 = A,a2=20;读入完a2后,留下的是 B,这时要求读入一个字符的时候,发现的是 (空格),所以c2 = 空格了,错误
D 10 A 20 B
这个就不讲了吧
具体scanf是怎么略去间隔符的讲解可以详细参见百科
http://baike.baidu.com/link?url=WrFvCrlgbC0QyCWIBG25UkT1MrikbVEAEreGwsAzmhJcELTeAgYNo5BSS5aJTbzwRSJrFDsfNrkX3GZ6SJuy8q
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询