《第2章C语言程序设计初步》由会员分享,可在线阅读,更多相关《第2章C语言程序设计初步(63页珍藏版)》请在金锄头文库上搜索。
1、第第2章章 C语言程序设计初步语言程序设计初步9/2/20249/2/20249/2/20241 12.1 C语言的字符集、关键字和标识符语言的字符集、关键字和标识符2.2 数据类型数据类型2.3 常量和变量常量和变量2.4 运算符与表达式运算符与表达式2.5 类型转换类型转换2.6 输入输出函数输入输出函数9/2/20249/2/20242 22.1 C语言的字符集、关键字和标识符语言的字符集、关键字和标识符 2.1.1 C语言的字符集语言的字符集字符是组成字符是组成C语言的最基本元素,字符集语言的最基本元素,字符集是语言中允许出现的字符的集合。是语言中允许出现的字符的集合。C语言的字语言的
2、字符集由英文字母、数字、空白符和特殊字符符集由英文字母、数字、空白符和特殊字符等组成,通常采用等组成,通常采用ASCII码码字符集。字符集。9/2/20249/2/20243 31字母:字母:C语言严格区分大小写字母。语言严格区分大小写字母。2空白符:空白符是指空格符、制表符、回车空白符:空白符是指空格符、制表符、回车换行符等。换行符等。 3特殊字符:主要为运算符,如:特殊字符:主要为运算符,如:+、*、%、 、 、( 、)、! 、等等。等等。 由以上字符组成由以上字符组成C语言的最小语法成分,即单词。语言的最小语法成分,即单词。单词分为单词分为6类:类:标识符、关键字、常量、运算符、标识符、
3、关键字、常量、运算符、注释及分隔符注释及分隔符,其中,运算符是由特殊字符组成,其中,运算符是由特殊字符组成,注释是以注释是以“/*”开头,并以开头,并以“*/”结尾的串,分隔结尾的串,分隔符有空白字符和逗号。符有空白字符和逗号。9/2/20249/2/20244 42.1.2 C语言的关键字语言的关键字关键字是关键字是C语言中预定的具有特定含义的单词,通语言中预定的具有特定含义的单词,通常也称保留字。由于这些关键字有特定含义,因此不能常也称保留字。由于这些关键字有特定含义,因此不能另作它用。语言共有另作它用。语言共有32个关键字。个关键字。附录附录 C语言关键字表语言关键字表auto、brea
4、k、case 、char、const、continue、default 、do、double 、else、enum、extern、float、for、goto、if、int、 long、register、return、short、signed、sizeof、static、struct、 switch、typedef、union、unsigned、 void、volatile、while注意:关键字在程序中都必须是小写字母注意:关键字在程序中都必须是小写字母 9/2/20249/2/20245 52.1.3 语言的标识符语言的标识符 标识符是一个对象的名字。例如:变量名、标识符是一个对象的名字。
5、例如:变量名、数组名、函数名、结构体类型名及文件名等等。数组名、函数名、结构体类型名及文件名等等。标识符只能由标识符只能由字母、数字和下划线字母、数字和下划线3种字符组种字符组成,且第一个字符必须是字母或下划线。成,且第一个字符必须是字母或下划线。 判断下列是否是合法的标识符:判断下列是否是合法的标识符:_123abc、Price、ab12123_abc 、 $123 、M.D.rose9/2/20249/2/20246 6注意:注意:(1) C语言严格区分大小写。标识符一般语言严格区分大小写。标识符一般用小写字母。用小写字母。 (2) 标识符不能和语言的关键字相同。标识符不能和语言的关键字相
6、同。(3) 命名标识符应尽量有相应的意义,以命名标识符应尽量有相应的意义,以便便“见名知意见名知意”。9/2/20249/2/20247 7 综上所述,可以把综上所述,可以把C程序的每条语句看成是程序的每条语句看成是由一系列的记号组成,这些记号是不可再分的原子由一系列的记号组成,这些记号是不可再分的原子单位,记号和记号之间可以用多个空格分隔。单位,记号和记号之间可以用多个空格分隔。例如,例如,printf ( sum=%d , sum ) ; 该语句由该语句由7个记号组成,其中个记号组成,其中是系统函数名,是系统函数名,、是运算符,是运算符,是字符串常量,是字符串常量,是分隔符,是分隔符,是用
7、户标识符(变量名),是用户标识符(变量名),是是C语句结束标志。语句结束标志。9/2/20249/2/20248 82.2 数据类型数据类型整型整型(int)数据类型数据类型基本类型基本类型字符型字符型(char)枚举枚举(enum)空类型空类型(void)构造类型构造类型数组数组结构体结构体(struct)联合体联合体(union)指针指针实型实型单精度单精度(float)双精度双精度(double)图图2.1 C语言的数据类型语言的数据类型 9/2/20249/2/20249 9表表2.1 2.1 基本数据基本数据类型型类型符型符 说 明明长度度(字字节)取取值范范围char(或或sign
8、ed char)字符型字符型1-128127unsigned char无符号无符号字符型字符型10255short(或或signed short)短整型短整型2-3276832767unsigned short无符号无符号短整型短整型2065535int(或或signed int)整型整型2-3276832767unsigned int无符号无符号整型整型2065535long(或或signed long)长整型整型4-21474836482147483647unsigned long无符号无符号长整型整型404294967295float单精度精度实型型4-3.410-383.41038do
9、uble双精度双精度实型型8-1.710-3081.710308long double长双精双精度度实型型16-1.110-49321.11049329/2/20249/2/20241010说明:说明:(1) 在在C语言中,基本数据类型可以带说语言中,基本数据类型可以带说明前缀明前缀signed和和unsigned,明确基本数据类,明确基本数据类型含义。型含义。signed和和unsigned可以用来修饰字可以用来修饰字符型和整型,其中符型和整型,其中signed表示有符号数,表示有符号数,unsigned表示无符号数。表示无符号数。 (2) 在具体的编译环境下,每种数据类型在具体的编译环境下
10、,每种数据类型所占的字节数可以通过所占的字节数可以通过sizeof运算符求得。运算符求得。具体的使用格式是:具体的使用格式是:sizeof(数据类型符数据类型符) 9/2/20249/2/20241111例如:例如:#include int main() printf(“%d”,sizeof(int); return 0; 在在TC编译环境下,运行结果是编译环境下,运行结果是2;在;在VC编译环境下,运行结果是编译环境下,运行结果是4。9/2/20249/2/202412122.3 常量和变量常量和变量2.3.1 常量常量 常量是指在程序运行过程中其值不能常量是指在程序运行过程中其值不能被改变
11、的量。被改变的量。 直接常量:整型常量、实型常量、字符常直接常量:整型常量、实型常量、字符常量和字符串常量。量和字符串常量。符号常量:指用一个符号(标识符)来代符号常量:指用一个符号(标识符)来代表一个常量。表一个常量。9/2/20249/2/202413131.整型常量:是不带小数的整数,包括正整数、整型常量:是不带小数的整数,包括正整数、负整数和零。整型常量的表示形式有十进制、负整数和零。整型常量的表示形式有十进制、十六进制和八进制。十六进制和八进制。 十六进制常量:以十六进制常量:以0x或或0X开头,用开头,用09十个数十个数字、字、AF或或af字母表示。字母表示。八进制常量:以八进制常
12、量:以0(数字零数字零)开头,用开头,用07八个数八个数字表示。字表示。长整型常量:整型常量后面缀上字母长整型常量:整型常量后面缀上字母“l”或或“L”。无符号整型常量:整型常量后面缀上字母无符号整型常量:整型常量后面缀上字母“u”或或“U”。9/2/20249/2/20241414以下整型常量是否合法。并说明是什么类以下整型常量是否合法。并说明是什么类型的整型常量。型的整型常量。50、-792、-90u、100L020、0101、0764、050xA、0x54、0X77D、0Xffff5.78 、75A、081 、0x5H9/2/20249/2/20241515【例例2.1】 整数的三种表示
13、形式。整数的三种表示形式。#include int main() int a,b,c; a=75; b=075; c=0x3A; printf(%d,%d,%dn,a,b,c); /* 以十进制数输出以十进制数输出a,b,c */ printf(%o,%o,%on,a,b,c); /* 以八进制数输出以八进制数输出a,b,c */ printf(%x,%x,%xn,a,b,c); /* 以十六进制数输出以十六进制数输出a,b,c */ return 0;注意:注意:%d、%o、%x9/2/20249/2/202416162实型常量实型常量在程序设计语言中,含有小数部分的数值在程序设计语言中,含
14、有小数部分的数值称为浮点数。浮点数的表示形式有两种称为浮点数。浮点数的表示形式有两种:小数形式:由数字和小数点组成(注意必小数形式:由数字和小数点组成(注意必须有小数点)。须有小数点)。指数形式:小数指数形式:小数e|E指数,其中指数部分指数,其中指数部分只能是整数。只能是整数。9/2/20249/2/20241717判断下列是否是合法的实数:判断下列是否是合法的实数:0.32、.98、34.、123.5、25.4e-3、0.257E578 、 E-6 、 3.4e3.59/2/20249/2/202418183、字符常量、字符常量字符在计算机中是以字符在计算机中是以ASCII码值存储的,码值
15、存储的,因此每个字符都有对应的因此每个字符都有对应的ASCII码值(详见附码值(详见附录录I)。在)。在ASCII表中表中ASCII码值为码值为32以后的字以后的字符是可显示字符,符是可显示字符,ASCII码值为码值为32以前的字符以前的字符是不可显示字符。是不可显示字符。9/2/20249/2/20241919在在C语言中,字符常量有两种表示方法:语言中,字符常量有两种表示方法:(1) 对可显示的字符,直接用单引号将该对可显示的字符,直接用单引号将该字符括住字符括住,例如例如z、4、#、? 等。等。(2) 对不可显示字符(例如,换行、回车、对不可显示字符(例如,换行、回车、制表符、退格等等)
16、,以及在制表符、退格等等),以及在C语言中有特殊语言中有特殊含义和用途的字符(如单引号、双引号、反含义和用途的字符(如单引号、双引号、反斜杠等),则用单引号括住一个转义序列。斜杠等),则用单引号括住一个转义序列。 9/2/20249/2/20242020表表2.2 2.2 转义序列表序列表转义序列序列ASCII码(十(十进制)制)说明明0000空字符空字符(NULL)a007响响铃报警警(Bell)b008退格符退格符(Backspace)t009横向跳到下一制表位置横向跳到下一制表位置(TAB)n010回回车换行行(Newline)v011竖向跳格向跳格r013回回车(Return)092反
17、斜杠符反斜杠符(Backslash)039单引号引号(single quotation)034双引号双引号”(Double quotation)ddd13位八位八进制制数数13位八位八进制数所代表的字符制数所代表的字符xhh12位十六位十六进制数制数12位十六位十六进制数所代表的字制数所代表的字符符9/2/20249/2/20242121【例例2.2】 转义字符的使用。转义字符的使用。#include int main() int a=10,b=20,c=30; printf(a=%dtb=%dnc=%d,a,b,c); return 0;9/2/20249/2/202422224字符串常量字
18、符串常量字符串常量是用一对双引号引起来的字符序列。字符串常量是用一对双引号引起来的字符序列。字符常量和字符串常量的区别在于:字符常量和字符串常量的区别在于:(1)字符常量是用单引号引起的一个字符;字)字符常量是用单引号引起的一个字符;字符串常量是用双引号引起来的零个或多个字符。符串常量是用双引号引起来的零个或多个字符。(2)字符常量占用一个字节的存储空间;字符)字符常量占用一个字节的存储空间;字符串常量中的字符个数称为字符串的长度。串常量中的字符个数称为字符串的长度。 9/2/20249/2/20242323a和和”a”的区别?的区别?aa0aa图2.2 a和a的存储区别9/2/20249/2
19、/202424245符号常量符号常量在在C语言中,可以用一个标识符来表示一语言中,可以用一个标识符来表示一个常量,称之为符号常量。个常量,称之为符号常量。 一般形式为:#define 标识符常量标识符常量9/2/20249/2/20242525【例例2.3】 输入球的半径,输出球的表面积和体积。输入球的半径,输出球的表面积和体积。#include #include #define PI 3.1415926int main() float radius,outarea,volumn; printf(请输入球的半径请输入球的半径:); scanf(%f,&radius); outarea=4*PI
20、*radius*radius; volumn=4.0/3*PI*pow(radius,3); printf(球的表面积球的表面积=%fn球的体积球的体积=%f, outarea, volumn); return 0;9/2/20249/2/202426262.3.2 变量变量变量是指在程序运行过程中其值可以改变量是指在程序运行过程中其值可以改变的量。变量是存储空间的抽象,用户可以变的量。变量是存储空间的抽象,用户可以通过声明(定义)变量来获取存储空间。变通过声明(定义)变量来获取存储空间。变量有变量名和变量值之分。量有变量名和变量值之分。 75存储单元存储单元x变量名变量名变量值变量值图图2.
21、3 变量示意图变量示意图9/2/20249/2/20242727说明变量的一般形式为:说明变量的一般形式为:类型说明符类型说明符 变量名变量名1, 变量名变量名2,;例如:例如:int x,y; /* 定义定义int型变量型变量x,y */float z; /* 定义定义float型变量型变量z */char a,b,c; /* 定义定义char型变量型变量a,b,c */注意:变量必须注意:变量必须“先定义,后使用先定义,后使用”9/2/20249/2/202428281整型变量整型变量在在C语言中,整型变量分为基本型(语言中,整型变量分为基本型(int)、)、短整型短整型(short)、长
22、整型、长整型(long)和无符号型和无符号型(unsigned)。无符号型又可与前三种类型组。无符号型又可与前三种类型组合出无符号基本型、无符号短整型和无符号合出无符号基本型、无符号短整型和无符号长整型,总共有六种形式,见表长整型,总共有六种形式,见表2.1。在在16位系位系统中,基本整型中,基本整型变量在内存中占两个字量在内存中占两个字节。例如,例如,int a=101;由于(由于(101)10=(1100101)2,则变量量a在内存的示意在内存的示意图如如图2.4所示:所示:0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1符号位数值位图2.4 值为101的变量a的内存示意图9
23、/2/20249/2/202429292实型变量实型变量 在在C语言中,实型变量分为单精度型语言中,实型变量分为单精度型(float)、双精度型、双精度型(double)和长双精度和长双精度(long double)三种形式,见表三种形式,见表2.1。单精度型的精度型的变量在内存中占量在内存中占4个字个字节,这4个字个字节分成两部分:分成两部分:一部分用于存一部分用于存储小数部分(也称尾数);另一部分用于存小数部分(也称尾数);另一部分用于存储指指数部分(也称数部分(也称阶)。如)。如图2.5所示。所示。尾数部分指数部分尾数的符号位指数的符号位共32位图2.5 单精度型的变量内存示意图9/2/
24、20249/2/20243030【例例2.4】 实型数据的输出示例。实型数据的输出示例。#include int main() float a,b; a=55.1234567; b=123456.789e5; printf(a= %f nb=%f,a,b); return 0;9/2/20249/2/202431313字符型变量字符型变量字符型变量的类型说明符是字符型变量的类型说明符是char。字符。字符型变量用来存放字符常量,即存放单个字符。型变量用来存放字符常量,即存放单个字符。例如:例如:char a=A;char a=A;a a变量存量存储空空间里存放的是里存放的是AA的的ASCIIA
25、SCII码值,即,即6565,其内存示意,其内存示意图如如图2.62.6所示。所示。01000001符号位图2.6 2.6 变量量a a的内存示意的内存示意图9/2/20249/2/20243232字符数据在内存中的存储形式与整型数字符数据在内存中的存储形式与整型数据的存储形式类似,可以看成是据的存储形式类似,可以看成是1字节的整数字节的整数。 所以,在所以,在C语言中字符型数据和整型数语言中字符型数据和整型数据之间可以通用,可以将字符型数据以整型据之间可以通用,可以将字符型数据以整型数据处理:数据处理:1.允许字符量赋值给整型变量允许字符量赋值给整型变量2.允许整型量赋值给字符变量允许整型量
26、赋值给字符变量3.允许把字符变量按整型量输出允许把字符变量按整型量输出4.允许把整型量按字符量输出允许把整型量按字符量输出9/2/20249/2/20243333【例例2.5】 字符型变量的使用字符型变量的使用#include int main() char c1=a, c2=98, c3; int c4; c3=c1+4; c4=c1-32; printf(c1=%ctc2=%ctc3=%ctc4=%c n, c1, c2, c3,c4); printf(c1=%dtc2=%dtc3=%dtc4=%c n, c1, c2, c3,c4); return 0;9/2/20249/2/20243
27、4344变量的赋值变量的赋值变量是存储空间的抽象,有多种方式可变量是存储空间的抽象,有多种方式可以将一个数据存储到该存储空间中以将一个数据存储到该存储空间中(1)通过赋值运算实现)通过赋值运算实现int x; /* 先定义先定义 */x=15; /* 后赋值后赋值 */(2)变量的初始化)变量的初始化在定义变量的同时赋给变量相应的值,称为变量的初始化。在定义变量的同时赋给变量相应的值,称为变量的初始化。int x=15,y=15; /* 变量的初始化变量的初始化,定义的同时赋值定义的同时赋值 */(3)程序运行时给变量赋值)程序运行时给变量赋值int x; /* 定义定义int型变量型变量 x
28、 */scanf(%d,&x); /* 暂停程序的运行,等待用户从键盘输入数据暂停程序的运行,等待用户从键盘输入数据 */9/2/20249/2/202435352.4 运算符与表达式运算符与表达式运算是对数据进行加工的过程,要运算运算是对数据进行加工的过程,要运算就必须有运算符和运算量。就必须有运算符和运算量。 运算符运算符:是用来完成各种不同运算的一些是用来完成各种不同运算的一些特定符号。特定符号。 运算量运算量:是参加运算的数据,也称为操作是参加运算的数据,也称为操作数,运算量可以是常量、变量和函数。数,运算量可以是常量、变量和函数。9/2/20249/2/20243636C语言提供了丰
29、富的运算符,按功能分主要有以下几种:语言提供了丰富的运算符,按功能分主要有以下几种:算术运算符:算术运算符: 、-、*、/、%(取余)、(取余)、+(自增)、(自增)、-(自减)(自减)赋值及其复合赋值运算符赋值运算符:赋值及其复合赋值运算符赋值运算符:=、复合赋值运算符、复合赋值运算符求字节数运算符:求字节数运算符:sizeof强制类型转换运算符:(类型)强制类型转换运算符:(类型)关系运算符:关系运算符:、=、下标运算符:下标运算符:指针运算符:指针运算符:*(间接访问运算符间接访问运算符)、&(取地址运算符)(取地址运算符)位运算符:位运算符:(求反)、(求反)、&(位与位与)、|(位或
30、位或)、(右移右移)其他运算符:()(函数调用运算符、优先级运算符)其他运算符:()(函数调用运算符、优先级运算符)有关运算符的优先级、结合方向等详细的信息参见附录有关运算符的优先级、结合方向等详细的信息参见附录。9/2/20249/2/202437372.4.1 算术运算符与算术表达式算术运算符与算术表达式1基本算术运算符基本算术运算符表表2.3 2.3 基本的算基本的算术运算符运算符运算符含义例子*乘法运算符3*5,结果是15/除法运算符3/5结果是0; 3.0/5结果是0.6%取余运算符10%3结果是1; 3%5,结果是3+加法运算符10+5结果是15;a+3结果是100-减法运算符10
31、-5结果是5;t-4的结果是1129/2/20249/2/20243838下列运算的结果是多少?下列运算的结果是多少? 12/5 12/5.0 3%5 5%32算术表达式算术表达式算术表达式是用算术运算符和括号将运算量(也称为操作数)算术表达式是用算术运算符和括号将运算量(也称为操作数)连接起来的、符合连接起来的、符合C语法规则的式子。运算量可以是常量、变量语法规则的式子。运算量可以是常量、变量及函数。及函数。下列表达式的结果是多少?下列表达式的结果是多少?5+3*41/3.0*pow(sin(1.0/2),2)9/2/20249/2/202439392.4.2 赋值运算符与赋值表达式赋值运算
32、符与赋值表达式变量是存储空间的抽象,将一个数据放置于变量所在的存储空间,变量是存储空间的抽象,将一个数据放置于变量所在的存储空间,可以通过赋值语句来实现。可以通过赋值语句来实现。 1基本赋值运算符基本赋值运算符格式如下:格式如下:变量变量=表达式表达式功能:将赋值号右边表达式的值存储到左边变量所在的存储空间。功能:将赋值号右边表达式的值存储到左边变量所在的存储空间。注意:注意:这是赋值运算符,不是这是赋值运算符,不是“等号等号”运算符。运算符。赋值运算符要求它左边的操作数必须是变量。赋值运算符要求它左边的操作数必须是变量。赋值运算符的右边可以是常量、变量、函数或较为复杂的表达式。赋值运算符的右
33、边可以是常量、变量、函数或较为复杂的表达式。以下赋值运算是否合法,不合法的说明原因:以下赋值运算是否合法,不合法的说明原因:i=5 k=10*i+80i+j=10 -12=i-i=j9/2/20249/2/202440402复合赋值运算符复合赋值运算符在基本赋值运算符在基本赋值运算符“=”之前加上算术运算符或位运算符,之前加上算术运算符或位运算符,可构成复合的赋值运算符。这些运算符共有可构成复合的赋值运算符。这些运算符共有10个,包括个,包括+=、-=、*=、/=、%=、&=、|=、=、=、3k=5+(y=z)9/2/20249/2/20244242(3)如果赋值运算符两边的数据类型不)如果赋
34、值运算符两边的数据类型不相同,系统会自动进行数据类型的转换,即相同,系统会自动进行数据类型的转换,即把赋值号右边的类型转成左边的类型。详细把赋值号右边的类型转成左边的类型。详细说明请参阅说明请参阅2.5节类型转换。节类型转换。(4)赋值表达式也可以包含复合的赋值运)赋值表达式也可以包含复合的赋值运算符。算符。下列表达式的结果是多少?下列表达式的结果是多少?int a=4;a+=a-=2*a;9/2/20249/2/202443432.5 类型转换类型转换C语言规定,不同类型的数据在参加运算语言规定,不同类型的数据在参加运算时,要先转换成相同的类型,然后再进行运时,要先转换成相同的类型,然后再进
35、行运算。有三类转换:算。有三类转换:赋值表达式的类型转换赋值表达式的类型转换算术运算时的自动类型转换算术运算时的自动类型转换强制类型转换强制类型转换9/2/20249/2/202444442.5.1 赋值转换赋值转换C语言规定:当赋值运算符右边表达式的语言规定:当赋值运算符右边表达式的类型与左边变量的类型不一致时,以左边的类型与左边变量的类型不一致时,以左边的为准。为准。 赋值后变量赋值后变量a和变量和变量x的值分别是多少的值分别是多少?int a; a=5.23; float x;x=20; 9/2/20249/2/202445452.5.2 算术运算时的自动类型转换算术运算时的自动类型转换
36、不同类型的数据在一起运算时,不同类型的数据在一起运算时,C编译编译器自动将所有操作数器自动将所有操作数“向上向上”转换成数据最转换成数据最长的操作数类型。长的操作数类型。 doublefloatlongunsignedintchar,short低高图图2.7 不同类型数据的转换规则不同类型数据的转换规则9/2/20249/2/20244646例如以下运算的结果是什么类型例如以下运算的结果是什么类型?70+B*2.49/2/20249/2/202447472.5.3 强制转换强制转换强制类型转换的一般形式为:强制类型转换的一般形式为:(类型说明符)(类型说明符) 表达式表达式功能:把表达式的数据
37、类型强制转换成数功能:把表达式的数据类型强制转换成数据类型说明符中的数据类型。据类型说明符中的数据类型。注意以下强制转换的结果不同注意以下强制转换的结果不同,为什么为什么?( int ) ( x +y)( int ) x + y强制数据类型改变了原变量的数据类型没有强制数据类型改变了原变量的数据类型没有? 9/2/20249/2/20244848【例例2.6】 强制数据类型转换示例。强制数据类型转换示例。#include int main() int a=5; float x=2.14; a*=x*(D-A); printf(%fn,(float)a); return 0;9/2/20249/
38、2/202449492.6 输入输出函数输入输出函数C语言没有输入输出语句,它的输入输出语言没有输入输出语句,它的输入输出是通过是通过C标准函数来实现。标准函数来实现。C标准函数库中提标准函数库中提供了一批用于处理输入输出的函数,例如供了一批用于处理输入输出的函数,例如getchar()、putchar()、scanf()、printf()、gets()、puts()等。在使用这些输入输出函数之前,要在源等。在使用这些输入输出函数之前,要在源程序的前面加上一条编译预处理命令:程序的前面加上一条编译预处理命令:#include 9/2/20249/2/202450502.6.1 字符型数据的输入
39、输出函数字符型数据的输入输出函数1字符输出函数字符输出函数putchar()使用格式如下:使用格式如下:putchar(char)功能:向标准输出设备(指显示器)显示功能:向标准输出设备(指显示器)显示输出一个给定的字符。输出一个给定的字符。9/2/20249/2/20245151【例例2.7】 putchar()函数的使用举例。函数的使用举例。#include int main() char a,b,c; a=P;b=i;c=g; putchar(a); /* 实参是字符变量实参是字符变量a */ putchar(n); /* 实参是字符常量,转义字符实参是字符常量,转义字符n */ put
40、char(b); putchar(n); putchar(c); return 0;9/2/20249/2/202452522字符输入函数字符输入函数getchar( )使用格式如下:使用格式如下:getchar( )功能:暂停程序的运行,等待用户从标准功能:暂停程序的运行,等待用户从标准输入设备(指键盘)上输入一个字符。输入设备(指键盘)上输入一个字符。getchar()调用一次只能读入一个字符,调用一次只能读入一个字符,不能读入多个字符。不能读入多个字符。9/2/20249/2/20245353【例例2.8】 从键盘上输入两个数字字符,将它们分别转变从键盘上输入两个数字字符,将它们分别转变
41、成数字后,输出这两个数之和。成数字后,输出这两个数之和。 #include int main() char ch1,ch2; int x1,x2,sum; ch1=getchar(); ch2=getchar(); x1=ch1-0; x2=ch2-0; sum=x1+x2; printf(x1=%d,x2=%d , sum=%d,x1,x2,sum); return 0;9/2/20249/2/202454542.6.2 格式化输出函数格式化输出函数printf( )函数使用一般形式如下:函数使用一般形式如下:printf(输出格式控制参数输出格式控制参数,输出项列表输出项列表)函数功能:按
42、用户指定的格式,把指定的函数功能:按用户指定的格式,把指定的数据显示到显示器屏幕上。数据显示到显示器屏幕上。9/2/20249/2/20245555输出格式控制参数是用双引号括起来的字输出格式控制参数是用双引号括起来的字符序列,其中可以出现三类字符:普通可显符序列,其中可以出现三类字符:普通可显示字符、转义字符、格式控制符。示字符、转义字符、格式控制符。 表表2.4 2.4 常用格式控制符常用格式控制符代代码含含义%d以十以十进制格式制格式输出出int型整数型整数%o以八以八进制数形式制数形式输出整数出整数%x以十六以十六进制数形式制数形式输出整数。出整数。%u以十以十进制数形式制数形式输出出
43、unsinged型数据型数据%ld以十以十进制格式制格式输出出long型整数型整数%c输出一个字符出一个字符%s输出一个字符串出一个字符串%f以小数形式以小数形式输出十出十进制制实数,小数部分有数,小数部分有6位位%e以指数形式按以指数形式按标准准宽度度输出十出十进制制实数数9/2/20249/2/20245656(2)输出项列表)输出项列表输出项列表是用逗号分隔的多个输出表达输出项列表是用逗号分隔的多个输出表达式。式。 int x=754;printf(整数:整数:%dn字符:字符:%cn小数:小数:%f, x , a-32, 45.78);9/2/20249/2/20245757以下输出的
44、结果是什么以下输出的结果是什么?序号输出函数示例1printf(%s%dn,this is a string”,50+20);2printf(this is a string %dn,100);3printf(%d is int,%f,%5.2f is float.n,10,110.789,110。789);4printf(“%4d%4dn%4d%dn”,10,20,30,40);9/2/20249/2/20245858【例例2.9】 将将19的数字分三行显示,每个输出的数字分三行显示,每个输出项占项占4个字符的宽度。个字符的宽度。 #include int main() printf(%4d
45、 %4d %4dn,1,2,3); printf(%4d %4d %4dn,4,5,6); printf(%4d %4d %4dn,7,8,9); return 0;9/2/20249/2/202459592.6.3 格式化输入函数格式化输入函数scanf( ) 函数的一般形式为:函数的一般形式为:scanf(格式控制字符串格式控制字符串,输入项地址表输入项地址表列列)功能:按用户指定的格式从键盘上把数据功能:按用户指定的格式从键盘上把数据输入到指定的变量之中。输入到指定的变量之中。9/2/20249/2/20246060(1)格式控制字符串)格式控制字符串格式控制字符串规定数据的输入格式,其
46、内容格式控制字符串规定数据的输入格式,其内容主要由格式控制符构成,也可以有普通字符。常用主要由格式控制符构成,也可以有普通字符。常用的格式控制符如表的格式控制符如表2.6所示所示 表表2.6 2.6 常用格式控制符常用格式控制符代代码含含义%d用来用来输入十入十进制整数制整数%o用来用来输入八入八进制整数制整数%x用来用来输入十六入十六进制整数制整数%u用来用来输入无符号十入无符号十进制整数制整数%ld用来用来输入十入十进制制long型整数型整数%c用来用来输入一个字符入一个字符%s用来用来输入字符串入字符串%f或或%e用来用来输入入实型数据型数据(有小数形式或指数形式有小数形式或指数形式)9
47、/2/20249/2/20246161(2)地址表列)地址表列地址表列是用逗号分隔的若干个变量的地地址表列是用逗号分隔的若干个变量的地址。地址是由地址运算符址。地址是由地址运算符“&”后跟变量名组后跟变量名组成的,其中成的,其中“&”叫取地址运算符。叫取地址运算符。例如例如char c;int x;float y;scanf(%c%d%f, &c,&x,&y);9/2/20249/2/20246262(3) 该函数以回车键结束输入。该函数以回车键结束输入。【例例2.10】 scanf()函数使用举例。函数使用举例。#include int main( ) int a,b; printf(请输入请输入a和和b两个整数的值:两个整数的值:); scanf(%d%d,&a,&b); printf(a+b=%dn,a+b); printf(a-b=%dn,a-b); return 0;9/2/20249/2/20246363