想想韭菜会怎么做 2022-03-12 13:27 采纳率: 0%
浏览 40

C语言字符类型和整形输入

代码

int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

输入程序中,字符型后面要加空格吗,为什么?若要加,是否可以不加空格?

  • 写回答

4条回答 默认 最新

  • 关注

    应该是必须不能加。写个代码运行一下看看结果就知道了。代码如下:

    #include <stdio.h>
    int main()
    {
        int a1,a2;
        char c1,c2;
        scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
        printf("a1=%d\n",a1);
        printf("a2=%d\n",a2);
        printf("c1=%c\n",c1);
        printf("c2=%c\n",c2);
        return 0;
    }
    

    不加空格的情况:

    img

    加空格的情况:

    img

    img

    原因:
    %d后面跟%c的时候,%c会直接读取整数后面的字符,也就是在输入一个整数后,编译器会把不能分配给整数的字符分配给c1,举个例子,假如输入123a,那么a不是数字,所以不能分配给整数,整数部分是123,a分配给c1。所以如果在123后面加了空格,空格会被分配给c1,而a就会导致后面的%d读取错误。所以%d和%c之间没有空格的时候,输入的整数和字符之间也不能有空格

    如有帮助,望采纳,谢谢。

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日

悬赏问题

  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL