唯777 2023-05-05 16:28 采纳率: 71.4%
浏览 67

C语言练习题 答案存在疑惑

12题for循环为什么答案是10,另外我对于for循环不是很了解,为什么有时候for循环输出的是多个值,有时候却输出最后一个值;
13题输入格式没有空格,如果输入数据有空格不会抢占格式位吗;
17题A选项哪里不对了;
20题C选项为什么错误,B难道不是错的吗while 后面多了分号;
26题B为什么是正确的,空格不多吗;
4题C为什么错了,八进制哪里不对了;
5题D是十六进制,不应该是一到两位十六进制数吗?它都有四位了,不应该是错的吗?

img


img


img


img

  • 写回答

4条回答 默认 最新

  • 创意程序员 2023-05-05 17:33
    关注

    12题:for(i=0; i<10; i++) 各语句执行顺序如下:

    1. 先 i=0 且仅执行一次
    2. 判断 i<10,如果满足条件执行循环体,本题为空什么都不做
    3. i++,然后再执行2,满足条件还会执行3,否则就退出了。
      i 增加到10以后,不满足2,退出,所以输出10

    13题:scanf函数使用格式字符串控制输入数据的格式,格式字符串中的各个格式控制字符用来指定要读入的数据类型和数据之间的分隔符。对于%d格式控制字符来说,scanf函数会自动跳过输入数据之间的空白字符,例如空格、制表符和换行符,直到读取到下一个非空白字符为止。而对于%c格式控制字符来说,scanf函数会读取并返回下一个输入字符,包括空白字符。A 和 C 都对。
    10a20b 与格式字符串匹配
    10a 20b 读取a2时自动跳过空格
    其它地方加了空格,导致输入错乱,都是错误的。
    .
    17题:有问题,void fun()就没有返回。
    20题:都没错,while(0); w=7; 是两个语句,前者while空循环体,且条件也为假
    26题:和13题一样,会跳过空格
    4题:使用前缀0表示一个八进制数
    5题:AD都是16进制
    .
    附上第13题的运行截图,为你那个答案平反:

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月5日
  • 创建了问题 5月5日