筱Lain 2022-11-03 12:42 采纳率: 90.5%
浏览 34
已结题

为什么选A呀?有人可以解释一下吗?

单选题

设有定义:int a,b; float x,y; ,则以下选项中对语句所作的注释叙述错误的是()。

A

scanf("%d%d%f", &a, &b); /* 多余的格式符%f完全不起作用 */

B

scanf("%d%d", &a, &b, &x); /* 多余的输入项不能获得输入数据 */

C

scanf("%d%f%d", &a, &b, &x); /* 输入项与格式符类型不匹配,变量b和x得不到正确的输入数据 */

D

scanf("Input:%d%d", &a, &b); /* 格式串中允许加入格式符以外的字符串 */

  • 写回答

2条回答 默认 最新

  • 於黾 2022-11-03 14:18
    关注

    那就一项一项来呗
    A
    scanf("%d%d%f", &a, &b); /* 多余的格式符%f完全不起作用 */
    不是不起作用,是你输入3个数,但是只有前2个数赋值给了a和b,但是如果你只输入2个数,程序依然处于阻塞状态不会往下走
    B
    scanf("%d%d", &a, &b, &x); /* 多余的输入项不能获得输入数据 */
    变量x没有对应的输入项,不能获得赋值,你可以在控制台输入3个数据,但只有前2个会被读入,第三个会驻留在缓冲区里,直到再次调用scanf被读入(比如循环读)
    C
    scanf("%d%f%d", &a, &b, &x); /* 输入项与格式符类型不匹配,变量b和x得不到正确的输入数据 */
    c语言比较古早,不智能,它不管你变量是什么类型,只看你使用什么符号来读,你告诉它按照float型读,它就把输入数据按照float型组成4个字节放进你提供的地址里,这个地址是&b,但是其实b是int型,这会造成数据全乱码了
    D
    scanf("Input:%d%d", &a, &b); /* 格式串中允许加入格式符以外的字符串 */
    Input:部分是直接输出的,不格式化,这当然是允许的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月3日