经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
c语言-printf函数和scanf函数简单使用
来源:cnblogs  作者:空间移动工程师  时间:2020/11/23 12:21:51  对本文有异议

printf函数介绍

  • printf函数是输出到控制台

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

    • printf函数的调用格式为:

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

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

       

    • 指定位宽

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

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

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

scanf函数

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

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

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

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

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

scanf函数的原理简单介绍

原文链接:http://www.cnblogs.com/zcyd/p/14000494.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号