分析以上程序:
- scanf("%lf", &d);
- %lf:表示从终端接收一个双精度浮点型数据;
- &d:表示变量d在内存中的存储地址;
- scanf("%lf", &d);表示从终端输入的数据存储到地址&d的存储单元,也就是将数据赋给变量d。
- printf("%5.2lf\n", d);
- %5.2lf中的5.2表示输出数据占5列,其中小数占2位,第3位小数按四舍五入处理。输出的数据在所占列区域右对齐。如果是%-5.2lf,那么输出的数据在所占列区域左对齐。
- 注意:
- float型数据,只有6位有效数字;
- double型数据,只有15位有效数字;
一、有关数据输入输出的概念
- 所谓的输入输出是以计算机主机为主体而言的。
- 从计算机向输出设备(显示器、打印机等)输出数据称为输出。
- 从输入设备(键盘、磁盘、扫描仪等)向计算机输入数据称为输入。
- C语言本身不提供输入输出语句,输入输出操作是由C标准函数库中的函数来实现的。C提供的标准函数以库的形式在C的编译系统中提供,它们不是C语言文本中的组成部分。
- 提及:C语言程序执行过程:预处理、编译、连接、执行。(一个C语言程序可以包含若干个源程序文件,在编译时以文件模块为单位)
- 预处理:(预处理器)
- 将头文件内容读写进来,代替# include预处理指令;
- 将符号常量全部置换为字面常量;
- 预处理:(预处理器)
- 提及:C语言程序执行过程:预处理、编译、连接、执行。(一个C语言程序可以包含若干个源程序文件,在编译时以文件模块为单位)
结果:预处理后得到一个完整、可编译的源程序文件
-
-
- 编译:(编译器)
- 将可编译的源程序翻译成二进制的指令,得到目标文件(*.obj)
- 连接:(连接器)
- 将源程序编译后得到的目标文件(*obj)与源程序中包含的系统库函数相连接,生成一个可执行的目标程序(*.exe)。注意:系统库函数,是已经编译好的目标文件(*.obj)。
- 执行:运行*.exe可执行文件(程序)
- 编译:(编译器)
- 不把输入输出作为C语句的目的?
- 使C语言编译系统简单精炼,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好。
- 如果在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在连接阶段与系统函数库相连接后,在执行阶段中调用系统函数库中的printf函数。
- C语言函数库中有一批“标准输入输出函数”,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。其中有:
- 输入输出一个字符:
- putchar(输出一个字符);
- getchar(输入一个字符);
- 格式输入输出:
- printf(格式输出);
- scanf(格式输入);
- 输入输出一个字符串:
- puts(字符串输出);
- gets(字符串输入);
</
- 输入输出一个字符:
-