C语言第三天

来源:互联网 发布:淘宝售后的服务流程 编辑:程序博客网 时间:2024/05/01 19:16

今天是好几天后来看了,复习了下之前看过的内容。准备接下来的事儿了。开学了。我毕业了。


C语言的输入输出语句

Scanf和printf 这俩个函数分别称为格式输入函数和格式输出函数,其意义是按指定的个数输出输出值

因此,这两个函数在括号中的参数都由以下两部分组成:

         1)格式字符串是一个字符串,必须用双引号括起来,它表示输入输出的数据类型。

    在printf 函数中可以在格式控制串内出现非格式控制符,这时会显示源字符串。


但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。

    printf函数调用的一般形式为:

                 printf("格式字符串",输出列表);

                 其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位。如下:

           “%d”  表示按十进制整型输出;

           “%ld”  表示按十进制长整型输出;

           “%c”   表示按字符型输出等;

             非格式字符串原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

    格式字符串

              格式字符串的一般形式:

                    [标志][输出最小宽度][.精度][长度]类型。  其中方括号中的项为可选项。

       1> 类型

                  类型字符用以表示输出数据的类型,其格式符和意义如下:格式字符意义d以十进制形式输出带符号整数O以八进制形式输出无符号整数(不输出前缀O)x,X以十六进制形式输出无符号整数(不输出前缀OX)u以十进制形式输出无符号数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串

   2>标志

             标志字符为—、+、#和空格四种,其意义下表所示:

                    标志意义—结果左对齐,右边填空格+输出符号(正号或者负号)空格输出值为正时冠以空格,为负时用负号

#对c、s、du类无影响
对o类,在输出时加前缀o
对x类,在输出时加前缀Ox
对e、g、f类当结果又小数时才给出小数点


3> 输出最小宽度

             用十进制整数来表示输出的最少位数。若实际位数多于定于的宽度,则按实际位数输出,若实际位数少于定义的宽度则

       补以空格或0.、

4> 精度

             精度格式符以“ . ”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出

    的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

5> 长度

            长度格式符为  h  、 l  两种, h 表示按短整型量输出,l 表示按长整型量输出。


  1. #include <stdio.h>
  2. int main(void){
  3.    int a=15;
  4.    long float b=123.1234567;
  5.     // 原来b的定义为 float b=123.1234567;
  6.     // 经读者@邓小良反馈,笔者发现会溢出,在前面加了long
  7.    double c=12345678.1234567;
  8.    char d='p';
  9.    printf("a=%d\n", a);
  10.    printf("a(%%d)=%d, a(%%5d)=%5d, a(%%o)=%o, a(%%x)=%x\n\n",a,a,a,a);  // %% 可以输出 %
  11.    printf("a=%f\n", b);
  12.    printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n",b,b,b,b);
  13.    printf("c=%f\n", c);
  14.    printf("c(%%lf)=%lf, c(%%f)=%f, c(%%8.4lf)=%8.4lf\n\n",c,c,c);
  15.    printf("d=%c\n", d);
  16.    printf("d(%%c)=%c, d(%%8c)=%8c\n",d,d);
  17.    return 0;
  18. }
  • 第11行以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。
  • 第14行以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。
  • 第17行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。
  • 第20行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格。

输入语句(scanf):

             头文件: #include<stdio.h>

              Scanf()  函数用来和格式化输入数据,即按照用户指定的格式从键盘上把数据读入到指定的变量中,其原型为:

                        int  scanf(char*format[,argument,....]);

                        【参数】 format为格式化控制字符,可以由三类字符组成。

               1>格式化说明符

                              %a                 读入一个浮点值(仅C99有效)
%A                 同上
%c                 读入一个字符
%d                 读入十进制整数
%i                  读入十进制,八进制,十六进制整数
%o                 读入八进制整数
%x                  读入十六进制整数
%X                 同上
%c                 读入一个字符
%s                 读入一个字符串
%f                  读入一个浮点数
%F                 同上
%e                 同上
%E                 同上
%g                 同上
%G                 同上
%p                 读入一个指针
%u                 读入一个无符号十进制整数
%n                 至此已读入值的等价字符数
%[]                 扫描字符集合
%%                读%符号


             另外还有附加格式说明符,用于追加在上面的格式说明符后面

       L / l      长度修饰符    长数据

       h                               短数据

       W          整型常数

        *            星号  空读一个数据

       hh            同h   但是仅仅对C99有效

        ll              同l     但是仅仅对C99有效


2>  空白字符

        空白字符会使scanf()  函数在读操作中略去输入中的一个或多个空白字符,空白符可以是: space、tab、 newline. 直到

  第一个非空白字符出现为止


3>  非空白字符

    一个非空白字符会使scanf() 函数在读入时剔除掉与这个非空白字符相同的字符



    argument 为需要读入的所有变量的地址, 而不是变量的标识符

注意:  是变量地址   不是变量标识符

  如果是一般的变量,通常要在变量名前加上“&” 取得地址,但输出时是用变量名;

  如果是数组,用数组名就代表了该数组的首地址,输出时也是用数组名

  如果是指针, 直接用指针名本身,不要加上“ * ”星号, 输出时也用该指针即可。



               



0 0