版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言语言1语法知识回想语法知识回想C言语的程序构造言语的程序构造一个可执行的一个可执行的C程序是由一个主函数程序是由一个主函数main( )和假设干个其它函数组成。这些函和假设干个其它函数组成。这些函数可以放在一个文件中,也可以放在假设数可以放在一个文件中,也可以放在假设干个文件中。干个文件中。C程序的执行是从主函数程序的执行是从主函数main( )的左的左开开场,到它的右场,到它的右为止。程序中的其它函数要为止。程序中的其它函数要想起作用,必需直接或间接被主函数运用想起作用,必需直接或间接被主函数运用。一个可执行的一个可执行的C程序,必需有一个主函程序,必需有一个主函数数main( ) ,
2、且只能有一个。,且只能有一个。C语言语言2算法及算法描画算法及算法描画算法就是处理问题的方法和步骤。算法就是处理问题的方法和步骤。算法描画有:算法描画有:人类言语描画人类言语描画图形描画:图形描画:1流程图流程图2N-S图图3PDA图图编程言语描画:编程言语描画:1伪代码伪代码2真代码真代码语法知识回想语法知识回想C语言语言3 第第2 2章章 数据类型、数据的数据类型、数据的输出与输入输出与输入2.1 C2.1 C言语的数据类型言语的数据类型2.2 2.2 常量和变量常量和变量2.3 2.3 整型数据整型数据2.4 2.4 实型数据实型数据2.5 2.5 字符型数据字符型数据2.6 2.6 数
3、据的输出与输入数据的输出与输入C语言语言42.1 C2.1 C言语的数据类型言语的数据类型C C言语提供的数据构造,是以数据类型方式出现的。详细言语提供的数据构造,是以数据类型方式出现的。详细分类如下:分类如下:1. 1.根本类型根本类型分为整型、实型又称浮点型、字符型和枚举型四种分为整型、实型又称浮点型、字符型和枚举型四种。2.2.构造类型构造类型分为数组类型、构造类型和共用类型三种。分为数组类型、构造类型和共用类型三种。3.3.指针类型。在第指针类型。在第8 8章中引见。章中引见。4.4.空类型空类型C C言语中的数据,有常量和变量之分,它们分别属于上述言语中的数据,有常量和变量之分,它们
4、分别属于上述这些类型。这些类型。本章将引见根本类型中的整型、实型和字符型三种数据本章将引见根本类型中的整型、实型和字符型三种数据。C语言语言5数据类型数据类型根本类型根本类型整型整型字符型字符型实型实型(浮点型浮点型)枚举类型枚举类型构造类型构造类型数组类型数组类型构造体类型构造体类型共用体类型共用体类型指针类型指针类型空类型空类型单精度型单精度型双精度型双精度型在程序中对用到的在程序中对用到的一切数据都必需指一切数据都必需指定其数据类型定其数据类型.?不同类型的数据不同类型的数据,所占所占内存的字节数不同内存的字节数不同, 对对应的操作也不一样。应的操作也不一样。数据类型概述数据类型概述C语
5、言语言62.2 2.2 常量和变量常量和变量一、一、 常量常量 1. 1.常量的概念常量的概念 在程序运转过程中,其值不能被改动的在程序运转过程中,其值不能被改动的量称为常量。量称为常量。 2. 2.常量的分类常量的分类1 1整型常量整型常量 5,87 5,872 2实型常量实型常量 6.23,1.86e+6 6.23,1.86e+63 3字符常量。字符常量。 a , ? , 9 a , ? , 94 4符号常量。符号常量。#define PI 2.1415926#define PI 2.1415926常量的类型,可经过书写方式来判别。常量的类型,可经过书写方式来判别。 二、二、 变量变量1.
6、 1.变量的概念变量的概念在程序运转过程中,其值可以被改动的量在程序运转过程中,其值可以被改动的量称为变量。称为变量。2.2.变量的两个要素变量的两个要素C语言语言71 1变量名。每个变量都必需有一个名字变量名。每个变量都必需有一个名字变量变量名,变量命名遵照标识符命名规那么。名,变量命名遵照标识符命名规那么。2 2变量值。在程序运转过程中,变量值存储在内变量值。在程序运转过程中,变量值存储在内存中。在程序中,经过变量名来援用变量的值。存中。在程序中,经过变量名来援用变量的值。3.3.标识符命名规那么标识符命名规那么1 1有效字符:只能由字母、数字和下划线组成,有效字符:只能由字母、数字和下划
7、线组成,且以字母或下划线开头。且以字母或下划线开头。2 2有效长度:随系统而异,但至少前个字符有有效长度:随系统而异,但至少前个字符有效。假设超长,那么超长部分被舍弃。效。假设超长,那么超长部分被舍弃。例如,由于例如,由于student_namestudent_name和和student_numberstudent_number的前的前个字符一样,有的系统以为这两个变量,是一回事而不个字符一样,有的系统以为这两个变量,是一回事而不加区别。加区别。 C C言语运用四类字符构成语法成分:数字字符言语运用四类字符构成语法成分:数字字符0909,大小写字母,可打印字符大小写字母,可打印字符 !%&am
8、p;%&* *_+=( ) :;_+=( ) :; .?/ |,.?/ |,空白符空格、换行、制表符空白符空格、换行、制表符C语言语言83 3C C言语的关键字不能用作变量名。言语的关键字不能用作变量名。留意:留意:C C言语对英文字母的大小写敏感,即同一字母的言语对英文字母的大小写敏感,即同一字母的大小写,被以为是两个不同的字符。大小写,被以为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以添加习惯上,变量名和函数名中的英文字母用小写,以添加可读性。可读性。思索:在思索:在C C言语中,变量名言语中,变量名totaltotal与变量名与变量名TOTALTOTAL、ToT
9、aLToTaL、tOtAltOtAl等是同一个变量吗?等是同一个变量吗?标识符命名的良好习惯标识符命名的良好习惯见名知意:见名知意:所谓所谓“见名知意是指,经过变量名就知道变量值的含见名知意是指,经过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词或缩写作变义。通常应选择能表示数据含义的英文单词或缩写作变量名,或汉语拼音字头作变量名。量名,或汉语拼音字头作变量名。例如,例如,name/xmname/xm姓名、姓名、gender/xbgender/xb性别、性别、age/nlage/nl年龄、年龄、salary/gzsalary/gz工资。工资。C语言语言94.4.变量的定义与初始化
10、变量的定义与初始化在言语中,要求对一切用到的变量,必需先定在言语中,要求对一切用到的变量,必需先定义、后运用;且称在定义变量的同时进展赋初值的义、后运用;且称在定义变量的同时进展赋初值的操作为变量初始化。操作为变量初始化。1 1变量定义的普通格式变量定义的普通格式数据类型数据类型 变量名变量名, , 变量名变量名2;2;例如,例如,float radius, length, area;float radius, length, area; 2 2变量初始化的普通格式变量初始化的普通格式数据类型数据类型 变量名变量名=初值初值, , 变量名变量名2=2=初值初值2;2;例如,例如,float r
11、adius=2.5, length, area; float radius=2.5, length, area; 5.5.变量的赋值变量的赋值-改动变量取值的有效方法改动变量取值的有效方法例如:例如:length=2length=2* *PIPI* *radius;radius; area=PI area=PI* *radiusradius* *radius;radius;普通格式:变量普通格式:变量=表达式;表达式;C语言语言10变量的存储实现:变量的存储实现:C C 程序的变量功能怎样实现?当一程序的变量功能怎样实现?当一个变量被定义时,系统将为它确定一个变量被定义时,系统将为它确定一个存
12、储值的位置,这个存储位置所占个存储值的位置,这个存储位置所占存储器单元的数目由变量的类型确定存储器单元的数目由变量的类型确定,也就是说,由变量所要存储的数据,也就是说,由变量所要存储的数据值的大小决议。例如,在许多系统里值的大小决议。例如,在许多系统里,一个双精度类型变量常被分配一块,一个双精度类型变量常被分配一块8 8 个字节大小的存储位置,其中正好个字节大小的存储位置,其中正好能放下一个双精度值。一个字符类型能放下一个双精度值。一个字符类型的变量通常分配一个的变量通常分配一个1 1 字节的存储位字节的存储位置。其他类型也一样,由编译系统根置。其他类型也一样,由编译系统根据数据类型为变量分配
13、存储。据数据类型为变量分配存储。C语言语言11另外,不同系统也采用不同分配方式。例如在一些另外,不同系统也采用不同分配方式。例如在一些微机微机C C 言语系统里整型变量被分配言语系统里整型变量被分配2 2 个字节的存个字节的存储位置,在另一些系统里的储位置,在另一些系统里的int int 变量被分配变量被分配4 4 个字个字节。当程序中给变量赋值的时候,这个值就被存节。当程序中给变量赋值的时候,这个值就被存入变量所占的存储单元。当需求运用某个变量的入变量所占的存储单元。当需求运用某个变量的值时,就从相应存储位置中取出值来用。总之,值时,就从相应存储位置中取出值来用。总之,普通是不同类型占用不同
14、数目的存储单元,同一普通是不同类型占用不同数目的存储单元,同一类型在不同编译系统也能够占用不同数目的存储类型在不同编译系统也能够占用不同数目的存储单元。单元。假设有变量定义:假设有变量定义: double x1=35.70; double x1=35.70;C语言语言12C语言语言13常量常量常量可以直接出如今程序中,也可以先给常量起个常量可以直接出如今程序中,也可以先给常量起个名字,程序中用常量的名字;名字,程序中用常量的名字;#define PI 2.1415926#define PI 2.1415926变量必需先定义后运用。定义就是给变量按标识符变量必需先定义后运用。定义就是给变量按标识
15、符命名规那么起个名字,然后阐明变量能放什么类型命名规那么起个名字,然后阐明变量能放什么类型的数据。变量的初始化是指在定义变量的同时给它的数据。变量的初始化是指在定义变量的同时给它一个原始值:一个原始值:int a=9; int a=9; 程序中经过变量的名运用变量的值时,必程序中经过变量的名运用变量的值时,必需确保它曾经有确定的值;除初始化外,也可以运需确保它曾经有确定的值;除初始化外,也可以运用赋值操作使变量有确定的值。格式为:用赋值操作使变量有确定的值。格式为:变量名变量名=表达式;表达式;如:如:int a;int a; a=8; a=8;语法知识回想语法知识回想C语言语言142.3 2
16、.3 整型数据整型数据一、一、 整型变量整型变量1. 1.分类分类 根据占用内存字节数的不同,整型变量又分为类:根据占用内存字节数的不同,整型变量又分为类:1 1根本整型类型关键字为根本整型类型关键字为intint。2 2短整型类型关键字为短整型类型关键字为short intshort int。3 3长整型类型关键字为长整型类型关键字为long intlong int。4 4无符号整型。无符号型又分为无符号根本整型无符号整型。无符号型又分为无符号根本整型unsigned intunsigned int、无符号短整型、无符号短整型unsigned shortunsigned short和无符和无
17、符号长整型号长整型unsigned longunsigned long三种,只能用来存储无符号整数三种,只能用来存储无符号整数。2.2.占用内存字节数与值域占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。上述各类型整型变量占用的内存字节数,随系统而异。在在3232位操作系统中,普通用位操作系统中,普通用4 4字节表示一个字节表示一个intint型变量,且型变量,且longlong型型intint型型shortshort型。有些系统根本不区分它们。在型。有些系统根本不区分它们。在VCVC中中,longlong与与intint都是都是4 4字节,字节,shortshort是是
18、2 2字节。字节。C语言语言15显然,不同类型的整型变量,其值域不同。占用显然,不同类型的整型变量,其值域不同。占用内存字节数为内存字节数为n n的有符号整型变量,其值域为:的有符号整型变量,其值域为:-2n-2n* *8-18-12n2n* *8-1-18-1-1;无符号整型变量的值域为:;无符号整型变量的值域为:002n2n* *8-18-1。 运用方法:运用方法:int int 变量名表;变量名表;例如:例如:int a,b,c;int a,b,c;二、二、 整型常量整型常量. .三种表示方式三种表示方式整型常量即整常数,在言语中可用三种方式表整型常量即整常数,在言语中可用三种方式表示:
19、示:1 1十进制。例如十进制。例如1010、3636。2 2八进制以数字开头。例如八进制以数字开头。例如012012。3 3十六进制以数字十六进制以数字+ +小写字母小写字母x x开头。开头。例如例如0 x360 x36。C语言语言16. .分类分类1 1根本整型。在根本整型。在3232位机中,用位机中,用4 4字节存储,其数据字节存储,其数据范围与范围与intint型变量一样。型变量一样。2 2长整型在数值后面加长整型在数值后面加“L Ll l。对超出根本。对超出根本整型值域的整型常量,可运用长整型常量表示,其取值范整型值域的整型常量,可运用长整型常量表示,其取值范围可达围可达- - - -
20、。例如,。例如,123l123l、315315等。等。3.3.类型匹配规那么类型匹配规那么类型匹配规那么为:一个整型常量,可以赋给能包容类型匹配规那么为:一个整型常量,可以赋给能包容下其值的整型变量。下其值的整型变量。例如,其值在例如,其值在- - - -的整型常量,可的整型常量,可以赋给以赋给intint型变量和型变量和long intlong int型变量;其值在型变量;其值在- - - -的整型常量,就只能赋给的整型常量,就只能赋给long intlong int型变量。型变量。 留意:常量无留意:常量无unsignedunsigned型。但一个非负整型常量,只型。但一个非负整型常量,只
21、需它的值不超越相应变量的值域即取值范围,也可以需它的值不超越相应变量的值域即取值范围,也可以赋给赋给unsignedunsigned型变量。型变量。C语言语言超出取值范围会怎样?超出取值范围会怎样? 假定假定int的范围是的范围是-3276832767 给它一个超出范围的数会如何?给它一个超出范围的数会如何? 现场编程检验现场编程检验17C语言语言关于整数的表达范围关于整数的表达范围012-1-2+132766-3276832767-32767-32766+2C语言语言192.42.4实型数据实型数据一、一、 实型变量实型变量 言语的实型变量,分为两种:言语的实型变量,分为两种: 1 1单精度
22、型。类型关键字为单精度型。类型关键字为floatfloat,普通占字节,普通占字节位、提供位有效数字。位、提供位有效数字。 2 2双精度型。类型关键字为双精度型。类型关键字为doubledouble,普通占个字节、,普通占个字节、提供提供15161516位有效数字。位有效数字。 运用方法:运用方法:float float 变量名表;变量名表;例如:例如:float x,y,z;float x,y,z;二、二、 实型常量实型常量 . .表示方式表示方式实型常量即实数,在言语中又称浮点数,其值有两种表达实型常量即实数,在言语中又称浮点数,其值有两种表达方式:方式: 1 1十进制方式。例如十进制方式
23、。例如2.142.14、9.89.8。 2 2指数方式:指数方式:EEe e。例如。例如2.02.0+5+5等。等。 . .关于类型关于类型 实型常量不分实型常量不分floatfloat型和型和doubledouble型。一个实型常量,可以型。一个实型常量,可以赋给一个实型变量赋给一个实型变量floatfloat型或型或doubledouble型型C语言语言应会的语法知识点应会的语法知识点#include stdio.hint main( )int m=6,n;float a=1.68,b;double x=6.18,y=1.3e-6; return 0;C语言语言212.5 2.5 字符型数
24、据字符型数据一、一、 字符常量字符常量1. 1.字符常量的定义字符常量的定义用一对单引号括起来的单个字符,称为字符常量。用一对单引号括起来的单个字符,称为字符常量。例如,例如,A A、等。等。2.2.本义字符本义字符( (见见P23P23表表2.22.2言语还允许运用一种特殊方式的字符常量,就是以反斜言语还允许运用一种特殊方式的字符常量,就是以反斜杠杠“ 开头的本义字符。开头的本义字符。 留意:假设反斜杠或单引号本身作为字符常量,必需运留意:假设反斜杠或单引号本身作为字符常量,必需运用本义字符:用本义字符: 、 。 案例案例2.1 2.1 用本义字符输出可打印字符和不可打印字符。用本义字符输出
25、可打印字符和不可打印字符。 / /* *案例代码文件名:案例代码文件名:AL2_1.CAL2_1.C* */ / / /* *程序功能:用本义字符输出可打印字符和不可打印字程序功能:用本义字符输出可打印字符和不可打印字符符* */ /C语言语言22#include stdio.h#include stdio.hint main( )int main( ) printf(“x4Fx4Bx21nprintf(“x4Fx4Bx21n); /); /* * 等价于等价于printf(“OK!nprintf(“OK!n); ); * */ / printf(“x15 xABn printf(“x15 x
26、ABn); ); return 0; return 0; 程序运转结果如下:程序运转结果如下: ! 二、二、 字符变量字符变量字符变量的类型关键字为字符变量的类型关键字为charchar,普通占用,普通占用1 1字节内存单元。字节内存单元。1. 1.变量值的存储变量值的存储 字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实践上字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实践上是将该字符的是将该字符的ASCIIASCII码值无符号整数存储到内存单元中。码值无符号整数存储到内存单元中。例如,例如,char ch1, ch2; char ch1, ch2; / /*
27、 *定义两个字符变量:定义两个字符变量:ch1ch1,ch2ch2* */ /ch1=a; ch2=b; /ch1=a; ch2=b; /* *给字符变量赋值给字符变量赋值* */ /C语言语言232.2.特性特性字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的ASCIIASCII码码 一个无符号整数,一个无符号整数,其方式与整数的存储方式一样,所以言语允许字符型数据与整型数其方式与整数的存储方式一样,所以言语允许字符型数据与整型数据之间通用。据之间通用。1 1一个字符型数据,既可以字符方式输出,也可以整数方式输一个字符型数据,既可以字符方式输出,也可以整数方式输出。出。 案例案例
28、2.2 2.2 字符变量的字符方式输出和整数方式输出。字符变量的字符方式输出和整数方式输出。 / /* *案例代码文件名:案例代码文件名:AL2_2.CAL2_2.C* */ / / /* *程序功能:用字符方式和整数方式输出字符变量程序功能:用字符方式和整数方式输出字符变量* */ / #include stdio.h #include stdio.hint main( ) int main( ) char ch1,ch2; char ch1,ch2; ch1=a; ch2=b; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn printf(“ch1=%c,ch2=
29、%cn,ch1,ch2);,ch1,ch2); printf(“ch1=%d,ch2=%dn printf(“ch1=%d,ch2=%dn,ch1,ch2);,ch1,ch2); return 0; return 0; 程序运转结果:程序运转结果: ch1=a,ch2=b ch1=a,ch2=b ch1=97,ch2=98 ch1=97,ch2=98 C语言语言应会的语法知识点应会的语法知识点#include stdio.hint main( )int m=6,n;float a=1.68,b;char ch1=$,ch2;double x=6.18,y=1.3e-6; return 0;C语
30、言语言252 2允许对字符数据进展算术运算,此时就是对它们允许对字符数据进展算术运算,此时就是对它们的的ASCIIASCII码值进展算术运算。码值进展算术运算。 案例案例2.3 2.3 字符数据的算术运算。字符数据的算术运算。 / /* *案例代码文件名:案例代码文件名:AL2_3.CAL2_3.C* */ / / /* *程序功能:字符数据的算术运算程序功能:字符数据的算术运算* */ / #include stdio.h #include stdio.hint main( ) int main( ) char ch1,ch2; char ch1,ch2; ch1=a; ch2=B; ch1
31、=a; ch2=B; / /* *字母的大小写转换字母的大小写转换* */ / printf( printf(“ch1=%c,ch2=%cnch1=%c,ch2=%cn,ch1-32,ch2+32);,ch1-32,ch2+32); / /* *用字符方式输出一个大于用字符方式输出一个大于256256的数值的数值* */ / printf(ch1+200=%dn, ch1+200); printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%
32、dn, ch1+256); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); printf(ch1+256=%cn, ch1+256); return 0; return 0; C语言语言26程序运转结果:程序运转结果:ch1=A,ch2=bch1=A,ch2=bch1+200=297ch1+200=297ch1+200=)ch1+200=)ch1+256=353ch1+256=353ch1+256=a ch1+256=a 思索题:用字符方式输出一个大于思索题:用字符方式输出一个大于256256的数值,会得到什么结果?的数值
33、,会得到什么结果?三、三、 字符串常量字符串常量1. 1.字符串常量的概念和字符串长度字符串常量的概念和字符串长度字符串常量是用一对双引号括起来的假设干字符序列。字符串常量是用一对双引号括起来的假设干字符序列。字符串中字符的个数称为字符串长度。长度为字符串中字符的个数称为字符串长度。长度为0 0的字符串即一个的字符串即一个字符都没有的字符串称为空串,字符都没有的字符串称为空串, 表示一对紧连的双引号。表示一对紧连的双引号。C语言语言27例如,例如,“How do you do.How do you do.、“Good morning.Good morning.等,等,都是字符串常量,其长度分别
34、为都是字符串常量,其长度分别为1414和和1313空格也是一个字空格也是一个字符。符。 假设反斜杠和双引号作为字符串中的有效字符,那么假设反斜杠和双引号作为字符串中的有效字符,那么必需运用本义字符。必需运用本义字符。例如:例如:1 1C:msdosv6.22 C:msdosv6.22C:msdosv6.22 C:msdosv6.22 2 2I say:Goodbye! I I say:Goodbye! I say:Goodbye!say:Goodbye!“2.2.字符串的存储字符串的存储C C言语规定:在存储字符串常量时,由系统在字符串的言语规定:在存储字符串常量时,由系统在字符串的末尾自动加
35、一个末尾自动加一个00作为字符串的终了标志。作为字符串的终了标志。留意:在源程序中书写字符串常量时,不用加终了字留意:在源程序中书写字符串常量时,不用加终了字符符00,否那么画蛇添足。,否那么画蛇添足。 假设有一个字符串为假设有一个字符串为“CHINACHINA,那么它在内存中的,那么它在内存中的实践存储如下所示:实践存储如下所示:最后一个字符最后一个字符00是系统自动加上的,它占用字节而是系统自动加上的,它占用字节而非字节内存空间。非字节内存空间。CHINA0C语言语言28综上所述,字符常量综上所述,字符常量AA与字符串常量与字符串常量AA是两回事:是两回事:1 1定界符不同:字符常量运用单
36、引号,而字符串定界符不同:字符常量运用单引号,而字符串常量运用双引号;常量运用双引号;2 2长度不同:字符常量的长度固定为长度不同:字符常量的长度固定为1 1,而字符串,而字符串常量的长度,可以是常量的长度,可以是0 0,也可以是某个整数;,也可以是某个整数;3 3存储要求不同:字符常量存储的是字符的存储要求不同:字符常量存储的是字符的ASCIIASCII码值,而字符串常量,除了要存储有效的字符外,还要码值,而字符串常量,除了要存储有效的字符外,还要存储一个终了标志存储一个终了标志00。C语言语言29char型与型与int型之间的关系型之间的关系 小写字母转换为大写字母小写字母转换为大写字母
37、#include stdio.hint main()char ch = b; ch = b - 32; printf(%c, %dn, ch, ch); return 0;#include stdio.hint main()char ch = b; ch = b - (a - A) ; printf(%c, %dn, ch, ch); return 0;29C语言语言302.6数据的输出与输入数据的输出与输入格式化输出格式化输出printf( )printf( )函数函数格式化输入格式化输入scanf( )scanf( )函数函数单个字符输入输出单个字符输入输出getchar( )getcha
38、r( )和和putchar( )putchar( )函数函数简单程序设计简单程序设计 C语言语言31为了让计算机处置各种数据,首先为了让计算机处置各种数据,首先就应该把原始数据输入到计算机中;就应该把原始数据输入到计算机中;计算机处置终了后,再将结果数据信计算机处置终了后,再将结果数据信息以人可以识别的方式输出。息以人可以识别的方式输出。C C言语中言语中的输入输出操作,是由的输入输出操作,是由C C言语编译系统言语编译系统提供的库函数来实现,而不是由提供的库函数来实现,而不是由C C言语言语本身提供。本身提供。输入与输出函数在规范库输入与输出函数在规范库stdio.hstdio.h中进展定义
39、,故运用它们时要在程序中进展定义,故运用它们时要在程序开场运用预处置开场运用预处置#include #include “stdio.hstdio.h行。行。C语言语言32 格式化输出格式化输出printf( )printf( )函数函数 printf( ) printf( )函数的作用:向计算机系统默许的输出设备普通指函数的作用:向计算机系统默许的输出设备普通指终端或显示器输出一个或多个恣意类型的数据。终端或显示器输出一个或多个恣意类型的数据。一、一、 printf( ) printf( ) 函数的普通格式函数的普通格式 案例案例2.4 2.4 知圆半径知圆半径radius=1.5radius
40、=1.5,求圆周长和圆面积。,求圆周长和圆面积。/ /* *案例代码文件名:案例代码文件名:AL2_4.CAL2_4.C。* */ /#include stdio.h#include stdio.hint main( )int main( ) float radius,length,area,pi=2.1415926; float radius,length,area,pi=2.1415926; radius=1.5; radius=1.5; length=2 length=2* *pipi* *radius;radius;/ /* *求圆周长求圆周长* */ / area=pi area=p
41、i* *radiusradius* *radius;radius; / /* *求圆面积求圆面积* */ / printf(“radius=%fn printf(“radius=%fn,radius);,radius);/ /* *输出圆半径输出圆半径* */ / printf(“length=%7.2f,area=%7.2fn printf(“length=%7.2f,area=%7.2fn,length,area); ,length,area); / /* *输出圆周长、面积输出圆周长、面积* */ / return 0; return 0; C语言语言33 程序运转结果如下:程序运转结果
42、如下: radius=1.500000 radius=1.500000 length= 9.42,area= 7.07 length= 9.42,area= 7.07 printf( ) printf( )函数的普通格式如下:函数的普通格式如下:printf(printf(格式字符串格式字符串 ,输出项表,输出项表) ); 1 1格式字符串。格式字符串。“格式字符串也称格式字符串也称“转换控制字符串转换控制字符串,可以包含三种字符:,可以包含三种字符: 1 1格式指示符。格式指示符的常用方式如下:格式指示符。格式指示符的常用方式如下:%字母字母 这里,字母可以是这里,字母可以是P28P28表表
43、2.32.3所示的字母,表示对应的输所示的字母,表示对应的输出项输出时的格式。出项输出时的格式。%与字母之间不可以有空格,但可以有整与字母之间不可以有空格,但可以有整数数字字母为数数字字母为d d或或c) c)或以下方式的实数数字或以下方式的实数数字m.nm.n字母为字母为f f或或s) s),其中,其中mm和和n n都是整数。数字表示输出项占的宽度最小值都是整数。数字表示输出项占的宽度最小值 。C语言语言34 2 2本义字符本义字符 例如,例如, 案例案例2.42.4中中printf( )printf( )函数中的函数中的nn就是本义字符,输出时产生就是本义字符,输出时产生一个一个“换行操作
44、。换行操作。 3 3普通字符普通字符除格式指示符和本义字符之外的其它字符。格式除格式指示符和本义字符之外的其它字符。格式字符串中的普通字符,原样输出。字符串中的普通字符,原样输出。 例如,例如, 案例案例2.42.4中中“printf(radius=%fn, radius);“printf(radius=%fn, radius);语句中的语句中的“radius=“radius=,“printf(length=%7.2f,area=%7.2fn, length,area);“printf(length=%7.2f,area=%7.2fn, length,area);语语句中的句中的“length
45、=“length=、“area=“area=等都是普通字符。等都是普通字符。 2 2输出项表输出项表 输出项表是可选的。假设要输出的数据不止输出项表是可选的。假设要输出的数据不止1 1个,相邻个,相邻2 2个之间用逗个之间用逗号分开。下面的号分开。下面的printf( )printf( )函数都是合法的:函数都是合法的: 1 1printf(“I am a student.nprintf(“I am a student.n); /); /屏幕显示:屏幕显示:I am a student.I am a student. 2 2printf(“%dprintf(“%d,3+2);,3+2); /
46、/屏幕显示:屏幕显示:5 5 3 3printf(WelcomentonBeijing!n);/printf(WelcomentonBeijing!n);/屏幕显示屏幕显示: : WelcomeWelcometoto! !必需强调:必需强调:“格式字符串中的格式指示符,必需与格式字符串中的格式指示符,必需与“输出项表中输出项表中、输出项的数据类型一致,个数一样,否那么会引起输出错误。、输出项的数据类型一致,个数一样,否那么会引起输出错误。C语言语言35 二、二、 格式指示符格式指示符 输出不同类型的数据,要运用不同的类型转换字符。输出不同类型的数据,要运用不同的类型转换字符。 1 1类型转换字
47、符类型转换字符dd以带符号的十进制整数方式输出。以带符号的十进制整数方式输出。 案例案例2.5 2.5 类型转换字符类型转换字符d d的运用。的运用。/ /* *案例代码文件名:案例代码文件名:AL2_5.CAL2_5.C。* */ /#include stdio.h#include stdio.hint main( )int main( ) int num1=123; int num1=123; long num2=123456; long num2=123456; / /* *用用3 3种不同格式,输出种不同格式,输出intint型数据型数据num1num1的值的值* */ / print
48、f(num1=%d,num1=%5d,num1=%-5d,num1=%2dn, printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1);num1,num1,num1,num1); / /* *用用3 3种不同格式,输出种不同格式,输出longlong型数据型数据num2num2的值的值* */ / printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2);printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2); printf
49、(num1=%ldn,num1); printf(num1=%ldn,num1); return 0; return 0; C语言语言36程序运转结果如下:程序运转结果如下:num1=123,num1=num1=123,num1=123,num1=123123,num1=123,num1=123,num1=123num2=123456,num2=num2=123456,num2=123456,num2=123456123456,num2=123456num1=16908411num1=16908411对于整数,还可用八进制、无符号方式对于整数,还可用八进制、无符号方式%o(%o(小写字母小写字
50、母o)o)和十六进制、无符号方式和十六进制、无符号方式%x%x输出。对于输出。对于unsignedunsigned型型数据,也可用数据,也可用%u%u格式符,以十进制、无符号方式输出。格式符,以十进制、无符号方式输出。所谓无符号方式是指,不论正数还是负数,系一致概当所谓无符号方式是指,不论正数还是负数,系一致概当作无符号整数来输出。例如,作无符号整数来输出。例如,printf(%d,%o,%xn,-1,-1,-1);printf(%d,%o,%xn,-1,-1,-1);C语言语言37 2 2类型转换字符类型转换字符ff以小数方式、按系统默许的宽度,输出单精以小数方式、按系统默许的宽度,输出单精
51、度和双精度实数。度和双精度实数。 案例案例2.6 2.6 类型转换字符类型转换字符f f的运用。的运用。/ /* *案例代码文件名:案例代码文件名:AL2_6.CAL2_6.C。* */ /#include stdio.h#include stdio.hint main( )int main( ) float f=122.456; float f=122.456; double d1,d2; double d1,d2; d1=1111111111111.111111111; d1=1111111111111.111111111; d2=2222222222222.222222222; d2=2
52、222222222222.222222222; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf(d1+d2=%fn,d1+d2); printf(d1+d2=%fn,d1+d2); return 0; return 0; 程序运转结果如下:程序运转结果如下: 122.456001, 122.456001,122.456001,122.456001,122.46,122.46122.46,122.46,122.46,122.46 d1+d2
53、=3333333333332.333010 d1+d2=3333333333332.333010C语言语言38 本 案 例 程 序 的 输 出 结 果 中 , 数 据本 案 例 程 序 的 输 出 结 果 中 , 数 据122.456001122.456001和和3333333333332.3330103333333333332.333010中的中的001001和和010010都是无意义的,由于它们超出了有效数字的都是无意义的,由于它们超出了有效数字的范围。范围。 对于实数,也可运用格式符对于实数,也可运用格式符%e%e,以规范指,以规范指数方式输出:尾数中的整数部分大于等于数方式输出:尾数中
54、的整数部分大于等于1 1、小、小于于1010,小数点占一位,尾数中的小数部分占,小数点占一位,尾数中的小数部分占5 5位位;指数部分占;指数部分占4 4位如位如e-03e-03,其中,其中e e占一位,指占一位,指数符号占一位,指数占数符号占一位,指数占2 2位,合计位,合计1111位。位。 也可运用格式符也可运用格式符%g%g,让系统根据数值的大,让系统根据数值的大小,自动选择小,自动选择%f%f或或%e%e格式、且不输出无意义的零格式、且不输出无意义的零。C语言语言39浮点数的圈套浮点数的圈套#include int main()float f;f = 122.456;if (f = 12
55、2.456)printf(f确实等于确实等于122.456);elseprintf(实践上,实践上,f等于等于%fn, f); return 0;运转结果会是什么?运转结果会是什么?39C语言语言403.3.类型转换字符类型转换字符cc输出一个字符只占一列宽度。输出一个字符只占一列宽度。 案例案例2.7 2.7 类型转换字符类型转换字符c c的运用。的运用。/ /* *案例代码文件名:案例代码文件名:AL2_7.CAL2_7.C。* */ /#include stdio.h#include stdio.hint main( )int main( ) char c=A; char c=A; in
56、t i=65; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); printf(i=%d,%c,i,i); return 0; return 0; 程序运转结果如下:程序运转结果如下: c=A, c=A,A,65A,65 i=65,A i=65,A 需求强调的是:在需求强调的是:在C C言语中,整数可以用字符方式输出,字符数据言语中,整数可以用字符方式输出,字符数据也可以用整数方式输出。将整数用字符方式输出时,系统首先求该数与也可以用整数方式输出。将整数用字符方式输出时,
57、系统首先求该数与256256的余数,然后将余数作为的余数,然后将余数作为ASCIIASCII码,转换成相应的字符输出。码,转换成相应的字符输出。C语言语言414 4类型转换字符类型转换字符ss输出一个字符串。输出一个字符串。 案例案例2.8 2.8 类型转换字符类型转换字符s s的运用。的运用。/ /* *案例代码文件名:案例代码文件名:AL2_8.CAL2_8.C。* */ /#include stdio.h#include stdio.hint main( )int main( ) printf(%s,%5s,%-10s,Internet,Internet,Internet); print
58、f(%s,%5s,%-10s,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet); return 0; return 0; 程序运转结果如下:程序运转结果如下:Internet,Internet,InternetInternet,Internet,Internet, ,Inter,InterInter,Inter,Inter,Inter留意:系统输出字符和字符串
59、时,不输出单引号和双引号。留意:系统输出字符和字符串时,不输出单引号和双引号。C语言语言42 三、三、 运用阐明运用阐明 1 1printf( )printf( )可以输出常量、变量和表达式的值。但格可以输出常量、变量和表达式的值。但格式控制中的格式阐明符,必需按从左到右的顺序,与输出式控制中的格式阐明符,必需按从左到右的顺序,与输出项表中的每个数据一一对应,否那么出错。项表中的每个数据一一对应,否那么出错。 例如,例如,printf(str=%s, f=%d, i=%fn, Internet, 1.0 / printf(str=%s, f=%d, i=%fn, Internet, 1.0 /
60、 2.0, 3 + 5, CHINA);2.0, 3 + 5, CHINA);是错误的。是错误的。 2 2格式字符格式字符x x、e e、g g可以用小写字母,也可以用大可以用小写字母,也可以用大写字母。运用大写字母时,输出数据中包含的字母也大写写字母。运用大写字母时,输出数据中包含的字母也大写。除了。除了x x、e e、g g格式字符外,其它格式字符必需用小写字母格式字符外,其它格式字符必需用小写字母。 例如,例如,%f%f不能写成不能写成%F%F。 3 3格式字符紧跟在格式字符紧跟在“%“%后面就作为格式字符,否后面就作为格式字符,否那么将作为普通字符运用原样输出。那么将作为普通字符运用原样输出。 例如,例如,“printf(“printf(c=%c, f=%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年版广告代理合同范本二篇
- 2025年安徽国考笔试真题
- 2025年甘肃国考笔试真题
- (完整版)药品GSP采购员培训试卷及答案
- 医疗器械设施设备维护及验证和校准管理制度
- 2026年化工车间安全教育试题及答案
- 园林置石施工方案及技术措施
- 幼儿园地震应急疏散演练脚本
- 《物业管理基本制度与政策》考试试卷及答案
- 纺织设备安装专项施工方案
- 2026年《医疗器械经营监督管理办法》培训试卷(+答案)
- 2026山东临沂城市职业学院临沂城市职业学院招聘专任教师、公共课教师及教辅人员113人考试备考题库及答案详解
- 2026年餐饮服务食品安全管理员试题及答案
- 2026湖北武汉市宏泰集团所属湖北宏泰私募股权基金管理有限公司投资经理岗位招聘6人模拟试卷有完整答案详解
- 钢结构大棚拆除施工方案
- 电缆敷设及接线作业指导书培训
- 2026中国数联物流信息有限公司(上海)岗位招聘笔试历年参考题库附带答案详解
- 浦发银行银联交易系统:架构设计、技术实现与安全保障
- JJF(石化)084-2023润滑油蒸发损失测定仪(诺亚克法)校准规范
- 文印工作人员保密制度
- 电力设施安全防护技术规范手册
评论
0/150
提交评论