第二讲 数据对象与计算_第1页
第二讲 数据对象与计算_第2页
第二讲 数据对象与计算_第3页
第二讲 数据对象与计算_第4页
第二讲 数据对象与计算_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计第二讲 数据对象与计算(4学时) 万波计算机学院西安电子科技大学计算机学院西安电子科技大学计算机学院2一个温度转换的问题一个温度转换的问题已知华氏温度已知华氏温度( (用用f表示)到摄氏温度(用表示)到摄氏温度(用c表示)的转换公式为:表示)的转换公式为:c = 5/9 (f-32), ,写一个程序将输入的华氏温度转换为摄氏写一个程序将输入的华氏温度转换为摄氏温度,输出结果保留两位小数温度,输出结果保留两位小数1. 已知(输入):华氏温度f2. 计算过程:c = 5/9 (f-32)3. 结果(输出):输出摄氏温度c西安电子科技大学计算机学院西安电子科技大学计算机学院3问题转换为

2、程序问题转换为程序需要解决的问题需要解决的问题1. c1. c和和f f在程序中用什么在程序中用什么名字名字表示(标识符问表示(标识符问题)?题)?2. c2. c和和f f在程序中用什么在程序中用什么数据类型数据类型表示?表示?3. c3. c和和f f的值如何给定?(的值如何给定?(输入输入和和赋值赋值问题)问题)4. 4. 数学表达式数学表达式c = 5/9 (f-32) 在在C程序中程序中如如何表示及计算(何表示及计算(C C语言语言表达式、运算符表达式、运算符、优先优先级级)?)?5. 5. 如何如何输出输出c c的值?(的值?(输出、精度控制输出、精度控制)西安电子科技大学计算机学

3、院西安电子科技大学计算机学院4目标目标用用C C语言程序解决简单计算问题语言程序解决简单计算问题掌握数据对象的表示方法掌握数据对象的表示方法掌握掌握C C语言表达式的写法语言表达式的写法掌握掌握C C语言输入语言输入/ /输出方法输出方法西安电子科技大学计算机学院西安电子科技大学计算机学院5主要内容主要内容数据对象表示数据对象表示2.1 2.1 基本字符、标识符、关键字基本字符、标识符、关键字2.2 2.2 数据、类型、变量数据、类型、变量计算过程计算过程2.3 2.3 运算符、表达式与计算运算符、表达式与计算用户交互用户交互2.4 2.4 结果输出与数据输入结果输出与数据输入小结小结西安电子

4、科技大学计算机学院西安电子科技大学计算机学院62.1 2.1 基本字符、标识符、关键字基本字符、标识符、关键字解决数据对象命名问题解决数据对象命名问题在在C C语言中可以使用哪些字符?语言中可以使用哪些字符?在在C C语言中给对象命名要遵循哪些规则?语言中给对象命名要遵循哪些规则?是否符合命名规则的名字都可以使用?是否符合命名规则的名字都可以使用?西安电子科技大学计算机学院西安电子科技大学计算机学院7基本字符基本字符数字字符:数字字符:0 09 9大小写拉丁字母:大小写拉丁字母:a az z,A AZ Z;其他一些可打印(可以显示)的字符,包括:其他一些可打印(可以显示)的字符,包括: !%&

5、amp;!%&* *()_-+= :;, . ? / | ()_-+= :;, . ? / | 特殊字符,如空格符、换行符、制表符等特殊字符,如空格符、换行符、制表符等1.在注释中可以使用在注释中可以使用2.在双引号内可以使用在双引号内可以使用中文字符能中文字符能否使用?否使用?西安电子科技大学计算机学院西安电子科技大学计算机学院8对象命名规则对象命名规则程序中一个程序中一个程序对象的名字称为的名字称为标识符标识符,该名字必须满足以下规则该名字必须满足以下规则由由字母、数字和下划线(_)构成的一个构成的一个连续序列,不能有空白字符(键盘上的空格键、序列,不能有空白字符(键盘上的空格键、

6、TABTAB键)键)第一个字符必须是字母或下划线第一个字符必须是字母或下划线_(注意下划线_与横线-的区别)区别大小写:区别大小写:NAMENAME和和namename是不同的标识符是不同的标识符西安电子科技大学计算机学院西安电子科技大学计算机学院9标识符示例标识符示例标识符标识符合法性合法性abcdA_great_machineBeijingkey map3set_f2048:ab4C_Programming合法合法合法合法合法不合法不合法不合法西安电子科技大学计算机学院西安电子科技大学计算机学院10标识符命名惯例标识符命名惯例尽量使用有意义的单词尽量使用有意义的单词第一个字符尽量不使用下划

7、线第一个字符尽量不使用下划线标识符由多个单词构成时可以每个单词首标识符由多个单词构成时可以每个单词首字母大写字母大写标识符不宜太长,可以适当使用简写标识符不宜太长,可以适当使用简写保持命名风格的一致性保持命名风格的一致性几种常见命名规则几种常见命名规则驼峰命名法(Camel)混合使用大小写字母来构成变量和函数的名字例如:MyData匈牙利命名法(Hungarian)在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等例如:iMyData帕斯卡(Pascal)命名法: 与骆驼命名法类似只不过骆驼命名法是首字母大写,而帕斯卡命名法是首字母小写例如:myData西安电子科技大

8、学计算机学院西安电子科技大学计算机学院11西安电子科技大学计算机学院西安电子科技大学计算机学院12关键字关键字C C语言合法标识符中的一个特殊的小集合语言合法标识符中的一个特殊的小集合作为关键字的标识符在程序里具有语言预作为关键字的标识符在程序里具有语言预先定义好的特殊意义,不能用于其他目的先定义好的特殊意义,不能用于其他目的不能作为普通的名字(标识符)使用不能作为普通的名字(标识符)使用西安电子科技大学计算机学院西安电子科技大学计算机学院13C C语言的语言的3232个关键字个关键字auto break case charconst continue default dodouble els

9、e enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while西安电子科技大学计算机学院西安电子科技大学计算机学院14问题转换为程序问题转换为程序需要解决的问题需要解决的问题1. 1. 摄氏温度摄氏温度c c和华氏温度和华氏温度f f在程序中用什么在程序中用什么名字表示(表示(标识符问题)?)?可以就用可以就用c c表示摄氏度,表示摄氏度,f f表示华氏度表示华氏度问题转换为程序(版本问题

10、转换为程序(版本0 0)下面的程序正确吗?下面的程序正确吗?西安电子科技大学计算机学院西安电子科技大学计算机学院15int main() f=20; c=5/9*(f-32); return 0; 如何才能让C语言编译器识别c和f?Error f undeclaredError c undeclared 西安电子科技大学计算机学院西安电子科技大学计算机学院162.2 2.2 数据、类型、变量数据、类型、变量解决数据对象的存储和表示问题解决数据对象的存储和表示问题计算机对不同的数据类型有不同的存储和表计算机对不同的数据类型有不同的存储和表示方法示方法计算机能够表示的数值范围总是有限的计算机能够表

11、示的数值范围总是有限的 5.0和5在数学上是相同的,但在计算机内部表示上是不同的 2356.4359是一个有限小数,但在计算机上表示时可能不够准确西安电子科技大学计算机学院西安电子科技大学计算机学院17数据与类型数据与类型C C语言的基本数据类型包括语言的基本数据类型包括整数类型整数类型实数类型实数类型字符类型字符类型程序中的每一个数据都必定属于某一种类型程序中的每一个数据都必定属于某一种类型(基本类型或自定义类型)每一种数据类型都有每一种数据类型都有表示方式(编码)和(编码)和表示范围数据类型确定了数据类型确定了数据对象支持的运算西安电子科技大学计算机学院西安电子科技大学计算机学院18整数类

12、型和整数的表示整数类型和整数的表示三种整数类型三种整数类型长整数长整数 long int 可以简写为可以简写为 long普通整数普通整数 int短整数短整数 short int 可以简写为可以简写为 short三种整数类型表示范围三种整数类型表示范围long int short,具体范围取决于不同的实现具体范围取决于不同的实现longintshort字节数字节数442表示范围表示范围-231231-1-231231-1-215215-1西安电子科技大学计算机学院西安电子科技大学计算机学院19整数类型和整数的表示整数类型和整数的表示三种无符号整数类型三种无符号整数类型长整数长整数unsigned

13、 long int 可以简写为可以简写为 unsigned long普通整数普通整数 unsigned int短整数短整数 unsigned short int 可以简写为可以简写为 unsigned short三种整数类型表示范围三种整数类型表示范围unsigned long unsigned int unsigned shortunsigned longunsigned intunsigned short字节数字节数442表示范围表示范围0232-10232-10216-1西安电子科技大学计算机学院西安电子科技大学计算机学院20整数常数的书写形式(整数常数的书写形式(int.c)十进制形式

14、十进制形式例如:例如:123456123456,123123,100100八进制形式八进制形式以以0 0开头开头例如:例如:01234560123456,01230123,01000100十六进制形式十六进制形式以以0 x0 x开头开头例如:例如:0 x1234560 x123456,0 x1230 x123,0 x1000 x100西安电子科技大学计算机学院西安电子科技大学计算机学院21整数常数的书写形式示例整数常数的书写形式示例八进制形式八进制形式十进制值十进制值012345601234564279842798012301238383010001006464十六进制形式十六进制形式十进制值

15、十进制值0 x1234560 x123456119304611930460 x1230 x1232912910 x1000 x10025625622实数类型和实数表示实数类型和实数表示三种实数类型三种实数类型单精度浮点数:单精度浮点数:float双精度浮点数:双精度浮点数:double长双精度浮点数:长双精度浮点数:long double三种实数类型的表示范围三种实数类型的表示范围( (IEEEIEEE标准标准) )字节数字节数 指数位数指数位数尾数位数尾数位数表示范围表示范围float4823-3.410383.41038double81152-1.7103083.410308long do

16、uble1615112- 1.2 1049323.4 104932浮点数表示方法浮点数表示方法任意二进制浮点数公式:任意二进制浮点数公式:N=N=M M2 2E E 其中,其中,M M为尾数(纯小数部分),整数为尾数(纯小数部分),整数E E为指数,为指数,M M与与E E都带符号。都带符号。二进制浮点数特征:二进制浮点数特征: 尾数的位数决定数的精度;尾数的位数决定数的精度; 指数的位数决定数的范围。指数的位数决定数的范围。西安电子科技大学计算机学院西安电子科技大学计算机学院23指数符号指数E尾数符号尾数M(定点整数)(定点小数)西安电子科技大学计算机学院西安电子科技大学计算机学院24实数常

17、数的书写形式实数常数的书写形式小数形式小数形式例如:例如:12000000.012000000.00.000010.00001指数形式指数形式例如:例如:1.2E7 1.2E7 1E-51E-5注意:注意:以上形式表示的实数均被当做double类型存储,如果希望以float类型存储需要在后面加上F或f例如:例如:12000000.0f 12000000.0f ,0.00001F0.00001F,1.2E7F 1.2E7F ,1E-5F1E-5FTips:在写程序时都使用double类型西安电子科技大学计算机学院西安电子科技大学计算机学院25字符类型和字符的表示字符类型和字符的表示字符数据主要用

18、于输入输出和文字处理字符数据主要用于输入输出和文字处理字符类型:字符类型:char字符类型在计算机中用字符类型在计算机中用一个字节的整数一个字节的整数存储存储 unsigned char: 0255 char: -128127每一个字符都有唯一一个对应的整数,该整每一个字符都有唯一一个对应的整数,该整数称为这个字符的数称为这个字符的ASCII码西安电子科技大学计算机学院西安电子科技大学计算机学院26ASCIIASCII码码在计算机中每一个拉丁文字字母用一个在计算机中每一个拉丁文字字母用一个0 0127127的数字表示,这个数字称为该字母的的数字表示,这个数字称为该字母的ASCIIASCII码码

19、ASCII字符集:所有大小写英文字母、数字、各字符集:所有大小写英文字母、数字、各种标点符号字符,还有一些控制字符,一共种标点符号字符,还有一些控制字符,一共128128个个西安电子科技大学计算机学院西安电子科技大学计算机学院28字符的书写形式字符的书写形式1.1.用单引号括起的单个字符用单引号括起的单个字符例如:例如:A,a,1A,a,12.2.以字符对应的以字符对应的ASCII码表示表示/a,b/a,b都表示字符都表示字符AAchar a,b;a=A;b=65;西安电子科技大学计算机学院西安电子科技大学计算机学院29字符的书写形式字符的书写形式3.3.用用转义字符转义字符表示特殊字符表示特

20、殊字符反斜线(反斜线( )开头的转义字符用来表示)开头的转义字符用来表示ASCIIASCII字符集中的特殊字符字符集中的特殊字符注意:对未定义的转义字符直接输出反斜线后的字符转义字符转义字符实际输出的字符实际输出的字符nn换行符号换行符号单引号单引号 反斜线反斜线 双引号双引号 西安电子科技大学计算机学院西安电子科技大学计算机学院30字符串字符串字符串不是字符串不是C C语言的一种数据类型语言的一种数据类型用双引号括起的一系列字符:用双引号括起的一系列字符:CHINA Beijing University WelcomenCHINA Beijing University Welcomen其本质

21、是其本质是字符数组主要用于输入输出主要用于输入输出printf( printf( Hello C Program!nHello C Program!n ); );字符串中间不能换行Hello C ProgramHello C Program西安电子科技大学计算机学院西安电子科技大学计算机学院31变量声明变量声明变量:用于存储程序的输入数据或计算结果的:用于存储程序的输入数据或计算结果的存储单元存储单元变量值在程序运行时可以改变变量声明:给存储单元定义一个:给存储单元定义一个名称及及类型,便于程序中引用便于程序中引用变量名必须是变量名必须是合法标识符合法标识符变量必须有变量必须有确定数据类型确定

22、数据类型可以在一条语句中定义可以在一条语句中定义多个同类型多个同类型变量变量可以在变量声明时赋值可以在变量声明时赋值西安电子科技大学计算机学院西安电子科技大学计算机学院32示例程序中的变量声明示例程序中的变量声明#include int main() double f=50.0;/声明存储华氏温度的变量并赋值声明存储华氏温度的变量并赋值 double c;/声明存储摄氏温度的变量声明存储摄氏温度的变量 . #include int main() double f=50.0, c;/一条语句中声明多个变量一条语句中声明多个变量 . 33变量基本操作变量基本操作赋值操作修改变量当前的值修改变量当前

23、的值方法:使用赋值表达式(方法:使用赋值表达式(由操作符“=”构成的表达式)a=a=3.53.5b=b=5+35+3取值操作获得变量现在的值获得变量现在的值方法:直接引用变量名称方法:直接引用变量名称s=s=a a+ +b bprintf(s=%dn, printf(s=%dn, s s););问题转换为程序(版本问题转换为程序(版本1 1)西安电子科技大学计算机学院西安电子科技大学计算机学院34#include int main()double f=20, c; return 0;数学运算c = 59 (f-32),如何转换成C语言表达式?C语言表达式如何计算?西安电子科技大学计算机学院西安

24、电子科技大学计算机学院352.3 2.3 运算符、表达式与计算运算符、表达式与计算解决数学运算到程序的转换问题解决数学运算到程序的转换问题数学运算符在程序中如何表示?数学运算符在程序中如何表示?数学运算的规则在程序中如何实现?数学运算的规则在程序中如何实现?西安电子科技大学计算机学院西安电子科技大学计算机学院36算术运算符算术运算符运算符运算符使用形式使用形式数学意义数学意义适用数据类型适用数据类型+ +一元或二元运算符一元或二元运算符一元表示正号,二元一元表示正号,二元表示加法表示加法所有基本数据所有基本数据类型类型- -一元或二元运算符一元或二元运算符一元表示负号,二元一元表示负号,二元表

25、示减法表示减法所有基本数据所有基本数据类型类型* *二元运算符二元运算符乘法运算乘法运算所有基本数据所有基本数据类型类型/ /二元运算符二元运算符除法运算除法运算所有基本数据所有基本数据类型类型% %二元运算符二元运算符模运算(求余数)模运算(求余数)整数类型整数类型西安电子科技大学计算机学院西安电子科技大学计算机学院37算术运算符示例(算术运算符示例(operator.coperator.c)double a=3.0,b=2.0; int c=4,d=2;表达式表达式结果结果-a-a-3.0a+ba+b5.0a-ba-b1.0a a* *b b6.0a/ba/b1.5c/dc/d2c%dc%

26、d0西安电子科技大学计算机学院西安电子科技大学计算机学院38算术表达式算术表达式由计算对象由计算对象( (例如数值的文字量、变量、例如数值的文字量、变量、函数调用等函数调用等) )、算术运算符及圆括号构成,、算术运算符及圆括号构成,基本形式与数学上的算术表达式类似基本形式与数学上的算术表达式类似-( 28 + 32 ) + (16 -( 28 + 32 ) + (16 * * 7 - 4) 7 - 4)25 25 * * (3 - 6) + 234 (3 - 6) + 234a a * * b + c / 2 b + c / 2a a * * sinsin( c ( c * * 3.1416

27、/ 180 ) 3.1416 / 180 )西安电子科技大学计算机学院西安电子科技大学计算机学院39算术表达式算术表达式数学公式数学公式C C语言语言表达式表达式b2-4ac a + b - cax-(b+c)+abcd11x2+b * b 4 * a *ca+b-c(a+b)/(c+d)1/(1+x * x)a *x -(b+c)西安电子科技大学计算机学院西安电子科技大学计算机学院40表达式求值表达式求值给定了表达式中所有变量的值以后表达式给定了表达式中所有变量的值以后表达式的值如何计算?的值如何计算?表达式的计算过程表达式的计算过程优先级不同运算符哪个先算,哪个后算?不同运算符哪个先算,哪

28、个后算?结合性相同优先级的运算符哪个先算,哪相同优先级的运算符哪个先算,哪个后算?个后算?西安电子科技大学计算机学院西安电子科技大学计算机学院41表达式求值表达式求值优先级规则优先级规则1.1.一元运算符优先级最高一元运算符优先级最高2.2.先乘除后加减先乘除后加减3.3.括号中的表达式先计算括号中的表达式先计算运算符运算符优先级优先级一元一元+ +和和- -高高* * / %/ %中中二元二元+ +和和- -低低当不确定运算符优先级时,用括号来指定运算顺序是避免错误的最好方法14-4表达式表达式值值10 / 5 + 4 * 6 / 2-(2 + 6) * 4) / (3 + 5)西安电子科技

29、大学计算机学院西安电子科技大学计算机学院42表达式求值表达式求值结合性结合性确定具有相同优先级的运算符相邻出现时表确定具有相同优先级的运算符相邻出现时表达式的计算顺序。达式的计算顺序。C C语言规定语言规定一元算术运算符算术运算符自右向左结合;结合;二元算术运算符算术运算符自左向右结合,优先级相同时结合,优先级相同时左边的运算符先计算。左边的运算符先计算。4 * 7 / 2-+-8(4 * 7) / 2(-(+(-8)148问题转换为程序问题转换为程序( (版本版本2 2)下面的程序结果正确吗?下面的程序结果正确吗?西安电子科技大学计算机学院西安电子科技大学计算机学院43int main()

30、double f=50; double c; c=5/9*(f-32); return 0; c的计算结果是多少c=10?西安电子科技大学计算机学院西安电子科技大学计算机学院44计算和类型计算和类型以上计算涉及的问题以上计算涉及的问题类型对计算的限制类型对计算的限制混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换强制(显式)类型转换强制(显式)类型转换13011.05 / 4 + 4 5 / 4 + 4 * * 6 / 2=? 6 / 2=?1 / 3 1 / 3 * * 3 = ? 3 = ?1 1 * * 3 / 3 = ? 3 / 3 = ?1/3.0 1/3.0 *

31、 * 3 = ? 3 = ?西安电子科技大学计算机学院西安电子科技大学计算机学院45计算和类型计算和类型类型对计算的限制类型对计算的限制1.1.两个相同类型数据使用二元运算符计算得两个相同类型数据使用二元运算符计算得到的结果类型相同。到的结果类型相同。例如,两个整数运算结例如,两个整数运算结果仍然是整数果仍然是整数1 + 24/21 + 121 / 3 * 3 5 / 4 + 4 * 6 / 20 * 3 130西安电子科技大学计算机学院西安电子科技大学计算机学院46计算和类型计算和类型类型对计算的限制类型对计算的限制2.2.计算结果超出类型表示范围会导致计算结果超出类型表示范围会导致 溢出溢

32、出 ( (overflow.coverflow.c) )#include int main()short a=32765, b=5;short c = a+b; / c=?printf(c=%dn,c); return 0;西安电子科技大学计算机学院西安电子科技大学计算机学院47计算和类型计算和类型混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换两个不同类型数据使用二元运算符形成混合类型计算两个不同类型数据使用二元运算符形成混合类型计算C C语言里混合类型计算的方法是语言里混合类型计算的方法是将混合类型计算中的将混合类型计算中的某个运算对算转换为另一个运算对象的类型再计算某

33、个运算对算转换为另一个运算对象的类型再计算转换原则是转换原则是将表示范围小的类型转换为表示范围大的将表示范围小的类型转换为表示范围大的类型以避免丢失精度类型以避免丢失精度表示范围表示范围小小 大大类型类型shortshort intintlonglongfloatfloat doubledoublelong doublelong double西安电子科技大学计算机学院西安电子科技大学计算机学院48计算和类型计算和类型混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换2 + 3 2 + 3 * * 4.5 = 15.5 4.5 = 15.5234.53.0*13.52.0+15

34、.5自动类型转换自动类型转换西安电子科技大学计算机学院西安电子科技大学计算机学院49计算和类型计算和类型强制(显式)类型转换强制(显式)类型转换任何类型均可相互转换,任何类型均可相互转换,但转换可能丢失精度但转换可能丢失精度转换方式:转换方式:( (类型名类型名) ) 表达式表达式强制类型转换是一元运算符,其优先级和其他一元强制类型转换是一元运算符,其优先级和其他一元运算符相同运算符相同( (高于二元运算符高于二元运算符) ) (int)3.3 (int)3.3 * * 2.2 2.2 + 4 = + 4 = (int)(3.3 (int)(3.3 * * 2.2) 2.2) + 4 =+ 4

35、 =类型转换不改变原来的值类型转换不改变原来的值 float a=3.3;float a=3.3; int b=(int)a; /int b=(int)a; /不改变不改变a a的值的值3 * 2.2 + 4 = 10.6(int)(7.26) + 4 = 7 + 4 = 11西安电子科技大学计算机学院西安电子科技大学计算机学院50计算和类型计算和类型整数转浮点数不存在整数转浮点数不存在精度问题精度问题浮点数类型转换为整浮点数类型转换为整数时直接去掉小数部数时直接去掉小数部分分(int)(3.3 * 2.2) + 4 = 112.23.347*11+7.26强强制制类类型型转转换换西安电子科技

36、大学计算机学院西安电子科技大学计算机学院51问题转换为程序(版本问题转换为程序(版本3 3)#include int main() double f=50.0;/存储华氏温度的变量存储华氏温度的变量 double c;/存储摄氏温度的变量存储摄氏温度的变量 c=5.0/9.0*(f-32);/计算摄氏温度计算摄氏温度 return 0; 西安电子科技大学计算机学院西安电子科技大学计算机学院522.4 2.4 结果输出与数据输入结果输出与数据输入解决程序与用户交互的问题解决程序与用户交互的问题如何将计算结果展现给用户?如何将计算结果展现给用户?如何让用户输入需要的数据?如何让用户输入需要的数据?

37、西安电子科技大学计算机学院西安电子科技大学计算机学院53输出计算结果输出计算结果格式化输出函数格式化输出函数printfprintfC C语言标准库函数语言标准库函数调用形式:调用形式:printf( printf( 格式字符串, 其他参数););控制输出格式控制输出格式 输出类型输出类型 输出精度输出精度 对齐方式对齐方式准备输出的值准备输出的值 0 0个或多个个或多个 所有基本类型变量或常量所有基本类型变量或常量 表达式或其他函数调用结果表达式或其他函数调用结果西安电子科技大学计算机学院西安电子科技大学计算机学院54输出计算结果输出计算结果printfprintf函数的格式字符串函数的格式

38、字符串双引号括起来的字符串,其中包括:双引号括起来的字符串,其中包括: 格式字符:用用% %引导格式字符,控制输出格式引导格式字符,控制输出格式 转义字符:按转义后的含义输出按转义后的含义输出 其他字符:直接输出直接输出格式字符串格式字符串输出结果输出结果first programfirst programfirst programfirst programfirstfirstnnprogramprogramfirstfirstprogramprogram西安电子科技大学计算机学院西安电子科技大学计算机学院55输出计算结果输出计算结果用于输出整数的格式字符用于输出整数的格式字符%d%d - -

39、 以十进制输出以十进制输出带符号整数%o%o - - 以八进制输出以八进制输出无符号整数%x%x - - 以十六进制以十六进制输出输出无符号整数int a=256,b=-180;格式字符串格式字符串输出结果输出结果a= %d, b= %da= 256, b= -180a= %xa= 100a= %oa= 400西安电子科技大学计算机学院西安电子科技大学计算机学院56输出计算结果输出计算结果用于输出浮点数的格式字符用于输出浮点数的格式字符%f%f - - 以小数形式输出以小数形式输出float/doublefloat/double型浮点数型浮点数%e%e - - 以指数形式输出以指数形式输出fl

40、oat/doublefloat/double型浮点数型浮点数以上两种形式默认小数点后输出以上两种形式默认小数点后输出6 6位有效数字位有效数字double c=1234.567; float d=2356.4359f;格式字符串格式字符串输出结果输出结果c=%f, d=%fc=1234.567000, d=2356.435791c=%e, d=%ec=1.234567e+003, d=2.356436e+003西安电子科技大学计算机学院西安电子科技大学计算机学院57输出计算结果输出计算结果输出浮点数的精度(小数位数)控制输出浮点数的精度(小数位数)控制%.%.n nf nf n为整数,表示保留

41、几位小数为整数,表示保留几位小数位数不足时位数不足时末尾补零末尾补零位数超出时位数超出时四舍五入进位四舍五入进位double c=1234.567; float d=2356.4359f;格式字符串格式字符串输出结果输出结果c=%.4fc=1234.5670d=%.3fd=2356.436西安电子科技大学计算机学院西安电子科技大学计算机学院58输出计算结果输出计算结果用于输出字符和字符串的格式字符用于输出字符和字符串的格式字符%c%c - - 输出一个字符输出一个字符%s%s - - 输出一个字符串输出一个字符串char *s=c programming; char ch1=A,ch2=a;格

42、式字符串格式字符串输出结果输出结果ch1=%c, ch2=%cch1=A, ch2=ach1=%d, ch2=%dch1=65, ch2=97I love %s !I love c programming !西安电子科技大学计算机学院西安电子科技大学计算机学院59输出计算结果输出计算结果使用使用printfprintf需要注意的问题需要注意的问题1.1.格式字符串中没有格式字符串中没有% %引导的格式控制字符时,不需引导的格式控制字符时,不需要其他参数,直接输出字符串内容,转义字符按转以要其他参数,直接输出字符串内容,转义字符按转以后实际意义输出后实际意义输出格式字符串格式字符串输出结果输出结

43、果first programfirst programfirst programfirst programfirstfirstnnprogramprogramfirstfirstprogramprogram西安电子科技大学计算机学院西安电子科技大学计算机学院60输出计算结果输出计算结果使用使用printfprintf需要注意的几个问题需要注意的几个问题2.2.格式字符串中有格式字符串中有% %引导的格式控制字符时,其他参引导的格式控制字符时,其他参数的数的数量以及以及类型必须和格式控制字符一致。必须和格式控制字符一致。#include int main() int a=123; double

44、b=35.8; printf(“a=%d, b=%dn, a, b); printf(a=%d, b=%fn, a ); printf(“a=%dn”, a, b ); return 0;西安电子科技大学计算机学院西安电子科技大学计算机学院61输出计算结果输出计算结果示例(示例(printf_error.cprintf_error.c)类型不一致时类型不一致时不会进行类型转换,而会将实际传入,而会将实际传入的值当作需要的类型来理解,因此可能出现非预期的值当作需要的类型来理解,因此可能出现非预期结果结果!#include int main() int a=123; double b=35.8;

45、printf(“a=%d, b=%dn, a, b); /? return 0;西安电子科技大学计算机学院西安电子科技大学计算机学院62输出计算结果输出计算结果示例(示例(printf_error.cprintf_error.c)数量不一致时数量不一致时:1.如果缺少参数,会出现如果缺少参数,会出现不可预知数据,取决于不同的编译器不可预知数据,取决于不同的编译器2.如果有多余参数,则被忽略如果有多余参数,则被忽略#include int main() int a=123; double b=35.8; printf(a=%d, b=%fn, a ); /? printf(a=%dn, a, b

46、 ); /? return 0;C99 7.19.6.1 C99 7.19.6.1 对以上问题的解释对以上问题的解释西安电子科技大学计算机学院西安电子科技大学计算机学院63The fprintf function writes output to the stream pointed to by stream, under control of the string pointed to by format that specifies how subsequent arguments are converted for output. If there are insufficient ar

47、guments for the format, the behavior is undefined. If the format is exhausted while arguments remain, the excess arguments are evaluated (as always) but are otherwise ignored. The fprintf function returns when the end of the format string is encountered通过编译选项来给出警告通过编译选项来给出警告西安电子科技大学计算机学院西安电子科技大学计算机学

48、院64西安电子科技大学计算机学院西安电子科技大学计算机学院65问题转换为程序(版本问题转换为程序(版本4 4)#include int main() double f=50.0;/存储华氏温度的变量存储华氏温度的变量 double c;/存储摄氏温度的变量存储摄氏温度的变量 c=5.0/9.0*(f-32);/计算摄氏温度计算摄氏温度 printf( c=%.2fn, c);/输出摄氏温度输出摄氏温度 return 0; 西安电子科技大学计算机学院西安电子科技大学计算机学院66如何得到用户输入如何得到用户输入温度转换程序存在的问题温度转换程序存在的问题f f是固定值,如果修改是固定值,如果修改

49、f f的值需要重新编译的值需要重新编译能否让用户输入f的值再计算?#include int main() double f=50.0; /存储华氏温度的变量存储华氏温度的变量 double c; /存储摄氏温度的变量存储摄氏温度的变量 c=5.0/9.0*(f-32); /计算摄氏温度计算摄氏温度 printf( c=%.2fn, c); /输出摄氏温度输出摄氏温度 return 0; 西安电子科技大学计算机学院西安电子科技大学计算机学院67从键盘输入数据从键盘输入数据格式化输入函数格式化输入函数scanf scanf C C语言标准库函数语言标准库函数调用形式:调用形式:scanf( sca

50、nf( 格式字符串, , 其他参数其他参数););控制输入数据格式控制输入数据格式(类型,精度等)(类型,精度等)的字符串,以的字符串,以% %引导引导接受输入值的接受输入值的变量地址变量地址(在普通变量前加取地(在普通变量前加取地址运算符址运算符& &可得到变量可得到变量地址)地址)西安电子科技大学计算机学院西安电子科技大学计算机学院68scanfscanf函数的格式字符串函数的格式字符串格式控制字符格式控制字符接受输入值的接受输入值的变量类型变量类型要求的实际输入要求的实际输入%d%dintint十进制数十进制数%ld%ldlonglong十进制数十进制数%f%ffloatfloat十进制数,可以有小数点或指十进制数,可以有小数点或指数数%lf%lfdoubledouble十进制数,可以有小数点或指十进制数,可以有小数点或指数数%c%cchar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论