输入与输出_C语言快速入门与计算机二级备考

基本输入输出

占位符

  • 使用占位符可以进行格式占位,以向此位置输入输出数据

  • 常见的占位符

    1. %d 整数int
    2. %f 浮点数float
    3. %lf 双精度浮点数double
    4. %x 十六进制的数
    5. %c 字符
  • 如果输入的数据与占位符的类型不符将报错,例如%d不能输入"hello"

  • 整数的输入输出
    • 整数的输入输出只有两种类型:int 与 long long

      int%d;无符号数unsigned%u

      long long%ld;无符号数unsigned long long%lu

    • %o用于八进制数, %x用于十六进制数

  • 浮点数的输入输出
    • float:输入: %f;输出:%f;(%e输出科学计数法,使用%E时输出的e也变大写)

      需要使用后缀f来表明浮点数身份,例如:a=1.23f,不带f的字面量即表示double

    • double:输入: %lf;输出:%f,%e

    • 当需要精确到小数点后?位时,用% .?f,这样的输出是四舍五入的

输出

  • 输入所用的函数是printf

    printf("在双引号中的内容是字符串,大多情况下会被原封不动地输出");
    printf("%d",24+6);
    //%d这个占位符说明后面有一个整数要输出到这个位置上,该代码的结果将是输出30
    
逃逸字符/转义字符
  • 使用反斜杠\开头,用来表达无法打印的控制字符或特殊字符

    \b 回退一格(不删除,但新的输出将盖住原来的输出);

    \t 到下一个表格位;\n 换行;\r 回车

    \ " 双引号;\ ' 单引号;\ 反斜杠本身;

  • \后的数字是八进制,不是常数,而是代表ASCII码

输入

  • 输入所用的函数是scanf

    输入以为单位:在按下回车前程序不会读取到任何东西

    需要在变量前写一个取地址符&

    占位符之间的空格决定了是否混合输入

    scanf("%d",&a);
    //这行代码表示将输入的结果赋值给a这个变量(不要忘记写&)
    //%d用于存放整数,如果输入的不是整数会出错
    scanf("%lf %lf",&a,&b);
    //这行代码演示输入多个数字
    scanf("%d%c",&a,&c);
    //输入"12 a",a=12,c=' ',因为c读取到的是空格,如果%d与%c之间有空格,才会得到正确的结果
    
  • 注意:在Visual Studio中由于安全问题,scanf被禁用,解决方法是在代码的最开头处添上一行#define _CRT_SECURE_NO_WARNINGS 1


格式化输入输出

格式化输出

  • 对于printf%[flags][width][.prec][hlL]type

    • flag

      - 左对齐

      + 使得输出的数字带有正负号

      空格 整数留空

      0 用零填充空位

      +与-可以组合使用(同时左对齐而有正负号),但-与0不行(左对齐后无地方填0)

    • width

      数字 表示输出所占据的字符空间(在没有 - 时靠右对齐,前面出现补位空格,而数字超过时按原来数字位数输出)

      .数字 小数点后的位数 "%9.2f",123.0这将输出9个字符,并且小数点后有两位

      *使下一个参数是字符数 例如printf("%*d",6,123),参数6用于*,参数123用于d;会输出___123三个空格加三个数字总共6个字符

      .* 组合使用同理,使得下一个参数是小数点位数

    • .prec

      用于修饰数据类型

      hh表单个字节;h表short

      l表示long;ll表示long long;L表示long double

      例如%hhd所输出的将是一个char长度(一个字节)的整数

    • type

      表示所输出数据的类型

      %n是一个特别的类型,它表示所输出的字符数,示例如下

      int num;
      printf("%dABC%n",12345,&num);//输出结果是12345ABC
      printf("%d",num);//num输出的结果是8,因为输出了8个字符
      //VS因为安全问题禁用了%n
      

格式化输入

  • 对于scanf%[flag]type

    • flag
      • * 表示跳过 scanf("%*d%d",&num);当输入两个数字时(如123 456),将只读456
      • 数字表示允许输入的最大字符数
      • hh表示读入时作为char类型;h,l,ll,L与输出同理
    • type

      表示输入数据的类型

      • %i在输入时通过0前缀来录入八进制,0x前缀录入十六进制

      • […]在其中是允许输入的字符,使用例:

        输入为:ABC,124,A,,,30
        scanf("%*[^,],%[^,],%[^,]",s);
        //*跳过 配合[^,] 表示从开头到第一个逗号都跳过不读
        //第二个%[^,] 表示读第一个逗号到第二个逗号之间的124
        //注意,单独的逗号表示输入时应该带有逗号,其它字符同理
        

posted on   无术师  阅读(4)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

统计

点击右上角即可分享
微信分享提示