内容正文:
教案用纸
第 3 周 总第 5 次 学时:2
教学班级: 课程:C语言程序设计 授课教师:
课题: 第2章 程序中的数据
2.4 数据的输入/输出
教学方法:讲授、启发
教具:常规教具
教学目标:学生掌握输入与输出函数的使用
教学重点:格式化输入输出函数的使用
教学难点:格式化输入输出函数的格式和使用说明
主要教学内容:
第2章 程序中的数据
2.4 数据的输入/输出
2.4.1 格式化输出函数printf
2.4.2 格式化输入函数scanf
2.4.3 字符数据的输入与输出
课后回顾:
教案用纸
四个一:
提问:使用表达式如何表示如下语句:将大写字母转换成与其对应的小写字母。
导入:我们编写C程序的目的是察看程序的运行结果,有的时候我们也需要输入数据,那么如何输入和输出呢?我们这节课来学习。
正文:
2.4 数据的输入/输出
C语言不提供输入输出语句,其数据的输入和输出是通过函数来实现的,这使得C语言的编译系统简单,可移植性好。
在使用函数库时,要用到预编译命令#include将有关的“头文件”包含到用户源文件中。例如:
#include “stdio.h” /* 标准输入、输出头文件包含命令 */
2.4.1 格式化输出函数printf
printf是C语言最常用的函数,其功能为向系统指定的输出设备输出若干个任意类型的数据。printf后面的f是指“format”,表示格式的意思。
1.printf的函数调用形式
printf是系统标准库函数,其调用一般形式为:
(
printf( "格式控制字符串" , 输出列表 );
)
printf括号内有两项,前一项是输出数据的格式(即要输出什么类型的数据),后一项是输出数据名称(即要输出哪个变量)。
printf中的输出列表是和前面的格式控制字符串按顺序一一对应的。列表中可以是常量、变量、表达式、数组和函数调用,其值应和格式说明相对应。
格式字符串内部有两个信息。
(1)格式说明。它的作用是将要输出的数据转化为指定的格式输出。通常默认形式是“%”加上一个字符,如%d表示十进制整数格式控制符,%f表示小数格式控制符等。
(2)普通字符。除了格式说明符外,所有字符均按原样输出。例如:
int x=3;
printf(“x=%d”,x);
输出结果为:x=3
其中“x=”为普通字符,原样输出,%d表示十进制整数格式控制符,后面的x为要输出的变量名,所以在%d的位置替换为变量x的值3。
2.printf的格式说明
如果要输出复杂的格式,可以设置格式控制符,就可以按用户的格式要求来输出相关数据。一般是“%”加上若干个英文字母,用以说明数据输出的类型、长度、位数等。格式控制符的一般形式为:
(
标
志
输
出
最
小
宽
度
.
精度长度类型
)
其中有方括号[ ]的项为可选项。各项的意义如下。
(1)标志:可以是-、+、0。因为printf的默认格式是右对齐,左边输出空格。如果想按左对齐方式输出,则标志写“-”。如果想让空白位输出0,则标志写“0”。如果想让正数前面输出“+”号,则标志写“+”。
(2)输出最小宽度:十进制整数。表示按此数值作为数据宽度输出。例如:
printf(“%+5d”,21); /*输出结果为□□+21,其中5为输出宽度,□为空格*/
printf(“%-5d”,21); /*输出结果为21□□□,其中5为输出宽度,□为空格*/
printf(“%05d”,21); /*输出结果为00021,5为输出宽度,前面的0为表示占位用数字0*/
(3)精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。如果输出的是字符串,则表示输出字符的个数。例如:
printf(“%7.2f”,123.456789); /*输出结果为□123.46,其中7为输出总宽度,2为小数点后位数*/
printf(“%7.5s”,”BoyAndGirl1”); /*输出结果为□□BoyAn,其中7为输出总宽度,5为输出字符个数,□为空格*/
(4)长度:可以是h、l。h表示是按短整型输出,l表示按长整型输出。例如:
long x=356;
printf(“%5ld”,x); /*输出结果为□□356,其中5为输出宽度,长整型需要加l*/
(5)类型:是格式说明符中必须有的项。它表示输出列表里要输出的数据类型。常用的数据类型格式控制符如表2-7所示(所有格式字符必须小写)。
表2-7 printf函数的常用类型控制字符表
格式字符
意义
d
按十进制形式输出带符号的整数(正数前无+号)
o
按八进制形式无符号输出(无前导o)
x
按十六进制形式无符号输出(无前导ox)
u
按十进制无符号形式输出
c
按字符形式输出一个字符
f
按十进制形式输出单、双精度浮点数(默认6位小数)
e
按指数形式输出单、双精度浮点数
s
输出以\o结尾的字符串
3.printf的输出列表
printf函数中的“输出列表”部分由表达式组成,这些表达式应与“格式控制字符串”中的格式说明符的类型一一对应,若“输出列表”中有多个表达式,则每个表达式之间应由逗号隔开,各输出项可以是任意合法的表达式(包括常量、变量和函数调用)。因此printf函数也具有计算的功能。
2.4.2 格式化输入函数scanf
scanf函数的功能是从键盘上将数据按用户指定的格式输入给指定的变量。
1.scanf的函数调用形式
scanf函数是系统标准库函数,其调用一般形式为:
(
scanf( "格式控制字符串" , 地址列表 );
)
其中格式控制字符串的定义与使用方法与printf相同,但不能显示非格式字符。地址列表是要赋值的各变量地址。地址是由地址运算符“&”后跟变量名组成。如&a表示变量a的地址。若在地址列表中只写了变量名,忘记了加地址运算符,则输入的数据不能正确地存入到变量中。
2.scanf的格式说明
如果要输入不同类型的数据,可以设置格式控制符,C语言允许按用户的格式要求来输入相关数据。一般是“%”加上若干个英文字母,用以说明数据输入的类型、长度、位数等。格式控制符的一般形式为:
(
%
宽
度
长
度
类
型
)
其中有方括号[ ]的项为可选项,各项的意义如下。
(1)[*]:表示输入的数值不赋给相应的变量,即跳过该数据不读。例如:
scanf("%d%*d%d",&a,&b);
当输入为:1 2 3时,将1赋给a,2被跳过,3赋给b。
(2)[宽度]:十进制整数,表示输入数据的最大宽度。例如:
scanf("%5d",&a);
输入:
12345678↙
只把12345赋给变量a,其余部分被截去。
(3)[长度]:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf),h表示输入短整型数据。
(4)类型:是格式说明符中必须有的项。它表示地址列表里要输入的数据类型。
3.scanf的地址列表
在C语言中,使用了地址这个概念,这是与其他语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来,变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。
例如:
int a=567;
则a为变量名,567是变量的值,&a表示变量a的地址。但在赋值号左边是变量名,不能写地址。而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。
4.使用scanf函数注意事项
(1)在用scanf函数输入数据时,不能规定精度。
(2)scanf中要求给出变量地址,若给出变量名则会出错。
(3)在输入多个数值数据时,若格式控制串中没有非格式字符做输入数据之间的间隔,则可用空格、Tab或回车。C编译在碰到空格、Tab、回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符(字符类型的空格也为有效字符常量)均为有效字符。
(5)如果格式控制串中有非格式字符,则输入时也要输入该非格式字符。例如:
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符“,”做间隔符,故输入时应为:
5,6,7↙
(6)注意用scanf函数(使用“%s”格式)读入字符串时,如果输入的字符串有空格或Tab键时,只将空格之前的所有字符读入,之后的字符串并不读入,所以用这种格式不能读入带空格的字符串。如果想读入带空格的字符串可使用gets函数(在第4章的字符数组有讲解)。
2.4.3 字符数据的输入与输出
字符数据可以通过字符输入函数getchar和字符输出函数putchar来实现输入输出。在使用这两个函数时,在程序头部应加头文件:
#include <stdio.h>
1.字符输入函数getchar
字符输入函数getchar的功能是从标准设备(键盘)上读入一个字符,其调用一般形式为:
(
getchar
()
;
)
调用函数时,当程序执行到getchar函数调用语句时,将等待输入,只有当用户输入字符,并按回车键后,才接收输入的第1个字符,并在屏幕上回显该字符,同时送到内存的缓冲区,准备赋给指定的变量,并且对空格符、制表符(Tab键)和回车换行符(Enter键)都当做有效字符读入。getch()函数是立即接收用户来自键盘上的输入,不把字符回显到屏幕上。例如:
char c;
c=getchar();
其中c是字符型或整型变量。
2.字符输出函数putchar
字符输出函数putchar的功能是向标准设备(显示器)上输出一个字符,其调用一般形式为:
(
putchar(ch)
;
)
参数ch可以是字符常量、字符变量或整型表达式,其功能等价于:
printf("%c",ch);
putchar函数也可以输出一些特殊字符(控制字符),例如语句:
putchar('
');
作用是输出一个“回车换行”字符。
putchar()函数的参数也可以是一个函数。例如语句:
putchar(getchar());,
就是用getchar()从键盘中读入一个字符,然后直接使用该字符作为putchar()函数的参数,输出到屏幕上。
小结:
本讲主要介绍了格式化输入、输出函数,字符输入、输出函数。一个完整的C程序应该可以实现数据的输入和输出。注意各个函数的书写格式和其中参数的含义。
备 注
难点:注意格式控制字符串的使用。
难点:printf()函数中格式字符串的使用。
注意:getchar()函数在接收字符时只能接收一个。
注意:putchar()函数在输出字符时只能每次输出一个。
学科网(北京)股份有限公司
$$