iOS学习笔记第1天——C基础:printf和scanf

来源:互联网 发布:fake it til make it 编辑:程序博客网 时间:2024/05/17 08:09

一、printf(格式化输出)

    1、变量的输出

        1> 指定输出位宽()

            int number = 10;

            printf("%xd", number); // x是位宽,d是对应输出的数据类型


           如果需要输出的数据位宽不够,会用空格来自动补齐位置

            printf("%4d!!!", number); //   10!!! 系统默认输出的格式是右对齐,数据显示在位宽的最右侧

            printf("%-4d!!!", number);//10   !!! -x会将数据输出格式改为左对齐,数据显示在位宽的最左侧


           如果需要输出的数据位宽 >指定位宽,则会按照实际数据位宽来输出

            number = 100000;

            printf("%-3d", number); //10000


           可以在位宽前面加上0,当输出宽度不够的时候,就会用0来补充

            int value = 8;

            printf("%02d", value); //08


        2> 保留小数的位数

            floatdouble默认会显示6位小数,若要控制显示的位数,可以在%ff前面加上小数点

                float floatValue = 10.1f;

                double doubleValue = 3.123456789; // 由于默认输出位数的关系,需要给double指定输出位数

                printf("floatValue = %.1f, doubleValue = %.9lf");// floatValue = 10.1, doubleValue = 3.123456789


        3>不确定小数位数时的输出方法(了解)

            float num = 3.1415;

            printf("%.*f", 2, floatValue); // 3.14  使用%.%f, *来确定输出小数的位数


二、scanf(格式化输入)

    1scanf的示例

        // 1.让用户输入第一个数字

        printf("请输入一个数字\n");

        // 2.定义两个变量来保存用户输入的数据

        int num1, num2;

        num1 = num2 = 0;

        // 3.接收用户输入的第一个数字

        scanf("%d", &num1);        // 10

        // 4.提示用户输入第二个数字

        printf("请输入第二个数字\n");

        // 5.接收用户输入的第二个数字

        scanf("%d", &num2);        // 20

        // 6.定义一个变量用来保存相加的结果

        int result = num1 + num2;

        // 7.输出结果

        printf("num1 + num2 = %d\n", result); // num1 + num2 = 30;


    2scanf的注意点

        1>scanf接收多个数据的时候,输入的内容要与格式化字符串列表的格式一样

               // 如果输入的格式不匹配,scanf会直接终止

        2>多个数据之间尽量使用分隔符来隔开:逗号

                scanf("%d, %d, %d", &num1, &num2, &num3);

        3>当格式化字符串中有%c时,不能使用空格、tab等来当做分隔符,否则会被%c接收,导致后面的数据可能出现不匹配

        4>回车是scanf的结束符,因此不能在格式化字符串的结尾加“\n”


    3scanf的实现原理

        1> 用户输入 --> 输入缓冲区 --> scanf

           只要输入缓冲区中有内容存留,系统就不会要求用户输入

            int num1, num2;

            char charValue;


            scanf("%d%c%d", &num1, &charValue, &num2);

            // 输入4 + 5

            // 此时scanf会在num2+不匹配的时候终止读入

            int num3;

            char charValue2;

            scanf("%c%d", &charValue2, &num3);// 系统不会要求用户输入第二个数字,而是直接将存留在缓冲区的+5存储到charValue2num3

            // num1 = 4, charValue =  , num2 = 0, charValue2 = +, num2 = 5;




0 0