c语言-printf函数和scanf函数简单使用

printf函数介绍

  • printf函数是输出到控制台

    • printf函数是c语言标准库函数,能够准确的格式输出程序运算结果

    • printf函数的调用格式为:

      • printf("格式控制字符串",输出项列表);
      • 例如:printf("%i",a);
      • 输出项列表可以省略,printf("hello word")
    • 简单用法:

    • // int类型
      int number = 10;
      printf("number的值是%i",number) //使用%i
      
      // float类型
      float FloatNumber = 20.0f; // float类型要加上f标示,默认是double类型的
      printf("FloatNumber的值是%f",FloatNumber) // 使用%f
         
      // double类型
      double DoubleNumber = 30.01234567890;
      printf("DoubleNumber的值是%lf",DoubleNumber) //使用lf,longfloat
      printf("DoubleNumber的值是%.10lf",DoubleNumber) // printf函数默认强制输出小数点后6位,想要输出双精度的需要指定你要输出小数点后面几位
      // char类型
      char CharNumber = 'a';
      printf("CharNumber的值是%c",CharNumber) // 使用%c

       

    • 指定位宽

          // 指定位宽
          int number = 99;
          // 如何指定位宽,%mi;其中m就是位宽,而i就是输出对应的数据类型
          printf("%i\n",number);
          printf("%5i\n",number); // 可以明显的看到number的左边多出来一段空格,其实是由三个空格的
      
          // 默认情况下位宽是右对齐,如果需要输出的位宽不够会在左边补空格
          // 如果在位宽前面加负号-,就会改变对齐方式为左对齐,如果需要输出的位宽不够会在右边补空格
      
          printf("%-5i\n",number);
          
          // 如果指定的位宽,但实际的内容超过了位宽的,会按照实际内容进行展示
          int value = 999999;  // value是有6位的
          printf("%5i\n",value); //这里的value打印出是6位的,并不是指定位宽的5位
    • 打印出01,02,03的效果

          // 如果我们想打印出01,02,03,04,05的效果的话怎么办呢?
          // 只需要在指定位宽前面加0即可
          int sum = 1;
          printf("%2i\n",sum); // 打印出 1;
          printf("%02i\n",sum); // 打印出01   在指定位宽的前面加了0,注意添加的位置
    • 保留位数

          // 保留位数
          float floatValue = 3.1415926666;
          printf("%f\n",floatValue); // %f默认保留6位小数
          
          // 指定保留几位小数
          printf("%.2f\n",floatValue); // %.nf   在前面添加., n为保留几位小数的数字即可
          
          // %f各种坑
          // 1,我想把floatValue全部打印出来,那保留位数填写10看看应该全部都能显示吧?
          // 如果输出数据超出了有效位数,那后面就会出现一些垃圾数据。
          printf("%.10f\n",floatValue); // 3.1415927410  看有效位数y只有7位
          
          // 那如果想要完整输出这个floatValue就要用double类型
          double doubleValue = 3.1415926666;
          printf("%.10lf\n",doubleValue); // double类型的有效位数是15位,那如果超过15位的话也没有办法了哈

scanf函数

  • scanf函数是一个阻塞式函数,程序如果遇到就会停下来等待用户输入内容

  • 格式:scanf("格式化字符串",列表项)

        // 要求存储用户输入的整数
        // 1,用户输入的整数是确定的么?不确定,定义一个变量
        int number = 0;
        // 2,如何接受用户输入的整数scanf()
        printf("请输入一个整数,以回车结束\n");
        scanf("%i",&number); // 使用&符号,注意必须告诉scanf函数详细地址,才能存储用户输入的数据
        // 3,格式:scanf("格式化字符串",列表项)
        printf("%i\n",number);
  • 练习:从控制台输入两个整数,计算两个整数的和

        // 练习:从控制台输入两个整数,计算两个整数的和
        // 定义两个变量
        int value1 = 0;
        int value2 = 0;
        // 使用scanf函数,让用户从控制台输入整数
        printf("请您输入第一个整数,以回车结束\n");
        scanf("%i",&value1);
        printf("请您输入第二个整数,以回车结束\n");
        scanf("%i",&value2);
        // 定义s第三个变量,接收两个变量相加的值
        int sum = 0;
        // 求和
        sum = value1+value2;
        printf("%i+%i=%i\n",value1,value2,sum);
    • 用一个scanf接收两个从控制台输入的内容
         // 练习:从控制台输入两个整数,计算两个整数的和
        // 定义两个变量
        int value1 = 0;
        int value2 = 0;
        // 使用scanf函数,让用户从控制台输入整数
        printf("请您输入两个数字,以逗号分隔,以回车结束\n"); 
        scanf("%i,%i",&value1,&value2); // 注意输入的内容要求必须要与格式花字符串一摸一样
        // 如果输入的数据与格式化字符串不匹配,那么scanf就会自动终止
        // 定义s第三个变量,接收两个变量相加的值
        int sum = 0;
        // 求和
        sum = value1+value2;
        printf("%i+%i=%i\n",value1,value2,sum);
    • scanf函数如果格式化字符时没有写格式的话,输入的多个数据是以,空格,回车来区分的
    scanf("%i%i",&value1,&value2);
    // 此时在控制台输入回车或者空格,才能区分这两个数据
    • scanf函数中使用%c的注意点

  • 避免scanf函数中%c的问题,只要是一次性接收多个值的时候就使用固定的符号进行分隔(如:逗号,句号,等等)
    scanf("%i,%c,%i",&value1,&value3,&value2);
    printf("%i,%c,%i\n",value1,value3,value2);
  • 注意scanf函数中避免写\n,因为\n是scanf函数的结束符
scanf("%i\n",&value1);
// 此时在控制台输入按回车是没有用的,结束不了,怎么结束呢输入一个不匹配的字符即可
  • 注意scanf函数中如果输入缓冲区还有值时,不会要求用户输入,直接取输入缓冲区内的值即可
    int value1 = 0;
    int value2 = 0;
    char value3;
    // value1-->123 value3-->a  value2-->456
    // scanf("%i%c%i",&value1,&value3,&value2);
    printf("请输入数据,以回车结束\n");
    scanf("%i%c%i",&value1,&value3,&value2);
    printf("value1=%i,value3=%c,value2=%i\n",value1,value3,value2);
    
    // 如果输入缓冲区有内容就不会让用户去输入,直接取
    
    char value4;
    int value5 = 0;
    scanf("%c%i",&value4,&value5);
    printf("value4=%c,value5=%i\n1",value4,value5);

控制台:
请输入数据,以回车结束
123 你好啊 456
value1=123,value3= ,value2=0
value4=n,value5=0
1Program ended with exit code: 0

scanf函数的原理简单介绍

posted @ 2020-11-18 16:14  空间移动工程师  阅读(704)  评论(0编辑  收藏  举报