高级语言程序设计教学课件第2章

上传人:工**** 文档编号:584644759 上传时间:2024-08-31 格式:PPT 页数:47 大小:623.50KB
返回 下载 相关 举报
高级语言程序设计教学课件第2章_第1页
第1页 / 共47页
高级语言程序设计教学课件第2章_第2页
第2页 / 共47页
高级语言程序设计教学课件第2章_第3页
第3页 / 共47页
高级语言程序设计教学课件第2章_第4页
第4页 / 共47页
高级语言程序设计教学课件第2章_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《高级语言程序设计教学课件第2章》由会员分享,可在线阅读,更多相关《高级语言程序设计教学课件第2章(47页珍藏版)》请在金锄头文库上搜索。

1、1 1第二章第二章C语言程序基础语言程序基础2.1C程序的基本结构程序的基本结构2.2C语言基本语法成分语言基本语法成分2.3C语言数据类型语言数据类型2.4C语句语句2.5C语言的格式输出函数语言的格式输出函数printf2.6C语言的格式输入函数语言的格式输入函数scanf2 2学习目标学习目标n n掌握掌握掌握掌握C C程序的基本结构及程序的基本结构及程序的基本结构及程序的基本结构及C C语言基本语法成分语言基本语法成分语言基本语法成分语言基本语法成分;n n理解理解理解理解C C语言数据类型的概念语言数据类型的概念语言数据类型的概念语言数据类型的概念,掌握整形、浮点型、,掌握整形、浮点

2、型、,掌握整形、浮点型、,掌握整形、浮点型、字符型数据的存储形式、取值范围、表示形式及字符型数据的存储形式、取值范围、表示形式及字符型数据的存储形式、取值范围、表示形式及字符型数据的存储形式、取值范围、表示形式及基本运算;基本运算;基本运算;基本运算;n n掌握格式输入输出函数的使用掌握格式输入输出函数的使用掌握格式输入输出函数的使用掌握格式输入输出函数的使用,理解输入输出格,理解输入输出格,理解输入输出格,理解输入输出格式字符串与输入输出数据间的匹配关系;式字符串与输入输出数据间的匹配关系;式字符串与输入输出数据间的匹配关系;式字符串与输入输出数据间的匹配关系;n n通过模仿和改写例题,学习

3、简单的程序设计方法。通过模仿和改写例题,学习简单的程序设计方法。通过模仿和改写例题,学习简单的程序设计方法。通过模仿和改写例题,学习简单的程序设计方法。3 32.1 C程序的基本结构程序的基本结构 n nC语言程序的基本结构如下:语言程序的基本结构如下:编译预处理命令编译预处理命令编译预处理命令编译预处理命令void main(void)void main(void)void main(void)void main(void) 声明部分声明部分声明部分声明部分 执行部分执行部分执行部分执行部分 类型类型类型类型 子函数名(形参表)子函数名(形参表)子函数名(形参表)子函数名(形参表) 声明部分

4、声明部分声明部分声明部分 执行部分执行部分执行部分执行部分 执行部分一般形式如下:执行部分一般形式如下:执行部分一般形式如下:执行部分一般形式如下: 数据输入数据输入数据输入数据输入 数据处理数据处理数据处理数据处理 数据输出数据输出数据输出数据输出4 42.2 C语言基本语法成分语言基本语法成分n n字母字母字母字母:2626英文字母大、小写英文字母大、小写英文字母大、小写英文字母大、小写n n数字数字数字数字:数字:数字:数字:数字0909共共共共1010个个个个n n特殊字符特殊字符特殊字符特殊字符: !#%&+-*!#%&+-*/ /=.,;:=.,;:?“()?“() n n空白符空

5、白符空白符空白符:空格、制表符、换行符:空格、制表符、换行符:空格、制表符、换行符:空格、制表符、换行符【 C语言的字符集语言的字符集 】5 5【 标识符标识符 】n n程序中所使用的变量名、常量名、数组名、程序中所使用的变量名、常量名、数组名、函数名、文件名等统称为标识符函数名、文件名等统称为标识符n n命名规则命名规则只能由只能由只能由只能由字母、数字和下划线字母、数字和下划线字母、数字和下划线字母、数字和下划线三种字符组成,且三种字符组成,且三种字符组成,且三种字符组成,且第一个字符必须为字母或下划线第一个字符必须为字母或下划线第一个字符必须为字母或下划线第一个字符必须为字母或下划线su

6、m,_total,n_count,num1 合法合法total.sum,a2,$123,#a,1num 不合法不合法名字名字6 6注意事项注意事项n n大小写敏感大小写敏感大小写敏感大小写敏感n n名字别起特别长名字别起特别长名字别起特别长名字别起特别长n n标识符标识符标识符标识符不能与不能与不能与不能与“ “关键字关键字关键字关键字” ”同名同名同名同名,也,也,也,也不能与系统预不能与系统预不能与系统预不能与系统预先定义的先定义的先定义的先定义的“ “标准标识符标准标识符标准标识符标准标识符” ”同名同名同名同名n n起有意义的名字作到起有意义的名字作到起有意义的名字作到起有意义的名字作

7、到“ “顾名思义顾名思义顾名思义顾名思义” ”n n避免混淆避免混淆避免混淆避免混淆例如:例如:sum与与SUM是不同的标识符是不同的标识符正确标识符:正确标识符:stu_name和和 stu_num过长:过长:student_name和和 student_numsum表示总和,表示总和,name表示名字表示名字数字数字1与字母与字母1和和I,数字,数字0与字母与字母o,数字,数字2与字母与字母Z和和z。7 7问题:下面选项中,均是合法的标识符的选项是问题:下面选项中,均是合法的标识符的选项是问题:下面选项中,均是合法的标识符的选项是问题:下面选项中,均是合法的标识符的选项是(A)a1b(A)

8、a1b!12_e12_e(B)minf121x(B)minf121x(C)aifPI(C)aifPI(D)x2m_nsummin(D)x2m_nsummin 8 8【 关键字关键字 】n n定义:定义:定义:定义:C C语言规定的具有特定意义的一串字符,通语言规定的具有特定意义的一串字符,通语言规定的具有特定意义的一串字符,通语言规定的具有特定意义的一串字符,通常也称常也称常也称常也称保留字保留字保留字保留字n n类型类型类型类型 类型说明符类型说明符类型说明符类型说明符 intint、floatfloat、charchar等等等等 语句定义符语句定义符语句定义符语句定义符 ifif、else

9、else、whilewhile等等等等9 9C语言的语言的32个关键字个关键字autoautobreakbreakcasecasecharcharconstconstcontinuecontinuedefaultdefaultdododoubledoubleelseelseenumenumextemextemfloatfloatforforgotogotoififintintlonglongregisterregisterreturnreturnshortshortsignedsignedsizeofsizeofstaticstaticstructstructswitchswitchtyped

10、eftypedefunionunionunsignedunsignedvoidvoidvolatilevolatilewhilewhile1010【 运算符运算符 】n n运算符表示各种运算功能。运算符由一个运算符表示各种运算功能。运算符由一个或多个字符组成,如:或多个字符组成,如:+、-、*、/、%等。等。可以组成表达式:可以组成表达式:可以组成表达式:可以组成表达式: a+b;a+b; 2*2.1415926*r;2*2.1415926*r;1111【 分隔符分隔符 】n nC C语言中,分隔符有语言中,分隔符有语言中,分隔符有语言中,分隔符有逗号逗号逗号逗号、空格空格空格空格、TabTa

11、b和和和和回车回车回车回车等等等等 逗号逗号逗号逗号:主要用于在类型说明和函数参数表中分隔各个变量;:主要用于在类型说明和函数参数表中分隔各个变量;:主要用于在类型说明和函数参数表中分隔各个变量;:主要用于在类型说明和函数参数表中分隔各个变量; 空格空格空格空格、TabTab和和和和回车回车回车回车多用于语句和各单词之间的间隔符。多用于语句和各单词之间的间隔符。多用于语句和各单词之间的间隔符。多用于语句和各单词之间的间隔符。n n注意注意注意注意:在关键字或标识符之间必须要有一个以上的:在关键字或标识符之间必须要有一个以上的:在关键字或标识符之间必须要有一个以上的:在关键字或标识符之间必须要有

12、一个以上的分隔符作间隔,否则将会出现语法错误。分隔符作间隔,否则将会出现语法错误。分隔符作间隔,否则将会出现语法错误。分隔符作间隔,否则将会出现语法错误。 例如把例如把例如把例如把inta,b;inta,b;写成写成写成写成 inta,b;Cinta,b;C编译器会把编译器会把编译器会把编译器会把 intainta当成一个标识符处理,其结果必然出错。当成一个标识符处理,其结果必然出错。当成一个标识符处理,其结果必然出错。当成一个标识符处理,其结果必然出错。1212【 库函数库函数 】n n库函数不是库函数不是库函数不是库函数不是C C语言本身的组成成分,它是由语言本身的组成成分,它是由语言本身

13、的组成成分,它是由语言本身的组成成分,它是由C C编译系编译系编译系编译系统提供的可以直接使用的函数统提供的可以直接使用的函数统提供的可以直接使用的函数统提供的可以直接使用的函数n n库函数放在库函数放在库函数放在库函数放在库文件库文件库文件库文件中,同时这些函数的声明和宏定中,同时这些函数的声明和宏定中,同时这些函数的声明和宏定中,同时这些函数的声明和宏定义等信息存放在相应的义等信息存放在相应的义等信息存放在相应的义等信息存放在相应的头文件头文件头文件头文件中中中中n n使用方法使用方法使用方法使用方法 #include#include或或或或 #include“#include“头文件名头

14、文件名头文件名头文件名” ” 例如:例如:例如:例如: 绝对值、三角函数等数学类的函数需将头文件包含进来绝对值、三角函数等数学类的函数需将头文件包含进来绝对值、三角函数等数学类的函数需将头文件包含进来绝对值、三角函数等数学类的函数需将头文件包含进来13132.3 C语言数据类型语言数据类型C C C C数数数数据据据据类类类类型型型型指针类型指针类型指针类型指针类型空类型空类型空类型空类型 voidvoidvoidvoid定义类型定义类型定义类型定义类型 typedeftypedeftypedeftypedef基本类型基本类型基本类型基本类型字符类型字符类型字符类型字符类型 charcharc

15、harchar数值类型数值类型数值类型数值类型整整整整 型型型型短整型短整型短整型短整型 shortshortshortshort长整型长整型长整型长整型 longlonglonglong整型整型整型整型 intintintint浮点型浮点型浮点型浮点型单精度型单精度型单精度型单精度型floatfloatfloatfloat双精度型双精度型双精度型双精度型doubledoubledoubledouble构造类型构造类型构造类型构造类型枚举类型枚举类型枚举类型枚举类型 enumenumenumenum数组数组数组数组结构体结构体结构体结构体 structstructstructstruct共用体

16、共用体共用体共用体 unionunionunionunion1414常量和变量常量和变量n n常量常量在程序执行过程中,常量的值不能在程序执行过程中,常量的值不能由程序改变由程序改变n n变量变量在程序执行过程中,变量的值可以在程序执行过程中,变量的值可以由程序改变由程序改变变量对应着内存中一个存储单元,在存储单元变量对应着内存中一个存储单元,在存储单元变量对应着内存中一个存储单元,在存储单元变量对应着内存中一个存储单元,在存储单元中存放着该变量的值,每个变量都有一个名字中存放着该变量的值,每个变量都有一个名字中存放着该变量的值,每个变量都有一个名字中存放着该变量的值,每个变量都有一个名字 不

17、同类型数据所占存储单元的大小也不同不同类型数据所占存储单元的大小也不同不同类型数据所占存储单元的大小也不同不同类型数据所占存储单元的大小也不同如,如,如,如,charchar型占型占型占型占1 1个字节、个字节、个字节、个字节、intint型占型占型占型占4 4个字节、个字节、个字节、个字节、doubledouble型占型占型占型占8 8字节字节字节字节1515注意注意变量必须变量必须先声明,后使用先声明,后使用16162.3.1 整型数据整型数据intn n整型数据占有整型数据占有整型数据占有整型数据占有4 4个字节的存储空间,以二进制定点个字节的存储空间,以二进制定点个字节的存储空间,以二

18、进制定点个字节的存储空间,以二进制定点补码补码补码补码的形式存储。的形式存储。的形式存储。的形式存储。n n它的取值范围为它的取值范围为它的取值范围为它的取值范围为-2147483648-214748364821474836472147483647即即即即-2-23131(2 23131-1-1),整型数据没有小数部分),整型数据没有小数部分),整型数据没有小数部分),整型数据没有小数部分1717数的表示范围 不同位数的二进制数的不同位数的二进制数的表示范围表示范围231231-10232-10000(32个0)1111(32个1)323276832767(215215-1)065535(21

19、6-1)0000000000000000111111111111111116128127(2727-1)0255(28-1)00000000111111118有符号整数无符号整数二进制编码组合位数 ? ? 一个一个一个一个shortshort型变量最大允许值为型变量最大允许值为型变量最大允许值为型变量最大允许值为3276732767,如果再加,如果再加,如果再加,如果再加1 1会怎样会怎样会怎样会怎样 ? ? 将一个超过将一个超过将一个超过将一个超过shortshort型范围的整数赋值给一个整型变量会怎型范围的整数赋值给一个整型变量会怎型范围的整数赋值给一个整型变量会怎型范围的整数赋值给一个整

20、型变量会怎样样样样整型数据溢出整型数据溢出01111111 11111111a10000000 00000000b32767,-32768,800000000 00001000c 118main()main() short a,b,c; short a,b,c; a=32767; a=32767; b=a+1; b=a+1; c=65544; c=65544; printf( printf(“ “%d,%d,%d%d,%d,%d“ “,a,b,c);,a,b,c); 1919n n整型数据在内存中的存放形式整型数据在内存中的存放形式以二进制补码形式存放以二进制补码形式存放以二进制补码形式存放以

21、二进制补码形式存放inti=10;intj=-10;10ij-10取反取反加加100000000 00001010000000000000000011111111 1111010111111111 1111111111111111 1111011011111111 111111112020【例例例例2-12-1】 整数型数据的运算整数型数据的运算整数型数据的运算整数型数据的运算#include#includevoidvoidmain()main() intintx,y;x,y;x=1/2;x=1/2;/*/*整型运算量的除法运算,其结果自动取整整型运算量的除法运算,其结果自动取整整型运算量的除

22、法运算,其结果自动取整整型运算量的除法运算,其结果自动取整* */ /y=5%2;y=5%2;/*%/*%为求余运算,其运算量只能是整数为求余运算,其运算量只能是整数为求余运算,其运算量只能是整数为求余运算,其运算量只能是整数* */ /printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y); x=0,y=1x=0,y=1PressanykeytocontinuePressanykeytocontinue变量声明变量声明变量赋值变量赋值输出变量的值输出变量的值2121浮点型数据浮点型数据floatn n浮点型数据占有浮点型数据占有4个字节的存储空间,以浮个字

23、节的存储空间,以浮点的形式存储;点的形式存储;n n取值范围取值范围:(2.410-382.41038)2222n n在在C语言中,浮点型常量有两种表示形式:语言中,浮点型常量有两种表示形式:小数形式小数形式小数形式小数形式由正负号、数字和小数点组成,小由正负号、数字和小数点组成,小由正负号、数字和小数点组成,小由正负号、数字和小数点组成,小数点前后的数点前后的数点前后的数点前后的0 0可以省略,但小数点不能省略。可以省略,但小数点不能省略。可以省略,但小数点不能省略。可以省略,但小数点不能省略。 例如:例如:例如:例如: 等。等。等。等。指数形式指数形式指数形式指数形式用科学记数法来表示浮点

24、数,一般用科学记数法来表示浮点数,一般用科学记数法来表示浮点数,一般用科学记数法来表示浮点数,一般用来表示很大或很小的数。用来表示很大或很小的数。用来表示很大或很小的数。用来表示很大或很小的数。 例如:例如:例如:例如:23500000=2.351023500000=2.35107 7,在,在,在,在C C程序中可以表示程序中可以表示程序中可以表示程序中可以表示成:成:成:成: 2.35e72.35E70.235e8235e52.35e72.35E70.235e8235e52323字符常量的特点字符常量的特点字符常量的特点字符常量的特点 字符常量只能用字符常量只能用字符常量只能用字符常量只能用

25、单引号单引号单引号单引号括起来,不能用双引号。括起来,不能用双引号。括起来,不能用双引号。括起来,不能用双引号。 字符常量只能是字符常量只能是字符常量只能是字符常量只能是一个字符一个字符一个字符一个字符,不能是多个字符。,不能是多个字符。,不能是多个字符。,不能是多个字符。 字符可以是字符集中任意字符。但数字被定字符可以是字符集中任意字符。但数字被定字符可以是字符集中任意字符。但数字被定字符可以是字符集中任意字符。但数字被定义为字符型之后与其本身数值是不相等的。义为字符型之后与其本身数值是不相等的。义为字符型之后与其本身数值是不相等的。义为字符型之后与其本身数值是不相等的。 例如:例如:例如:

26、例如: 00和和和和00是不同的。是不同的。是不同的。是不同的。字符型数据字符型数据charn n1、字符常量、字符常量在在在在C C语言中字符型常量是用语言中字符型常量是用语言中字符型常量是用语言中字符型常量是用单引号单引号单引号单引号括起来的括起来的括起来的括起来的单单单单个字符个字符个字符个字符 例如:例如:例如:例如: AA、bb、00、+等。等。等。等。2424n n2、字符数据的存储、字符数据的存储个字节个字节个字节个字节存储一个字符数据存储一个字符数据存储一个字符数据存储一个字符数据字节中存储的是字符的字节中存储的是字符的字节中存储的是字符的字节中存储的是字符的ASCIIASCI

27、I码码码码 如:字符如:字符如:字符如:字符AA0 1 0 0 0 0 0 1A652525n n3、字符数据的运算、字符数据的运算“ “+ +” ”、“ “- -” ”和和和和比较比较比较比较运算。运算。运算。运算。注意:注意:注意:注意:+ +、- -运算相当于为字符的运算相当于为字符的运算相当于为字符的运算相当于为字符的ASCIIASCII码码码码加上加上加上加上或减去一个整数值或减去一个整数值或减去一个整数值或减去一个整数值,但运算后的值仍然在,但运算后的值仍然在,但运算后的值仍然在,但运算后的值仍然在ASCIIASCII码值的表示区间内运算才有意义。码值的表示区间内运算才有意义。码值

28、的表示区间内运算才有意义。码值的表示区间内运算才有意义。2626【例例例例2-22-2】字符变量赋值与输出字符变量赋值与输出字符变量赋值与输出字符变量赋值与输出# #includeincludevoidvoidmain()main() charcharc;c;/*/*声明字符型变量声明字符型变量声明字符型变量声明字符型变量c*/c*/intintx;x;/*/*声明整型变量声明整型变量声明整型变量声明整型变量x*/x*/c=97;c=97;/*97/*97是是是是 aa的的的的ASCIIASCII码码码码*/ /x=b;x=b;printf(%c,%dn,c,c);printf(%c,%dn,

29、c,c);printf(%d,%cn,x,x);printf(%d,%cn,x,x); a,9798,bPressanykeytocontinue声明字符变量声明字符变量声明字符变量声明字符变量字符变量赋值字符变量赋值字符变量赋值字符变量赋值输出字符变量的值输出字符变量的值输出字符变量的值输出字符变量的值2727【例例例例2-32-3】 在键盘上输入一个小写字符,将其转换在键盘上输入一个小写字符,将其转换在键盘上输入一个小写字符,将其转换在键盘上输入一个小写字符,将其转换成大写字符后输出成大写字符后输出成大写字符后输出成大写字符后输出# #includeincludevoidvoidmain(

30、)main() charcharc;c;c=getchar();c=getchar();c=c-32;c=c-32;putchar(c);putchar(c);putchar(n);putchar(n);aAPressanykeytocontinue在键盘上输入一个在键盘上输入一个在键盘上输入一个在键盘上输入一个字符赋给变量字符赋给变量字符赋给变量字符赋给变量cc输出变量输出变量输出变量输出变量c c中存储的中存储的中存储的中存储的字符字符字符字符 aa zz的的的的ASCIIASCII码码码码为:为:为:为:9797 122122AA ZZ的的的的ASCIIASCII码码码码为:为:为:为:

31、659065902828C语句语句n n语句分类语句分类语句分类语句分类 表达式语句表达式语句表达式语句表达式语句 各种表达式所构成的语句各种表达式所构成的语句各种表达式所构成的语句各种表达式所构成的语句, ,一般形式为:一般形式为:一般形式为:一般形式为:表达式表达式表达式表达式; ; 函数调用语句函数调用语句函数调用语句函数调用语句 一般形式为:一般形式为:一般形式为:一般形式为:函数名函数名函数名函数名( (实际参数表实际参数表实际参数表实际参数表);); 控制语句控制语句控制语句控制语句 选择语句、循环语句、转移语句选择语句、循环语句、转移语句选择语句、循环语句、转移语句选择语句、循环

32、语句、转移语句 复合语句复合语句复合语句复合语句 以一对以一对以一对以一对括起来的语句序列括起来的语句序列括起来的语句序列括起来的语句序列 空语句空语句空语句空语句 由一个由一个由一个由一个;单独构成的语句单独构成的语句单独构成的语句单独构成的语句2929格式:格式:格式:格式:printf(printf(printf(printf(格式控制字符串格式控制字符串格式控制字符串格式控制字符串, , , , 输出表列输出表列输出表列输出表列) ) ) )功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据返回值:正常,返回

33、输出字节数;出错,返回返回值:正常,返回输出字节数;出错,返回返回值:正常,返回输出字节数;出错,返回返回值:正常,返回输出字节数;出错,返回EOF(-1)EOF(-1)EOF(-1)EOF(-1)2.5 C语言的格式输出语言的格式输出printf函数函数n n格式输出函数格式输出函数格式字符串为:格式字符串为:格式字符串为:格式字符串为:% % % % 标志标志标志标志输出最小宽度输出最小宽度输出最小宽度输出最小宽度.精度精度精度精度长度长度长度长度 类型类型类型类型30301、类型、类型格式字符格式字符格式字符格式字符 意义意义意义意义d d以十以十以十以十进进制形式制形式制形式制形式输输

34、出出出出带带符号整数符号整数符号整数符号整数( (正数不正数不正数不正数不输输出符号出符号出符号出符号) )o o以八以八以八以八进进制形式制形式制形式制形式输输出无符号整数出无符号整数出无符号整数出无符号整数( (不不不不输输出前出前出前出前缀缀0)0)x x,X,X以十六以十六以十六以十六进进制形式制形式制形式制形式输输出无符号整数出无符号整数出无符号整数出无符号整数( (不不不不输输出前出前出前出前缀缀Ox)Ox)u u以十以十以十以十进进制形式制形式制形式制形式输输出无符号整数出无符号整数出无符号整数出无符号整数f f以小数形式以小数形式以小数形式以小数形式输输出出出出单单、双精度、双

35、精度、双精度、双精度实实数数数数e e,E,E以指数形式以指数形式以指数形式以指数形式输输出出出出单单、双精度、双精度、双精度、双精度实实数数数数g g,G,G以以以以%f%f或或或或%e%e中中中中较较短的短的短的短的输输出出出出宽宽度度度度输输出出出出单单、双精度、双精度、双精度、双精度实实数数数数c c输输出出出出单单个字符个字符个字符个字符s s输输出字符串出字符串出字符串出字符串inta=123;printf(%d,a);inta=123;printf(%d,a);123123inta=65;printf(%o,a);inta=65;printf(%o,a);inta=-10;pri

36、ntf(%x,a);inta=-10;printf(%x,a);floata=567.789;printf(%e,a);floata=567.789;printf(%e,a);floata=567.789;printf(%f,a);floata=567.789;printf(%f,a);floata=567.789;printf(%g,a);floata=567.789;printf(%g,a);chara=65;printf(%c,a);chara=65;printf(%c,a);chark=ABC;printf(%s,k);chark=ABC;printf(%s,k);fffffff6ff

37、fffff6101101e+02e+021 1A AABCABC1 11 11 11 11 11 11 11 1 1 11 11 11 10 01 11 10 01 11 11 11 11 11 11 11 1 1 11 11 11 11 11 11 11 131312. 标志标志n n标志字符为标志字符为标志字符为标志字符为- -、+ +、# #、空格四种、空格四种、空格四种、空格四种标志标志标志标志 意义意义意义意义- -结结果左果左果左果左对齐对齐,右,右,右,右边边填空格填空格填空格填空格+ +输输出符号(正号或出符号(正号或出符号(正号或出符号(正号或负负号)号)号)号)空格空格空格

38、空格负时输负时输出,正号不出,正号不出,正号不出,正号不输输出出出出# #对对c,s,d,uc,s,d,u类类无影响;无影响;无影响;无影响;对对o o类类, ,在在在在输输出出出出时时加前加前加前加前缀缀o o;对对x x类类, ,在在在在输输出出出出时时加前加前加前加前缀缀0x0x;对对e,g,fe,g,f类类当当当当结结果有小数果有小数果有小数果有小数时时才才才才给给出小数点出小数点出小数点出小数点%标志标志标志标志输出最小宽度输出最小宽度输出最小宽度输出最小宽度.精度精度精度精度长度长度长度长度 类型类型类型类型3232修饰符修饰符修饰符修饰符功功功功 能能能能输输出最小出最小出最小出

39、最小宽宽度度度度输输出数据域出数据域出数据域出数据域宽宽, ,若若若若实际实际数据数据数据数据长长度度度度m,m,左左左左补补空格空格空格空格; ;否否否否则则按按按按实际输实际输出出出出. .精度精度精度精度对实对实数数数数, ,指定小数点后位数指定小数点后位数指定小数点后位数指定小数点后位数( (四舍五入四舍五入四舍五入四舍五入) )对对字符串字符串字符串字符串, ,指定指定指定指定实际输实际输出位数出位数出位数出位数长长度度度度h h表示按短整型量表示按短整型量表示按短整型量表示按短整型量输输出出出出l l表示按表示按表示按表示按长长整型量整型量整型量整型量输输出出出出%标志标志标志标志

40、 输出最小宽度输出最小宽度输出最小宽度输出最小宽度.精度精度精度精度长度长度长度长度 类型类型类型类型3333【例例2-4】格式符与输出项匹配实例格式符与输出项匹配实例# #includeincludevoidvoidmain()main() intinta=97;a=97;floatfloatb=56.748;b=56.748;printf(a=%d,b=%fnprintf(a=%d,b=%fn ,a,b);,a,b);printf(%c,%d,%o,%x,%fn,a,a,a,a,a);printf(%c,%d,%o,%x,%fn,a,a,a,a,a);printf(%f,%e,%d,%o,

41、%xn,b,b,b,b,b);printf(%f,%e,%d,%o,%xn,b,b,b,b,b); 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1aa97973434【例例2-5】输出宽度与精度实例输出宽度与精度实例#include#includevoidmain()voidmain()inta=66;inta=66;floatb=122.1234567;floatb=122.1234567;doublec=1234567890.1234567;doublec=1234567890.1234567;printf(a=%d,%-5d,%5d,%5cn,a,a,a,a);print

42、f(a=%d,%-5d,%5d,%5cn,a,a,a,a);printf(b=%f,%lf,%5.4f,%.4e,%10.2fn,b,b,b,printf(b=%f,%lf,%5.4f,%.4e,%10.2fn,b,b,b,b,b);b,b);printf(c=%lf,%f,%8.4lfn,c,c,c);printf(c=%lf,%f,%8.4lfn,c,c,c); a=66,66,66,Bb=122.123459,122.123459,122.1235,1.2212e+002,3535注意注意n n1 1、C C语言编译器不会检测格式符与输出项的数量语言编译器不会检测格式符与输出项的数量语言

43、编译器不会检测格式符与输出项的数量语言编译器不会检测格式符与输出项的数量是否相匹配是否相匹配是否相匹配是否相匹配 若输出项多于格式符,若输出项多于格式符,若输出项多于格式符,若输出项多于格式符,printfprintf函数则正确的显示前面函数则正确的显示前面函数则正确的显示前面函数则正确的显示前面匹配的输出项,后面多余的不输出。匹配的输出项,后面多余的不输出。匹配的输出项,后面多余的不输出。匹配的输出项,后面多余的不输出。 例如例如例如例如printf(%d,iprintf(%d,i,j);j); 若输出项少于格式符,若输出项少于格式符,若输出项少于格式符,若输出项少于格式符,printfpr

44、intf函数则正确的显示匹配函数则正确的显示匹配函数则正确的显示匹配函数则正确的显示匹配的输出项,后面多余的格式符因为没有匹配的输出项,的输出项,后面多余的格式符因为没有匹配的输出项,的输出项,后面多余的格式符因为没有匹配的输出项,的输出项,后面多余的格式符因为没有匹配的输出项,将输出没有任何意义的随机数。将输出没有任何意义的随机数。将输出没有任何意义的随机数。将输出没有任何意义的随机数。 例如例如例如例如printf(%d,%d,i);printf(%d,%d,i);n n2、float和和double的输出的输出%f、%lf相同相同3636格式:格式:格式:格式:scanscanscans

45、canf(f(f(f(“ “格式控制字符串格式控制字符串格式控制字符串格式控制字符串” ”, , , , 地址地址地址地址表列表列表列表列) ) ) )功能:按功能:按功能:按功能:按用户用户用户用户指定指定指定指定的的的的格式格式格式格式从键盘上把数据输入到指定变量中从键盘上把数据输入到指定变量中从键盘上把数据输入到指定变量中从键盘上把数据输入到指定变量中2.6 C语言的格式输入语言的格式输入scanf函数函数n n格式输入函数格式输入函数37371. 缺省的分隔符在键盘上输入数据时,数据之间用一个或多在键盘上输入数据时,数据之间用一个或多个个空格、空格、TabTab和回车和回车来分割。来分

46、割。3838【例例2-62-6】格式符与输入变量匹配实例格式符与输入变量匹配实例# #includeincludevoidvoidmain()main() intinta,b,c;a,b,c;printf(inputa,b,cn);printf(inputa,b,cn);scanf(%d%d%d,scanf(%d%d%d,& &a,a,& &b,b,& &c);c);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c);inputa,b,c258a=2,b=5,c=8Pressanykeytocontinueinputa,b,c

47、258a=2,b=5,c=8Pressanykeytocontinueinputa,b,c258a=2,b=5,c=8Pressanykeytocontinueinputa,b,c2,5,8a=2,b=-858993460,c=-858993460Pressanykeytocontinue39392. 格式字符串中的普通字符格式字符串中的普通字符n n空格空格当在格式控制字符串遇到一个或多个空格时,当在格式控制字符串遇到一个或多个空格时,当在格式控制字符串遇到一个或多个空格时,当在格式控制字符串遇到一个或多个空格时,scanfscanf函数从输入数据中重复读空白字符直到函数从输入数据中重复读空

48、白字符直到函数从输入数据中重复读空白字符直到函数从输入数据中重复读空白字符直到遇到一个非空字符为止。遇到一个非空字符为止。遇到一个非空字符为止。遇到一个非空字符为止。n n其它字符其它字符当在格式控制字符串中遇到一个非空字符时,当在格式控制字符串中遇到一个非空字符时,当在格式控制字符串中遇到一个非空字符时,当在格式控制字符串中遇到一个非空字符时,scanfscanf函数将它与输入字符进行比较,若两个函数将它与输入字符进行比较,若两个函数将它与输入字符进行比较,若两个函数将它与输入字符进行比较,若两个字符相等,继续下一个输入,否则终止字符相等,继续下一个输入,否则终止字符相等,继续下一个输入,否

49、则终止字符相等,继续下一个输入,否则终止scanfscanf函数的执行。函数的执行。函数的执行。函数的执行。4040【例例2-7】其它分隔符实例其它分隔符实例#include#includevoidmain()voidmain() inta,b,c;inta,b,c;printf(inputa,b,cn);printf(inputa,b,cn);scanf(%d,%d,%d,&a,&b,&c);scanf(%d,%d,%d,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c); inputa,b,c2,6,4

50、a=2,b=6,c=4Pressanykeytocontinueinputa,b,c264a=2,b=-858993460,c=-858993460Pressanykeytocontinue41413. 格式字符串格式字符串n n格式字符串一般形式:格式字符串一般形式:格式字符串一般形式:格式字符串一般形式:%*%*%*%*输入数据宽度输入数据宽度输入数据宽度输入数据宽度 类型类型类型类型(1 1)类型)类型)类型)类型格式字符格式字符格式字符格式字符 意义意义意义意义d d输输入十入十入十入十进进制整数制整数制整数制整数o o输输入八入八入八入八进进制整数制整数制整数制整数x x输输入十六入

51、十六入十六入十六进进制整数制整数制整数制整数u u输输入无符号十入无符号十入无符号十入无符号十进进制整数制整数制整数制整数f f或或或或e e输输入入入入实实型数型数型数型数( (用小数形式或指数形式用小数形式或指数形式用小数形式或指数形式用小数形式或指数形式) )c c输输入入入入单单个字符个字符个字符个字符s s输输入字符串入字符串入字符串入字符串4242(2 2)* * 用以表示该输入项读入后不赋予相应的变量,即跳过用以表示该输入项读入后不赋予相应的变量,即跳过用以表示该输入项读入后不赋予相应的变量,即跳过用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。该输入值。该输入值。该输入

52、值。 例如例如例如例如:scanf(%dscanf(%d%*d%*d%d,&a,&b);%d,&a,&b); 当输入为:当输入为:当输入为:当输入为:123123时,把时,把时,把时,把1 1赋予赋予赋予赋予a a,2 2被跳过,被跳过,被跳过,被跳过,3 3赋予赋予赋予赋予b b。(3 3)宽度宽度宽度宽度 例如例如例如例如:scanf(scanf(%2d%3d%2d%3d,&a,&b);,&a,&b); 输入:输入:输入:输入:1234567812345678 将把将把将把将把1212赋予赋予赋予赋予a a,而把,而把,而把,而把345345赋予赋予赋予赋予b b,其余的字符无效,所,其余

53、的字符无效,所,其余的字符无效,所,其余的字符无效,所以输入后以输入后以输入后以输入后a=12a=12,b=345b=345。 43434.字符变量的输入字符变量的输入n n在输入字符数据时,若格式控制串中无非在输入字符数据时,若格式控制串中无非格式字符格式字符(只有只有%c),则认为所有输入的字,则认为所有输入的字符均为有效字符。符均为有效字符。例如例如例如例如:scanf(%c%c%c,&a,&b,&c);scanf(%c%c%c,&a,&b,&c); 输入:输入:输入:输入:defdef则把则把则把则把dd赋予赋予赋予赋予a,a,赋予赋予赋予赋予b,eb,e赋予赋予赋予赋予cc。 输入为

54、:输入为:输入为:输入为:defdef则把则把则把则把dd赋于赋于赋于赋于a,ea,e赋予赋予赋予赋予b,fb,f赋予赋予赋予赋予cc。4444n nscanfscanf函数中没有精度控制函数中没有精度控制函数中没有精度控制函数中没有精度控制, ,即没有即没有即没有即没有. .n nscanfscanf中要求给出变量地址中要求给出变量地址中要求给出变量地址中要求给出变量地址& &n n若格式控制串中没有非格式字符作为输入数据若格式控制串中没有非格式字符作为输入数据若格式控制串中没有非格式字符作为输入数据若格式控制串中没有非格式字符作为输入数据之间的间隔,则可用之间的间隔,则可用之间的间隔,则可

55、用之间的间隔,则可用空格、空格、空格、空格、TABTABTABTAB或回车或回车或回车或回车作为间作为间作为间作为间隔隔隔隔n n在输入字符数据时,若格式控制串中无非格式在输入字符数据时,若格式控制串中无非格式在输入字符数据时,若格式控制串中无非格式在输入字符数据时,若格式控制串中无非格式字符字符字符字符( (只有只有只有只有%c)%c),则认为所有输入的字符均为,则认为所有输入的字符均为,则认为所有输入的字符均为,则认为所有输入的字符均为有效字符有效字符有效字符有效字符注意注意如:如:如:如:scanf(“%5.2f”,&a);scanf(“%5.2f”,&a);是非法的。是非法的。是非法的

56、。是非法的。4545n n在使用在使用在使用在使用doubledouble型数据输入时,一定要注意格型数据输入时,一定要注意格型数据输入时,一定要注意格型数据输入时,一定要注意格式控制说明是式控制说明是式控制说明是式控制说明是%lf%lf,如果写成,如果写成,如果写成,如果写成%f%f,那么将导,那么将导,那么将导,那么将导致输入错误。致输入错误。致输入错误。致输入错误。注意注意4646C程序的书写格式程序的书写格式 一行可以写多个语句,一行可以写多个语句,一行可以写多个语句,一行可以写多个语句,一个语句可以分写在多行上一个语句可以分写在多行上一个语句可以分写在多行上一个语句可以分写在多行上,

57、但某些部分不能随意断行但某些部分不能随意断行但某些部分不能随意断行但某些部分不能随意断行 字符串、标识符、数据不能断字符串、标识符、数据不能断字符串、标识符、数据不能断字符串、标识符、数据不能断 常用常用常用常用锯齿形锯齿形锯齿形锯齿形书写格式书写格式书写格式书写格式 有恰当的注释有恰当的注释有恰当的注释有恰当的注释 程序中的逗号、分号、单引号和双引号等符号,一程序中的逗号、分号、单引号和双引号等符号,一程序中的逗号、分号、单引号和双引号等符号,一程序中的逗号、分号、单引号和双引号等符号,一定在英文输入状态下输入定在英文输入状态下输入定在英文输入状态下输入定在英文输入状态下输入4747优秀程序

58、员的素质之一优秀程序员的素质之一n n采用层次书写,按功能缩进采用层次书写,按功能缩进采用层次书写,按功能缩进采用层次书写,按功能缩进n n要对齐,每个括号一行要对齐,每个括号一行要对齐,每个括号一行要对齐,每个括号一行n n一行只写一个语句一行只写一个语句一行只写一个语句一行只写一个语句n n有恰当的注释有恰当的注释有恰当的注释有恰当的注释n n有合适的空行和空格有合适的空行和空格有合适的空行和空格有合适的空行和空格/* /* /* /* 程序举例程序举例程序举例程序举例 * * * */ / / /main()inti, j, sum;sum=0;for(i=1; i10; i+)for(j=1; j10; j+)sum+=i*j;printf(“%dn”,sum);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号