Chapter 4——数据的输入与输出

4.1 数据的输入与输出

4.1.1 格式输出函数printf

1. 函数的基本功能

一般形式:printf(格式控制字符串,输出表列)

功能:按指定格式,向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。

2. 函数的使用说明

printf函数需要提供两类参数,一类是格式控制字符串,另一类是输出表列。

格式控制字符串用来指出在输出设备上输出的格式,该字符串指出输出后显示的样式。格式控制字符串也称为转换控制字符串,它包括格式说明符和普通字符两种信息:

        ① 格式说明符:由“%”和格式符组成,如%d,%f等。它的作用是将输出表列的数据转换为指定的格式输出。格式说明符总是由“%”开始。

        ② 普通字符:是指格式控制字符串中除格式说明符以外的字符,其中包括转义字符,这是一类需要原样输出的字符。

        ③ 输出表列:是需要输出的一系列数据,可以是常量、变量和表达式。

格式控制字符串中的格式说明符的个数和输出表列的项数相等,顺序为从左到右依次对应。

在使用格式说明符时要特别注意,除了在可显示的字符范围内,整型和字符型格式说明符可以互换,%f格式说明符可以用来输出单精度实数和双单精度实数外,格式说明符的类型必须与其对应的输出表列中数据的类型一致。

例如:

int a;
double b;
printf("%f,%d",a,b);//是错误的

3. 格式说明符

在C语言中,格式输入和输出函数对不同类型的数据必须采用不同的格式说明符。

一般格式:

%[ -或0 ] [m] [ . ] [ n ] [ l ] 格式符

说明:

        ① 方括号中的内容是可选项。数据的宽度表示数据输出到屏幕上时所占的水平位置的长度,与数据实际字符的个数一致,例如3.14的宽度为4.

        ② - (负号):表示当实际数据的宽度小于显示宽度时,数据左对齐,数据右方用空格填充。0表示当实际数据的宽度小于显示宽度时,数据右对齐,数据左边空格用0填充。

        ③ m:表示占用数据的宽度,如果实际数据的宽度大于m,按实际宽度输出。如果实际数据的宽度小于m,数据右对齐,数据左方用空格填充。

        ④ n:表示指定输出的数据中有n位小数,或者表示取字符串中左端n个字符输出。如果不指定该项,一般系统默认输出6位小数。

        ⑤ m.n:表示指定输出的数据共占m列,其中共有n个小数,舍去的部分系统自动四舍五入。如果输出的是字符串,表示取字符串中左端的n个字符输出。

        ⑥ l:用于长整型或双精度的数据。

        ⑦ 用%%表示字符%。

格式符在程序中的使用方法:

(1) 整形数据:

一般形式:%[ - 或 0] [ m ] [ l ]

格式符与对应的输出形式上表所示。如果不指定数据宽度和对齐方式,例如%d,系统自动按整型全部输出。

        说明:

        ① d格式符(或 i 格式符)用来输出十进制整数。有以下几种:

        a. %d:按整型数据输出。

        b. %ld:输出长整型数据。但在Visual C++系统中,%d 和 %ld 没有区别。

        ② o格式符,以八进制数形式输出正整数或无符号整数。

                o格式符是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号。

        ③ x格式符,以十六进制数形式输出正整数或无符号整数,同样不会出现负的十六进制数,它有两种写法,即%x和%X,分别对应十六进制数中字母的大小写形式。

        ④ u格式符,以十进制形式输出unsigned型数据,即无符号整型。

(2)实型数据:

一般形式: %[ - 或 0][ m ][ . ][ n ]类型符

实型数据的输出有一下三种格式符:

        ① f格式符,以小数形式输出实数。

        一般形式: %[ - 或 0 ][ m ][ . ][ n ] f

                如果不指定数据宽度和对齐方式,例如%f,系统将自动指定,使整数部分全部输出,并输出六位小数。

        ② e格式符,以指数形式(科学计数法)输出实数。

        一般形式:%[ - 或 0][ m ][ . ][ n ] e 或%[ - 或 0][ m ][ . ][ n ] E

                对应的输出形式是:(数字部分) e (指数部分) 或 (数字部分) E (指数部分)

        数值按标准化指数形式输出,即小数点前有且仅有以为非零数字。

        ③ g格式符,用来输出实数,它根据数值的大小,自动选择f格式或e格式中输出时占宽度较小的一中

(3)字符型数据

字符型数据的输出有以下两种格式符:

        ① c格式符,用来输出一个字符。

        一般形式: %c

        一个整数,只要值在33-126之间,就可以用字符型输出,输出前,将该整数转换成相应的ASCII码对应字符;反之,一个字符数据,只要它的ASCII码值在33-126之间,也可以用整数形式输出。

        ② s格式符,用来输出一个字符串。

        一般形式: %[ - 或 0][ m ][ . ][ n ] s

        如果不指定字符宽度和对齐方式,例如%s,系统将自动指定,使整个字符串全部输出。

4.1.2 字符输出函数putchar

一般形式: int putchar(char ch)

功能:向终端(或系统隐含指定的输出设备)输出一个字符。

返回值:成功时返回输出字符的ASCII码,否则返回-1。

        说明:

        ① 可以输出转义字符。

        ②可以将字符变量定义成int型或char型

4.2 数据的输入

4.2.1 格式输入函数scanf

1.函数的基本功能

 一般形式: scanf(格式控制字符串,地址表列)

功能:按指定格式,用键盘(或系统隐含指定的其他输入设备)输入若干个任意类型的数据。

说明:

        ① scanf函数需要提供两类参数,一类是格式控制字符串,另一类是地址表列

        ②格式控制字符串是用来指出在输入设备上输入的格式,包括格式说明符和普通字符两种信息,格式说明符的基本含义与printf函数中的“格式说明符”相同。

        ③地址表列是由若干个地址组成的表列,可以是变量的地址或者字符串的首地址。

2.函数的使用说明

①键盘输入时如何与格式控制字符串对应,从而使变量获得准确数据?这个问题可分为以下几种情况:

        a.格式控制字符串无任何普通字符。在程序运行中需要输入非字符类数据时,两个数据之间以一个或多个空格间隔,也可以按回车键、制表键(tab)间隔。

        b.格式控制字符串中存在普通字符。格式控制字符串中的普通字符一般用来分隔输入的数据项。在程序运行中需要输入数据时,对于普通字符,必须按照该字符的内容和字符串中的位置原封不动地用键盘输入到显示器上,如果输入的内容和格式字符串的内容不一致,则scanf函数立即结束。

        c.可以指定输入数据所占列,系统将根据指定列数自动截取所需数据。例如:

        scanf("%3d%3d",&a,&b);

②输入double型数据时,必须使用格式说明符%lf或%le,不能直接使用%f或%e

③输入数据时不能规定精度

④对unsigned型数据,可以用%u,%d或%o、%x格式输入

⑤%后的“ * ”为附加说明符,用来表示跳过相应的数据。例如:

        sacnf("%2d,%*3d,%2d",&a,&b);

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

        输入:12,345,67<回车>

        结果:a=12,b=67

4.2.2 字符型输入函数getchar

        一般形式:

        int getchar()

        返回值:成功时返回输入字符的ASCII值,否则返回-1

        功能:从终端(或系统隐含指定的输入设备)接收一个字符。

        说明:

                ①只能接收一个字符

                ②可以将获得的字符赋给int型或char型的变量

                ③可以用来接收键盘输入的不必要的回车或者空格,或使运行的程序暂停

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值