c語言-printf函數和scanf函數簡單使用

printf函數介紹

  • printf函數是輸出到控制檯函數

    • printf函數是c語言標準庫函數,可以準確的格式輸出程序運算結果spa

    • printf函數的調用格式爲:code

      • printf("格式控制字符串",輸出項列表);
      • 例如:printf("%i",a);
      • 輸出項列表能夠省略,printf("hello word")
    • 簡單用法:blog

    • // 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的效果get

          // 若是咱們想打印出01,02,03,04,05的效果的話怎麼辦呢?
          // 只須要在指定位寬前面加0便可
          int sum = 1;
          printf("%2i\n",sum); // 打印出 1;
          printf("%02i\n",sum); // 打印出01   在指定位寬的前面加了0,注意添加的位置
    • 保留位數it

          // 保留位數
          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函數是一個阻塞式函數,程序若是遇到就會停下來等待用戶輸入內容class

  • 格式: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函數的原理簡單介紹

相關文章
相關標籤/搜索