zoukankan      html  css  js  c++  java
  • C语言-两个库函数

    两个库函数

    --1-- printf函数

    1.1 printf 函数的介绍

    1.2 格式控制字符串

    1.3 %f输出精度的问题

    1.4 printf 函数使用注意事项

    --2-- scanf函数

    2.1 介绍

    2.2 scanf的作用

    2.3 sanf函数注意事项

    2.4 输入缓存区

    ------------------------------- 

    【写在开头:】

    『函数:从名称上来说是一个数学名词,是莱布尼兹在1694年开始使用的,用来描述跟曲线相关的一个量,如曲线的斜率或者曲线上的某一点。

    在面向过程的C语言中,用来完成一些特定的功能。

    而在OC或Java等一些面向对象的语言中,称之为方法。表示某个对象所具有的行为。

    方法也好,函数也罢,首先要明白他是干什么的?

    简单的说--> C语言函数就是用来实现程序功能的

     

    C语言不但提供了丰富的库函数,还允许用户定义自己的函数。每个函数都是一个可以重复使用的模块,通过模块间的相互调用,有条不紊地实现复杂的功能。可以说C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言。可以说C程序的全部工作都是由各式各样的函数完成的,所以C语言也称为函数式语言。

    标准C语言(ANSI C)共定义了15 个头文件,称为“C标准库”,所有的编译器都必须支持,如何正确并熟练的使用这些标准库,可以反映出一个程序员的水平。

    • 合格程序员:<stdio.h>、<ctype.h>、<stdlib.h>、<string.h>
    • 熟练程序员:<assert.h>、<limits.h>、<stddef.h>、<time.h>
    • 优秀程序员:<float.h>、<math.h>、<error.h>、<locale.h>、<setjmp.h>、<signal.h>、<stdarg.h>

    以上各类函数不仅数量多,而且有的还需要硬件知识才能使用。

    还应该指出的是,在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数,被调用者称为被调函数。函数还可以自己调用自己,称为递归调用。

    main 函数是主函数,它可以调用其它函数,而不允许被其它函数调用。因此,C程序的执行总是从main函数开始,完成对其它函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C源程序必须有、也只能有一个主函数main。』

    --1-- printf函数

    1.1 printf 函数的介绍

    printf 是一个标准的输出库函数,能够以精确的格式输出程序的运算结果。

    格式:printf(“格式控制字符串”,输出项列表(变量列表));

    输出项列表:必须与格式控制符在类型和数量上完全对应。当有多个输出项时,各个输出项之间用“,”隔开。

    1.2 格式控制字符串

    规定数据输入的格式,由格式控制符和普通字符组成,和%一起使用,用来说明输入数据的数据类型(格式字符)。

    需要接受数据的变量地址,输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间用”,“隔开,输入格式和变量类型要保持一致。

    使用说明:

    %d 输出一个10进制的整数

    %f 输出一个实数类型数据(不能输出整型数据),默认输出6位小数

    %c 输出一个字符

    %s输出一个字符串

    %o把一个数以八进制的格式输出

    %x把一个数以十六进制的格式输出

    %p 输出内存地址

    %ld:输入输出double(实型)类型的实型数值

    %u:输入输出unsigned(无符号)类型的数值

     

    1.3 %f输出精度的问题

        float f1 = 3.1415926f;
        float a = 1111.111111;
        float b = 2222.22222;
        
        printf("f1 = %f
    ",f1); //-->3.1415923 默认输出小数点后6位
        
        /*
         注意,%f打印出来后,精度小数点后6位,有效数字是7位所以最后的数“5”是个无效数字。
         这里使用floalt是打不出小数点后的第七位的,有效数字后的数字是无效的。
         */
        printf("f1=%.7f
    ",f1); //-->3.1415925
        
        printf("a + b= %f
    ", a+b); //-->3333.333252 有效位数(7位)之后的数字都是无效的。
    
    %f输出精度示例

    解决方案

    要打印更大精度的就只有使用double类型

    double默认的是精度小数点后7位,有效数字是15位。

    有效位数是小数点前面和后面的位数总和,不包含小数点。

    1.4 printf 函数使用注意事项

    1)域宽问题

      1)%md问题(设置域宽(列数)问题

      m为一个数字,可为正,也可以为负。

      如果要输出的数的位数 >域宽m -->则按照数据的实际位数输出

      如果位数 < 域宽m -->则要补空格

        printf("%3d
    ", 18888); //位数大于域宽 原样输出
        
        printf ("%5d
    ",10); //     10 (1前面补了3个空格)

      m的取值有两种(正数和负数):

      m>0 从左侧补空格

      m <0 从右侧开始补空格

       

      2)%0md(遍历图片时很常用)

      %0md%md的升级版,表示不足部分补0

        printf("%02d
    ", 1); //01

      

    2)转义字符

        printf("\
    "); //-->
        
        printf("%%
    "); //-->%
        printf(""
    "); //-->"
        printf("	制表符
    ");  //制表符

    --2--scanf函数

    2.1 介绍

    sacnf函数是阻塞式函数,原型包含在标准输入输出头文件<stdio.h>中,用于接收键盘输入的内容。

    格式:scanf("格式控制字符串",输入项的地址列表);

    scanf常见的格式控制符:

    2.2 scanf的作用

    从键盘接受输入的内容,保存到指定的变量中

    2.3 sanf函数注意事项

    1)scanf函数当遇到回车的时候,结束执行

    2)接受单个变量值时,在输入值之前,如果输入了空格、回车、tab 、这些都会被忽略。

    3)非法的格式输入

      3.1)输入用逗号”,“隔开

      输入:1245-->age=12  则num未赋值

      3.2)混合空格输入

        scanf("%d,%c,%d",&a,&ch,&b); //输入:12,a,45
        printf("%d,%c,%d
    ",a,ch,b); //与预计的输出不同 实际输出-->12, ,-1

      解决方案:需原样输入

    4)关于*号的使用

        int a = -1, b = -1;
        printf("请输入a和b的值:
    ");
        //%*d 跳过一个整数,%*c忽略一个字符
        scanf("%d%*d%d",&a,&b); //输入 1990 11 20
        
        printf("a = %d, b = %d
    ", a, b); //a = 1990, b = 20

    2.4 输入缓存区

    当用户输入内容后,输入内容会被存到scanf的输入缓存区,然后scanf会根据格式控制的字符的要求,从输入缓冲区依次取它想要的内容

    如果从缓冲区中取得内容和指定的格式要求一致,则把值赋给变量

    如果格式不一致,则不修改变量的值

     写在结尾:】

    在网上看到一张图

    想到了自己曾经的Java之路。一路艰辛,一路跌跌撞撞,却也有一路的风景。直到有一天,到了一个十字路口,没有红绿灯。于是我茫然的在岔口徘徊,我知道,我始终还是要做一个选择的,可是我这时明白,有时选择太多,却也不见得是一件的好事。

    如果是你,我想,你会往前走。

    如果是你,我想,你会停下来。

    如果是你,我想,你会往回走。

    而我,却不是你。

    ☂业精于勤,荒于嬉;行成于思,毁于随。☂
  • 相关阅读:
    什么是lambda
    Google guava工具类的介绍和使用
    Java并发编程:Java创建线程的三种方式
    线程池之ThreadPoolExecutor概述
    idea Spring-boot三种启动方式
    linux 安装kong gateway
    Beautiful Soup 的使用问题
    python与tesserocr的安装和使用
    python中关于yeild关键字的用法
    springboot——@EnableConfigurationProperties是如何起作用
  • 原文地址:https://www.cnblogs.com/wang-biao/p/5656952.html
Copyright © 2011-2022 走看看