zoukankan      html  css  js  c++  java
  • 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
        ",number);
            printf("%5i
        ",number); // 可以明显的看到number的左边多出来一段空格,其实是由三个空格的
        
            // 默认情况下位宽是右对齐,如果需要输出的位宽不够会在左边补空格
            // 如果在位宽前面加负号-,就会改变对齐方式为左对齐,如果需要输出的位宽不够会在右边补空格
        
            printf("%-5i
        ",number);
            
            // 如果指定的位宽,但实际的内容超过了位宽的,会按照实际内容进行展示
            int value = 999999;  // value是有6位的
            printf("%5i
        ",value); //这里的value打印出是6位的,并不是指定位宽的5位
      • 打印出01,02,03的效果

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

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

    scanf函数

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

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

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

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

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

    scanf函数的原理简单介绍

  • 相关阅读:
    今日SGU 5.2
    奇异值分解(SVD)小结
    计蒜客16495 Truefriend(fwt)
    计蒜客16492 building(二分线段树/分块)
    hihocoder 1323 回文字符串(字符串+dp)
    hihocoder 1320 压缩字符串(字符串+dp)
    hdu6121 build a tree(树)
    hdu6103 Kirinriki(trick+字符串)
    hdu6097 Mindis(几何)
    hdu 6057 Kanade's convolution(子集卷积)
  • 原文地址:https://www.cnblogs.com/zcyd/p/14000494.html
Copyright © 2011-2022 走看看