C语言程序设计2完整版教学课件全书电子讲义(最新).ppt

上传人:知****量 文档编号:77247881 上传时间:2023-03-13 格式:PPT 页数:475 大小:6.69MB
返回 下载 相关 举报
C语言程序设计2完整版教学课件全书电子讲义(最新).ppt_第1页
第1页 / 共475页
C语言程序设计2完整版教学课件全书电子讲义(最新).ppt_第2页
第2页 / 共475页
点击查看更多>>
资源描述

《C语言程序设计2完整版教学课件全书电子讲义(最新).ppt》由会员分享,可在线阅读,更多相关《C语言程序设计2完整版教学课件全书电子讲义(最新).ppt(475页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C语言程序设计第一讲 程序设计与C语言(2学时)计算机学院主要内容1.1 程序设计课程目标1.2 程序设计概述1.3 C语言概述21.1 程序设计课程目标课程要求课程目标3课程要求1.学会从计算机角度思考问题2.培养学生逻辑思维能力和面向过程的程序设计方法3.能够针对非数值计算的具体问题选择合理的存储结构及构造较有效率的算法4.运用C语言编制结构清晰、可读性好的程序5.会设计测试用例,完成程序的测试,能撰写该程序的技术报告6.具备面向过程程序的独立设计及实现能力45用计算机解决问题示例某地刑侦大队对涉及6个嫌疑人的一桩疑案进行分析得到以下结论,试编一程序,将作案人找出来。1.A、B至少有1人作

2、案;2.A、E、F 3人中至少有2人参与作案;3.A D不可能是同案犯;4.B、C或同时作案,或都与本案无关:5.C、D中有且仅有1人作案;6.如果D没有参与作案,则E也不可能参与作案。课程目标61.培养逻辑思维和程序设计思想,重点培养分析问题和使用C语言进行程序设计以解决实际问题的能力。2.熟练掌握C语言基础知识、C语言程序结构、语法及函数库、简单算法和数据结构的设计方法。3.了解并初步掌握当前软件行业公认的程序设计风格和规范,增强程序可读性和易扩展性;能够熟练使用一种常用的编程工具和集成开发环境进行程序设计、编译、测试及调试。1.2 程序设计概述程序设计语言发展语言实现及开发环境78程序无

3、处不在计算机移动设备外设智能设备9什么是程序一系列遵循一定规则并能正确完成特定功能的代码或指令序列通常包括数据结构与算法两部分#includeintmain()inta=3,b=2,c=5;intd=a*b+c;printf(ab+c=%dn,d);return0;源程序源程序a.ca.c可执行程序可执行程序编译编译链接链接01100111100110程序设计语言及其发展程序设计语言一套规范的集合,主要包括该语言使用的字符集,直接和间接支持的数据类型集合、运算符集合、关键字集合、指令集合、语法规则、以及对特定构造的支持。11程序设计语言及其发展1834第一台机械式计算机(最早的程序员Ada)1

4、896最早的程序载体穿孔卡片1937“图灵机”数学模型1952MIT创建了汇编语言1953IBM研制Fortran语言1965BASIC语言出现1972贝尔实验室发明C语言20世纪80年代贝尔实验室发明C+语言1983Borland公司研制Turbo Pascal1991-Python1995Java语言诞生2002Microsoft发布.NET12程序设计语言及其发展机器语言汇编语言高级语言(C,Java,C+,C#)13高高级级语语言言编编译译问题:计算d=ab+c00000001000000001000 将单元将单元1000的数据的数据(a)装入寄存器装入寄存器0000000010001

5、00001010 将单元将单元1010的数据的数据(b)装入寄存器装入寄存器100000101000000000001 将寄存器将寄存器1的数据乘到寄存器的数据乘到寄存器0上上(axb)00000001000100001100 将单元将单元1100的数据的数据(c)装入寄存器装入寄存器100000100000000000001 将寄存器将寄存器1的数据累加到寄存器的数据累加到寄存器0上上(axb+c)00000010000000001110 将寄存器将寄存器0的数据写入内存单元的数据写入内存单元1110(d=axb+c)机器语言load 0 a 将单元将单元1000的数据的数据(a)装入寄存器

6、装入寄存器0load 1 b 将单元将单元1010的数据的数据(b)装入寄存器装入寄存器1mult 0 1 将寄存器将寄存器1的数据乘到寄存器的数据乘到寄存器0上上(axb)load 1 c 将单元将单元1100的数据的数据(c)装入寄存器装入寄存器1add 0 1 将寄存器将寄存器1的数据累加到寄存器的数据累加到寄存器0上上(axb+c)save 0 d 将寄存器将寄存器0的数据写入内存单元的数据写入内存单元1110(d=axb+c)汇编语言d=a*b+c高级语言程序设计语言热度(TIOBE Index)程序设计语言热度(TIOBE Index)16语言实现具体地实现一种语言的各种特征并支持

7、特定的编程模式的技术和工具。表现形式:编译器(Compiler)和连接器(Linker)。语言是标准的但语言实现是因厂家而异的常见C语言实现:Borland C、Microsoft C、GCC 17开发环境泛指支持软件开发的一切工具操作系统代码编辑器编译器链接器调试器18开发环境集成开发环境(IDE)将编辑器、编译器、连接器和调试器集成在一起的开发工具C/C+集成开发环境:Dev C+Code BlocksVisual C+Eclipse19命令行下需要记住编译命令不方便调试集成开发环境下操作方便,但后台仍然是以命令行方式运作V.S.1.3 C语言概述C语言简介(特点,发展等)C程序框架(主函

8、数,语句,注释等)2021C语言能做什么纯粹的C语言只能做计算和文字处理扩充了函数库的C语言几乎可以完成任何和程序控制有关的任务C语言和第三方函数库,可以完成应用程序设计,嵌入式程序设计,驱动程序设计,游戏,.22C语言简介C 语言简史演变:ALGOL 60CPL BCPL B C 1973 Dennis Ritchie&Brian Kernighan(Bell Labs.)为开发 UNIX 而设计 C 语言的标准化ANSI C 标准化委员会:1983C89和C90C99C1123C语言特点中级语言:介于高级语言与低级语言之间高级语言的结构化与模块化(高级语言基本特性)低级语言的控制性与灵活性

9、(指针,位操作)结构化顺序结构、分支结构、循环结构模块化函数、函数库可移植性虽然可在多种系统下使用,但可移植性不是非常好24第一个C程序/*hello.c:The first program author:wanbo date:2017/10/9*/#include int main()/single line comment printf(*Hello,world*n);return 0;25C源程序构成头文件包含条件编译语句宏定义说明部分全局变量函数声明其它函数主函数(main)执行部分常量/*hello.c:The first program author:wanbo date:2010

10、/10/9*/#include int main()/single line comment printf(*hello,world*n);return 0;预处理部分26一个最简单的C程序框架#include int main()return 0;在这里可以添加完成特定任务的代码这个头文件是绝大多数C程序必须包含的程序结束27main函数main函数的两种常见形式int main()return 0;int main(int argc,char*argv)return 0;命令行参数28main函数C程序中可以有多个函数但必须有且只能有一个main函数所有C程序都从main函数开始执行mai

11、n函数的名字不能改变(包括大小写)main函数由系统调用Main和main是不同的29语句和注释语句包含一个或多个表达式数值运算、函数调用等语句以英文分号(;)结束一条语句可以分成多行书写C语言使用自由格式的语法自由格式与代码风格注释多行注释用/*/来分界单行注释用/开头/*多行注释多行注释 hello.c:The first program author:wanbo date:2017/10/9*/#include int main()/单行注释单行注释 printf(*hello,world*n);return 0;30自由格式与代码风格#include int main()printf(

12、hello world);return 0;#include int main()printf(hello worldn);return 0;#include int main()printf(hello world);return 0;良好的代码风格适当的注释适当的换行适当的缩进适当的空行V.S.31建立一个可执行程序编辑(Edit)编译(Compile)链接(Link)f1.hf2.hf3.hs1.cs2.cprog.exe链接链接s1.objs2.obj编译编译编辑编辑32命令行程序和GUI程序Windows下的文件复制命令行程序和GUI程序命令行下的文件复制33命令行程序和GUI程序一

13、个C语言完成的文件复制程序(fcopy.c)34命令行才是本质逻辑,GUI只是建立在本质逻辑上的用户接口。#include#include#defineBUF_SIZE1024intmain(intargc,char*argv)FILE*fp1,*fp2;unsignedcharbufBUF_SIZE;intn;fp1=fopen(argv1,rb);fp2=fopen(argv2,wb);don=fread(buf,1,BUF_SIZE,fp1);fwrite(buf,1,n,fp2);while(n=BUF_SIZE);fclose(fp1);fclose(fp2);return0;35小

14、结重点1:了解程序设计相关概念重点2:熟悉C语言源程序框架重点3:熟悉集成开发环境的使用重点4:熟悉计算机基本操作及命令行重点5:熟悉机试系统使用36作业作业完成平台上的学习在你的开发环境中编译、运行本节中的两个程序试着修改第一个程序(hello.c)让它输出别的内容熟悉C语言源程序结构熟悉命令行用法C语言程序设计第二讲 数据对象与计算(4学时)计算机学院一个温度转换的问题一个温度转换的问题已知华氏温度已知华氏温度(用用f表示)到摄氏温度(用表示)到摄氏温度(用c表示)的转换公式为:表示)的转换公式为:c=5/9 (f-32),写一个程序将输入的华氏温度转换为摄氏写一个程序将输入的华氏温度转换

15、为摄氏温度,输出结果保留两位小数温度,输出结果保留两位小数381.已知(输入):华氏温度f2.计算过程:c=5/9 (f-32)3.结果(输出):输出摄氏温度c问题转换为程序问题转换为程序需要解决的问题需要解决的问题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语言语言表达式

16、、运算符表达式、运算符、优先优先级级)?)?5.5.如何如何输出输出c c的值?(的值?(输出、精度控制输出、精度控制)39目标目标用用C C语言程序解决简单计算问题语言程序解决简单计算问题掌握数据对象的表示方法掌握数据对象的表示方法掌握掌握C C语言表达式的写法语言表达式的写法掌握掌握C C语言输入语言输入/输出方法输出方法40主要内容主要内容数据对象表示数据对象表示2.1 2.1 基本字符、标识符、关键字基本字符、标识符、关键字2.2 2.2 数据、类型、变量数据、类型、变量计算过程计算过程2.3 2.3 运算符、表达式与计算运算符、表达式与计算用户交互用户交互2.4 2.4 结果输出与数

17、据输入结果输出与数据输入小结小结412.1 2.1 基本字符、标识符、关键字基本字符、标识符、关键字解决数据对象命名问题解决数据对象命名问题在在C C语言中可以使用哪些字符?语言中可以使用哪些字符?在在C C语言中给对象命名要遵循哪些规则?语言中给对象命名要遵循哪些规则?是否符合命名规则的名字都可以使用?是否符合命名规则的名字都可以使用?42基本字符基本字符数字字符:数字字符:0 09 9大小写拉丁字母:大小写拉丁字母:a az z,A AZ Z;其他一些可打印(可以显示)的字符,包括:其他一些可打印(可以显示)的字符,包括:!%&*()_-+=:;,.?/|!%&*()_-+=:;,.?/|

18、特殊字符,如空格符、换行符、制表符等特殊字符,如空格符、换行符、制表符等431.在注释中可以使用在注释中可以使用2.在双引号内可以使用在双引号内可以使用中文字符能中文字符能否使用?否使用?对象命名规则对象命名规则程序中一个程序中一个程序对象的名字称为的名字称为标识符标识符,该名字必须满足以下规则该名字必须满足以下规则由由字母、数字和下划线(_)构成的一个构成的一个连续序列,不能有空白字符(键盘上的空格键、序列,不能有空白字符(键盘上的空格键、TABTAB键)键)第一个字符必须是字母或下划线第一个字符必须是字母或下划线_(注意下划线_与横线-的区别)区别大小写:区别大小写:NAMENAME和和n

19、amename是不同的标识符是不同的标识符44标识符示例标识符示例45标识符标识符合法性合法性abcdA_great_machineBeijingkey map3set_f2048:ab4C_Programming合法合法合法合法合法不合法不合法不合法标识符命名惯例标识符命名惯例尽量使用有意义的单词尽量使用有意义的单词第一个字符尽量不使用下划线第一个字符尽量不使用下划线标识符由多个单词构成时可以每个单词首标识符由多个单词构成时可以每个单词首字母大写字母大写标识符不宜太长,可以适当使用简写标识符不宜太长,可以适当使用简写保持命名风格的一致性保持命名风格的一致性46几种常见命名规则几种常见命名规则

20、驼峰命名法(Camel)混合使用大小写字母来构成变量和函数的名字例如:MyData匈牙利命名法(Hungarian)在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等例如:iMyData帕斯卡(Pascal)命名法:与骆驼命名法类似只不过骆驼命名法是首字母大写,而帕斯卡命名法是首字母小写例如:myData47关键字关键字C C语言合法标识符中的一个特殊的小集合语言合法标识符中的一个特殊的小集合作为关键字的标识符在程序里具有语言预作为关键字的标识符在程序里具有语言预先定义好的特殊意义,不能用于其他目的先定义好的特殊意义,不能用于其他目的不能作为普通的名字(标识符)使用不

21、能作为普通的名字(标识符)使用48C C语言的语言的3232个关键字个关键字49auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while问题转换为程序问题转换为程序需要解决的问题需要解决的问题1.1.摄氏温度摄氏温度c c和华氏温度和华氏温度f f在程序中用什么在程序中用什么

22、名字表示(表示(标识符问题)?)?50可以就用可以就用c c表示摄氏度,表示摄氏度,f f表示华氏度表示华氏度问题转换为程序(版本问题转换为程序(版本0 0)下面的程序正确吗?下面的程序正确吗?51intmain()f=20;c=5/9*(f-32);return0;如何才能让C语言编译器识别c和f?Error f undeclaredError c undeclared 2.2 2.2 数据、类型、变量数据、类型、变量解决数据对象的存储和表示问题解决数据对象的存储和表示问题计算机对不同的数据类型有不同的存储和表计算机对不同的数据类型有不同的存储和表示方法示方法计算机能够表示的数值范围总是有限

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

24、范围-231231-1-231231-1-215215-154三种整数类型三种整数类型长整数长整数 long int 可以简写为可以简写为 long普通整数普通整数 int短整数短整数 short int 可以简写为可以简写为 short三种整数类型表示范围三种整数类型表示范围long int short,具体范围取决于不同的实现具体范围取决于不同的实现整数类型和整数的表示整数类型和整数的表示unsigned longunsigned intunsigned short字节数字节数442表示范围表示范围0232-10232-10216-155三种无符号整数类型三种无符号整数类型长整数长整数un

25、signed long int 可以简写为可以简写为 unsigned long普通整数普通整数 unsigned int短整数短整数 unsigned short int 可以简写为可以简写为 unsigned short三种整数类型表示范围三种整数类型表示范围unsigned long unsigned int unsigned short整数常数的书写形式(整数常数的书写形式(int.c)十进制形式十进制形式例如:例如:123456123456,123123,100100八进制形式八进制形式以以0 0开头开头例如:例如:01234560123456,01230123,01000100十六

26、进制形式十六进制形式以以0 x0 x开头开头例如:例如:0 x1234560 x123456,0 x1230 x123,0 x1000 x10056整数常数的书写形式示例整数常数的书写形式示例八进制形式八进制形式十进制值十进制值01234560123456427984279801230123838301000100646457十六进制形式十六进制形式十进制值十进制值0 x1234560 x123456119304611930460 x1230 x1232912910 x1000 x100256256实数类型和实数表示实数类型和实数表示三种实数类型三种实数类型单精度浮点数:单精度浮点数:floa

27、t双精度浮点数:双精度浮点数:double长双精度浮点数:长双精度浮点数:long double三种实数类型的表示范围三种实数类型的表示范围(IEEEIEEE标准标准)58字节数字节数 指数位数指数位数尾数位数尾数位数表示范围表示范围float4823-3.410383.41038double81152-1.7103083.410308long double1615112-1.21049323.4104932浮点数表示方法浮点数表示方法任意二进制浮点数公式:任意二进制浮点数公式:N=M2N=M2EE其中,其中,M M为尾数(纯小数部分),整数为尾数(纯小数部分),整数E E为指数,为指数,M

28、M与与E E都带符号。都带符号。二进制浮点数特征:二进制浮点数特征:尾数的位数决定数的精度;尾数的位数决定数的精度;指数的位数决定数的范围。指数的位数决定数的范围。59指数符号指数E尾数符号尾数M(定点整数)(定点小数)实数常数的书写形式实数常数的书写形式小数形式小数形式例如:例如:12000000.012000000.00.000010.00001指数形式指数形式例如:例如:1.2E7 1.2E7 1E-51E-5注意:注意:以上形式表示的实数均被当做double类型存储,如果希望以float类型存储需要在后面加上F或f例如:例如:12000000.0f 12000000.0f,0.0000

29、1F0.00001F,1.2E7F 1.2E7F,1E-5F1E-5F60Tips:在写程序时都使用double类型字符类型和字符的表示字符类型和字符的表示字符数据主要用于输入输出和文字处理字符数据主要用于输入输出和文字处理字符类型:字符类型:char字符类型在计算机中用字符类型在计算机中用一个字节的整数一个字节的整数存储存储unsigned char:0255char:-128127每一个字符都有唯一一个对应的整数,该整每一个字符都有唯一一个对应的整数,该整数称为这个字符的数称为这个字符的ASCII码61ASCIIASCII码码在计算机中每一个拉丁文字字母用一个在计算机中每一个拉丁文字字母用

30、一个0 0127127的的数字表示,这个数字称为该字母的数字表示,这个数字称为该字母的ASCIIASCII码码ASCII字符集:所有大小写英文字母、数字、各字符集:所有大小写英文字母、数字、各种标点符号字符,还有一些控制字符,一共种标点符号字符,还有一些控制字符,一共128128个个62字符的书写形式字符的书写形式1.1.用单引号括起的单个字符用单引号括起的单个字符例如:例如:A,a,1A,a,12.2.以字符对应的以字符对应的ASCII码表示表示64/a,b/a,b都表示字符都表示字符AAchara,b;a=A;b=65;字符的书写形式字符的书写形式3.3.用用转义字符转义字符表示特殊字符表

31、示特殊字符反斜线(反斜线()开头的转义字符用来表示)开头的转义字符用来表示ASCIIASCII字符集中的特殊字符字符集中的特殊字符65注意:对未定义的转义字符直接输出反斜线后的字符转义字符转义字符实际输出的字符实际输出的字符nn换行符号换行符号单引号单引号 反斜线反斜线 双引号双引号 字符串字符串字符串不是字符串不是C C语言的一种数据类型语言的一种数据类型用双引号括起的一系列字符:用双引号括起的一系列字符:CHINA Beijing University WelcomenCHINA Beijing University Welcomen其本质是其本质是字符数组主要用于输入输出主要用于输入输出

32、printf(printf(Hello C Program!nHello C Program!n););字符串中间不能换行66Hello C ProgramHello C Program变量声明变量声明变量:用于存储程序的输入数据或计算结果的:用于存储程序的输入数据或计算结果的存存储单元储单元变量值在程序运行时可以改变变量声明:给存储单元定义一个:给存储单元定义一个名称及及类型,便,便于程序中引用于程序中引用变量名必须是变量名必须是合法标识符合法标识符变量必须有变量必须有确定数据类型确定数据类型可以在一条语句中定义可以在一条语句中定义多个同类型多个同类型变量变量可以在变量声明时赋值可以在变量声

33、明时赋值67示例程序中的变量声明示例程序中的变量声明68#include int main()double f=50.0;/声明存储华氏温度的变量并赋值声明存储华氏温度的变量并赋值 double c;/声明存储摄氏温度的变量声明存储摄氏温度的变量 .#include int main()double f=50.0,c;/一条语句中声明多个变量一条语句中声明多个变量 .变量基本操作变量基本操作赋值操作修改变量当前的值修改变量当前的值方法:使用赋值表达式(方法:使用赋值表达式(由操作符“=”构成的表达式)a=a=3.53.5b=b=5+35+3取值操作获得变量现在的值获得变量现在的值方法:直接引用

34、变量名称方法:直接引用变量名称s=s=a a+b bprintf(s=%dn,printf(s=%dn,s s););69问题转换为程序(版本问题转换为程序(版本1 1)70#includeintmain()doublef=20,c;return0;数学运算c=59 (f-32),如何转换成C语言表达式?C语言表达式如何计算?2.3 2.3 运算符、表达式与计算运算符、表达式与计算解决数学运算到程序的转换问题解决数学运算到程序的转换问题数学运算符在程序中如何表示?数学运算符在程序中如何表示?数学运算的规则在程序中如何实现?数学运算的规则在程序中如何实现?71算术运算符算术运算符72运算符运算符

35、使用形式使用形式数学意义数学意义适用数据类型适用数据类型+一元或二元运算符一元或二元运算符一元表示正号,二元一元表示正号,二元表示加法表示加法所有基本数据所有基本数据类型类型-一元或二元运算符一元或二元运算符一元表示负号,二元一元表示负号,二元表示减法表示减法所有基本数据所有基本数据类型类型*二元运算符二元运算符乘法运算乘法运算所有基本数据所有基本数据类型类型/二元运算符二元运算符除法运算除法运算所有基本数据所有基本数据类型类型%二元运算符二元运算符模运算(求余数)模运算(求余数)整数类型整数类型算术运算符示例(算术运算符示例(operator.coperator.c)73double a=3

36、.0,b=2.0;int c=4,d=2;表达式表达式结果结果-a-a-3.0a+ba+b5.0a-ba-b1.0a*ba*b6.0a/ba/b1.5c/dc/d2c%dc%d0算术表达式算术表达式由计算对象由计算对象(例如数值的文字量、变量、例如数值的文字量、变量、函数调用等函数调用等)、算术运算符及圆括号构成,、算术运算符及圆括号构成,基本形式与数学上的算术表达式类似基本形式与数学上的算术表达式类似-(28+32)+(16*7-4)-(28+32)+(16*7-4)25*(3-6)+23425*(3-6)+234a*b+c/2a*b+c/2a*a*sinsin(c*3.1416/180)(

37、c*3.1416/180)74算术表达式算术表达式数学公式数学公式C C语言言表达式表达式b2-4ac a+b-cax-(b+c)75b*b 4*a*ca+b-c(a+b)/(c+d)1/(1+x*x)a*x-(b+c)表达式求值表达式求值给定了表达式中所有变量的值以后表达式给定了表达式中所有变量的值以后表达式的值如何计算?的值如何计算?表达式的计算过程表达式的计算过程优先级不同运算符哪个先算,哪个后算?不同运算符哪个先算,哪个后算?结合性相同优先级的运算符哪个先算,哪相同优先级的运算符哪个先算,哪个后算?个后算?76表达式求值表达式求值优先级规则优先级规则1.1.一元运算符优先级最高一元运算

38、符优先级最高2.2.先乘除后加减先乘除后加减3.3.括号中的表达式先计算括号中的表达式先计算77运算符运算符优先级优先级一元一元+和和-高高*/%/%中中二元二元+和和-低低当不确定运算符优先级时,用括号来指定运算顺序是避免错误的最好方法14-4表达式表达式值值10/5+4*6/2-(2+6)*4)/(3+5)表达式求值表达式求值结合性结合性确定具有相同优先级的运算符相邻出现时表确定具有相同优先级的运算符相邻出现时表达式的计算顺序。达式的计算顺序。C C语言规定语言规定一元算术运算符算术运算符自右向左结合;结合;二元算术运算符算术运算符自左向右结合,优先级相同时结合,优先级相同时左边的运算符先

39、计算。左边的运算符先计算。784*7/2-+-8(4*7)/2(-(+(-8)148问题转换为程序问题转换为程序(版本版本2 2)下面的程序结果正确吗?下面的程序结果正确吗?79int main()double f=50;double c;c=5/9*(f-32);return 0;c的计算结果是多少c=10?计算和类型计算和类型以上计算涉及的问题以上计算涉及的问题类型对计算的限制类型对计算的限制混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换强制(显式)类型转换强制(显式)类型转换8013011.05/4+4*6/2=?5/4+4*6/2=?1/3*3=?1/3*3=?1

40、*3/3=?1*3/3=?1/3.0*3=?1/3.0*3=?计算和类型计算和类型类型对计算的限制类型对计算的限制1.1.两个相同类型数据使用二元运算符计算得两个相同类型数据使用二元运算符计算得到的结果类型相同。到的结果类型相同。例如,两个整数运算结例如,两个整数运算结果仍然是整数果仍然是整数811+24/21+121/3*35/4+4*6/20*3130计算和类型计算和类型类型对计算的限制类型对计算的限制2.2.计算结果超出类型表示范围会导致计算结果超出类型表示范围会导致 溢出溢出 (overflow.coverflow.c)82#include int main()short a=3276

41、5,b=5;short c=a+b;/c=?printf(c=%dn,c);return 0;计算和类型计算和类型混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换两个不同类型数据使用二元运算符形成混合类型计算两个不同类型数据使用二元运算符形成混合类型计算C C语言里混合类型计算的方法是语言里混合类型计算的方法是将混合类型计算中的将混合类型计算中的某个运算对算转换为另一个运算对象的类型再计算某个运算对算转换为另一个运算对象的类型再计算转换原则是转换原则是将表示范围小的类型转换为表示范围大的将表示范围小的类型转换为表示范围大的类型以避免丢失精度类型以避免丢失精度83表示范围表示

42、范围小小 大大类型类型shortshortintintlonglongfloatfloatdoubledoublelong doublelong double计算和类型计算和类型混合类型计算和自动(隐式)类型转换混合类型计算和自动(隐式)类型转换2 +3 *4.5 =15.52 +3 *4.5 =15.584234.53.0*13.52.0+15.5自自动动类类型型转转换换计算和类型计算和类型强制(显式)类型转换强制(显式)类型转换任何类型均可相互转换,任何类型均可相互转换,但转换可能丢失精度但转换可能丢失精度转换方式:转换方式:(类型名类型名)表达式表达式强制类型转换是一元运算符,其优先级和

43、其他一元强制类型转换是一元运算符,其优先级和其他一元运算符相同运算符相同(高于二元运算符高于二元运算符)(int)3.3*2.2(int)3.3*2.2 +4=+4=(int)(3.3*2.2)(int)(3.3*2.2)+4=+4=类型转换不改变原来的值类型转换不改变原来的值float a=3.3;float a=3.3;int b=(int)a;/int b=(int)a;/不改变不改变a a的值的值853*2.2+4=10.6(int)(7.26)+4=7+4=11计算和类型计算和类型整数转浮点数不存在整数转浮点数不存在精度问题精度问题浮点数类型转换为整浮点数类型转换为整数时直接去掉小数

44、部数时直接去掉小数部分分86(int)(3.3*2.2)+4=112.23.347*11+7.26强强制制类类型型转转换换问题转换为程序(版本问题转换为程序(版本3 3)87#include int main()double f=50.0;/存储华氏温度的变量存储华氏温度的变量 double c;/存储摄氏温度的变量存储摄氏温度的变量 c=5.0/9.0*(f-32);/计算摄氏温度计算摄氏温度 return 0;2.4 2.4 结果输出与数据输入结果输出与数据输入解决程序与用户交互的问题解决程序与用户交互的问题如何将计算结果展现给用户?如何将计算结果展现给用户?如何让用户输入需要的数据?如何

45、让用户输入需要的数据?88输出计算结果输出计算结果格式化输出函数格式化输出函数printfprintfC C语言标准库函数语言标准库函数调用形式:调用形式:printf(printf(格式字符串,其他参数););89控制输出格式控制输出格式 输出类型输出类型 输出精度输出精度 对齐方式对齐方式准备输出的值准备输出的值 0 0个或多个个或多个 所有基本类型变量或常量所有基本类型变量或常量 表达式或其他函数调用结果表达式或其他函数调用结果输出计算结果输出计算结果printfprintf函数的格式字符串函数的格式字符串双引号括起来的字符串,其中包括:双引号括起来的字符串,其中包括:格式字符:用用%引

46、导格式字符,控制输出格式引导格式字符,控制输出格式转义字符:按转义后的含义输出按转义后的含义输出其他字符:直接输出直接输出90格式字符串格式字符串输出结果输出结果first programfirst programfirst programfirst programfirstfirstnnprogramprogramfirstfirstprogramprogram输出计算结果输出计算结果用于输出整数的格式字符用于输出整数的格式字符%d%d-以十进制输出以十进制输出带符号整数%o%o-以八进制输出以八进制输出无符号整数%x%x-以十六进制输出以十六进制输出无符号整数int a=256,b=-18

47、0;格式字符串格式字符串输出结果输出结果a=%d,b=%da=256,b=-180a=%xa=100a=%oa=40091输出计算结果输出计算结果用于输出浮点数的格式字符用于输出浮点数的格式字符%f%f-以小数形式输出以小数形式输出float/doublefloat/double型浮点数型浮点数%e%e-以指数形式输出以指数形式输出float/doublefloat/double型浮点数型浮点数以上两种形式默认小数点后输出以上两种形式默认小数点后输出6 6位有效数字位有效数字double c=1234.567;float d=2356.4359f;格式字符串格式字符串输出结果输出结果c=%f,

48、d=%fc=1234.567000,d=2356.435791c=%e,d=%ec=1.234567e+003,d=2.356436e+00392输出计算结果输出计算结果输出浮点数的精度(小数位数)控制输出浮点数的精度(小数位数)控制%.%.n nf nf n为整数,表示保留几位小数为整数,表示保留几位小数位数不足时位数不足时末尾补零末尾补零位数超出时位数超出时四舍五入进位四舍五入进位double c=1234.567;float d=2356.4359f;格式字符串格式字符串输出结果输出结果c=%.4fc=1234.5670d=%.3fd=2356.43693输出计算结果输出计算结果用于输出

49、字符和字符串的格式字符用于输出字符和字符串的格式字符%c%c-输出一个字符输出一个字符%s%s-输出一个字符串输出一个字符串char*s=c programming;char ch1=A,ch2=a;格式字符串格式字符串输出结果输出结果ch1=%c,ch2=%cch1=A,ch2=ach1=%d,ch2=%dch1=65,ch2=97I love%s!I love c programming!94输出计算结果输出计算结果使用使用printfprintf需要注意的问题需要注意的问题1.1.格式字符串中没有格式字符串中没有%引导的格式控制字符时,不需引导的格式控制字符时,不需要其他参数,直接输出字

50、符串内容,转义字符按转以要其他参数,直接输出字符串内容,转义字符按转以后实际意义输出后实际意义输出95格式字符串格式字符串输出结果输出结果first programfirst programfirst programfirst programfirstfirstnnprogramprogramfirstfirstprogramprogram输出计算结果输出计算结果使用使用printfprintf需要注意的几个问题需要注意的几个问题2.2.格式字符串中有格式字符串中有%引导的格式控制字符时,其他参引导的格式控制字符时,其他参数的数的数量以及以及类型必须和格式控制字符一致。必须和格式控制字符一致。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com