C程序设计(第五版) 第三章 知识总结 4

由于第三章知识内容杂多,将分为几部分整理

五、输出格式 p68

(1)有关输入输出的概念

1.所谓输入输出是以计算机主机为主体而言的。
2.C语言本身不提供输入输出语句。输入输出操作是由C标准函数库中函数实现的。如果在源程序中有printf函数,编译时不把它翻译成目标指令,而是在连接阶段与系统函数库相连接后,执行阶段中调用函数库中的printf函数。常见输入输出函数有:putchar、getchar、printf、scanf、puts、gets
3.在程序文件开头用预处理指令#include把有关头文件放在本程序中
常见的头文件有:studio.h 标准输入输出函数、string.h 定义字符串函数、math.h定义cos,sin等数学函数

注意:引入头文件两种方法:
1.#include <stdio.h>
2.#include "stdio.h"
第一种表示从存放C编译系统的子目录中寻找包含的文件(标准方式)。第二种表示先从用户当前目录中寻找包含文件,找不到再按标准方式找。一般第二种用于引入用户自己编写的头文件。

(2)printf函数输出数据

格式输入函数,必须指定输出数据的格式,根据数据类型指定不同格式。
1.一般格式:printf(格式控制,输出表列)

格式控制:用双撇号括起来一个字符串,称为“格式控制字符串”包含:

 1.格式声明:由“%”和**格式字符**组成,作用是将**输出数据转换为指定的格式后**输出。
 2.普通字符:在输出时**原样输出**的字符。

输出表列:程序需要输出的一些数据,可以是常量、变量或表达式

例如:printf("a=%d b=%d\n",a,b);

2.格式字符

(1)d格式符:输出一个有符号的十进制整数。

 在输出时,按**十进制整型**的实际长度输出,正数的符号不输出。
 可以在格式声明中指定输出数据的**域宽**(所占的列数)如%5d表示输出数据占5列。输出数据显示在此5列区域**右侧**(不满5列**左侧用空格补全**,超过5列按**实际列数**输出)
 想输出长整型在格式符d前面加字母l:%ld,双长整型:加两个l:%lld

(2)c格式符

 输出**一个**字符,也可以指定域宽。
 注意:一个整数在范围0~127中,可以用%c将其按字符输出(由ASCII码转换),如果整数比较大,超出了1个字节,则将其**最后一个字节的信息以字符形式输出**(截断)。

(3)s格式符

 输出一个字符串

(4)f格式符

 用来输出实数(包括**单、双精度、长双精度**),以**小数形式**输出
 1 基本型,用%f 不指定输出数据长度。系统处理一般方法:**实数中整数部分全部输出,小数部分输出6位**。
 2 指定数据宽度和小数位数,用%m.nf m表示域宽,n表示小数保留几位
     注意:1.小数点也算一列。2.再用%f输出时要注意数据本身的有效数字,输出的数字不一定精确。
 3 输出数据向左对齐 用%-m.nf
     这里作用基本同上一个,但当数据长度**不超过m时**,数据向左靠,右端补空格。

(5)e格式符

 用格式声明%e指定以**指数形式**输出实数。“%e”很多编译系统默认给出数字部分**小数位数为6位,指数部分占5列**(如:e+002,e占1列,+占1列,002占3列)**注**:数值按标**准化指数形式**输出(小数点前必须有且只有1位非零数字)如:123.4输出为1.234000e+002

(6)i格式符

 同%d格式符

(7)o格式符

 将内存单元中各位值按八进制**整数**形式输出,连符号位也一起作为八进制一部分输出,输出数不带符号。**注:**按%o输出时,按内存单元中实际的二进制数**按3位一组**构成八进制数形式。

(8)x格式符

 以十六进制输出整数。
 同样可以用“%lx"输出长整型数,也可指定域宽:”%12x"

(9)u格式符

 输出无符号型数据,以十进制输出。

(10)g格式

 输出浮点数,系统自动选f或e格式,选其中列数短的格式输出,不输出无意义的0.

格式声明表示为:% 附加字符 格式字符

表示加在格式字符前的字符(l,m,n,-等)是附加字符。具体格式字符和附加字符见P73

注意:

1.printf函数输出时,注意输出对象类型和上面格式说明匹配。
2.除了X,E,G外,其他格式字符必须用小写字母。
3.一个格式声明以“%”开头,12个格式字符之一结束,中间可夹附加格式字符
4.连续两个“%”可以输出字符“%”。

(3)scanf函数输入数据

1.scanf函数一般形式:scanf(格式控制,地址表列)

”格式控制“同printf函数,“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址

2.scanf函数中的格式声明

同printf函数,以%开始,以一个格式字符结束,中间可以插入附加字符。详细scanf函数格式字符和附加字符见P74-P75

3.scanf函数应注意的问题

(1)scanf函数中格式控制后面必须是变量地址,而不是变量名!
(2)如果在格式字符串中除了格式声明还有其它字符,在输入数据时在对应位置上应输入和这些字符相同的字符。
(3)在用“%c“格式声明输入字符时,空格字符和”转义字符“中的字符都作为有效字符输入。
(4)输入数值时,两个数值之间需要插入空格(或其他分隔符);在连续输入字符时,两个字符间不要插入空格或其他分隔符
(5)scanf中如果要输入double类型数据必须用“%lf”格式符,不可用“%f”,而printf中输出double类型数据可以用“%f”

分析:

 scanf("%d%c%f",&a,&b,&c);

 如果输入1234a123o.26
 表示1234给变量a,字符a给变量b,123给变量c(由于遇到o,系统认为数值到此结束)

(4)字符输入输出函数

1.putchar函数输出一个字符

putchar函数既可以输出可以显示的字符,也可以输出屏幕控制字符,如“\n"
putchar函数可以输出由ASCII码转换成的字符。
putchar(c)c可以是字符常量、整形常量、字符变量、整型变量(值在字符的ASCII码范围内),c也可以是转义字符

2.getchar函数输入一个字符

getchar()没有参数
getchar()函数只能接受一个字符,输入多个字符就要用多个getchar函数。
执行getchar函数不仅可以从输入设备获得一个可显示的字符,也可以获得屏幕上无法显示的字符,如控制字符。
getchar函数也可以作为表达式的一部分
注意:使用多个getchar函数输入时要连续输入完所有字符后再按回车,不可按一个字符后立即按回车,否则会把回车也算作一个字符输入。

引用请注明出处:http://www.sgyh.xyz/archives/72.html

TAG:none

发表新评论