首页 C语言程序设计(第五版)-谭浩强

C语言程序设计(第五版)-谭浩强

举报
开通vip

C语言程序设计(第五版)-谭浩强教材、参考书与课时安排 教材C程序设计(第二版)谭浩强编著清华大学出版社 参考书C语言程序设计教程谭浩强高等教育出版社C高级实用程序设计王士元清华大学出版社C程序设计试题汇编谭浩强清华大学出版社 课时安排64学时 熟记C语言的基本概念 熟悉TurboC的上机操作环境 会读、会编、会调试C程序 学习要点 熟记C语言的语法 学会算法分析与算法设计课程目的课程要求 课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间目录第1章C语言概述C语言程序设计第一章...

C语言程序设计(第五版)-谭浩强
教材、参考书与课时安排 教材C程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (第二版)谭浩强编著清华大学出版社 参考书C语言程序设计教程谭浩强高等教育出版社C高级实用程序设计王士元清华大学出版社C程序设计试 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 汇编谭浩强清华大学出版社 课时安排64学时 熟记C语言的基本概念 熟悉TurboC的上机操作环境 会读、会编、会调试C程序 学习要点 熟记C语言的语法 学会算法分析与算法设计课程目的课程要求 课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间目录第1章C语言概述C语言程序设计第一章C语言概述 1.1C语言发展历史 程序设计语言的发展CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统,可进行地址、位操作如ADDA,B编写系统软件,直接对硬件操作,可读性,移植性差>C语言程序设计第一章C语言概述可读性,移植性好,编写应用程序一般较难实现汇编语言的某些功能如:地址和位的操作C语言兼有高级和低级语言的功能适合写系统软件和应用软件又称中级语言<*1946年,第一台电子计算机问世,应用领域迅速扩大,软硬件飞速发展,程序设计语言相继问世。程序设计语言:将自然语言形式化为有格式的语言1。机器语言: 计算机能够认识的语言 计算机的基础是数字电路 机器语言就是数字电路里的电信号 将在《计算机组成》课程中学习 都是二进制文件 一条机器语言成为一条指令 指令是不可分割的最小功能单元定义:一种CPU的指令系统,由该CPU可识别的0、1序列构成的指令码组成。特点:执行效率高不直观,不易查错,生产效率低。2。汇编语言定义:用助记符号描述的指令系统特点:生产效率高,质量好,执行效率较高;要经汇编程序汇编成目标程序(机器语言)才能执行,依赖硬件。(面向机器的语言----依CPU不同而异)3。高级语言特点:编程效率高,不必考虑硬件;执行效率低,要经编译、连接后才能执行。面向过程的程序设计语言认为解题过程是数据被加工的过程程序=数据结构+算法C语言是面向过程的高级语言面向对象的程序设计语言一种结构模拟方法。认为:现实世界由对象组成,对象是数据和方法的封装体;客观世界可以分类,每个对象是类的一个实例。特点:比面向过程的语言更清晰、易懂,适宜编更大规模程序,是程序设计的主流程序设计语言基本成分:。数据成分。运算成分。控制成分。传输成分 程序设计语言定义:用于书写计算机程序的语言。通常指实现高级语言。语言的基础是一组记号与一组 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 。程序设计语言包括:语法:记号的组合规则语义:记号的特定意义语用:程序与使用者的关系 C语言发展过程 产生背景 ALGOL60→CPL语言→BCPL→B语言,写UNIX系统 产生过程 时间:1972~1973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人:Ken.Thompson和Dennis.M.Ritchie C标准 标准C:1978年K&R合著《TheCProgrammingLanguage》 ANSIC:1983年 87ANSIC:1987年 1990年国际标准的ANSIC,1994年再次修订。 C版本 MicrosoftC或称MS-C TurboC或称TC<>C语言程序设计第一章C语言概述* 1.2C语言的特点 语言简洁、紧凑、灵活 运算符丰富 数据结构、数据类型丰富 链表、树、栈 程序设计结构化、模块化 结构化控制语句:if…else、while、switch、for 函数作为模块单位 语法不严格、程序设计自由度大 可以访问内存地址、进行位运算 生成目标代码质量高 可移植性好<>>>>>>C语言程序设计第一章C语言概述32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile TurboC扩充了11个关键字: asm _cs _ds _es _ss cdecl far huge interrupt near pascal注意:在C语言中,关键字都是小写的。<C语言程序设计第一章C语言概述C语言简洁、紧凑,使用方便、灵活。ANSIC一共只有32个关键字,见365页附录B9种控制语句:if()~else~for()~while()~do~while()continuebreakswitchgotoreturn<C语言程序设计第一章C语言概述C语言有9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。<C语言程序设计第一章C语言概述表1.1C语言与Pascal语言比较通过表1.1我们可以得出结论:C比Pascal简练,因此源程序更短,编程效率高。 C语言 PASCAL语言 含义 {}if(e)S;inti;inta[10];intf();int*p;i+=2;i++,++I; BEGINENDIF(e)THENS;VARi:INTEGER;VARa:ARRAY[1..10]OFINTEGER;FUNCTIONf():INTEGER;VARP:INTEGER;i=i+2;i=i+1; 函数体、分程序、复合语句条件语句定义i为整形变量定义a为一维数组定义f为返回整形值函数;p为指向整形变量的指针变量;赋值语句,使i+2赋给Ii自增值1,i加1赋给I34种运算符:算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()-注意:各种运算符混合使用,其优先级与结合方法是难点,可先预习。<C语言程序设计第一章C语言概述C语言运算符丰富(附录C)<C语言程序设计第一章C语言概述C语言数据结构丰富 1.3简单的C程序介绍/*example1.1ThefirstCProgram*/#include<stdio.h>voidmain(){printf(“Thisisacprogram.\n”);}C语言程序设计第一章C语言概述>输出:Thisisacprogram.例1.1第一个程序Thisisacprogram.<例1.2求俩个数的和/*example1.1calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/voidmain(){inta,b,sum;/*定义变量*/a=10;b=24;sum=add(a,b);printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}运行结果:sum=34C语言程序设计第一章C语言概述><*C语言程序设计第一章C语言概述><例1.3从键盘输入两个整数,输出其中较大的数#include<stdio.h>voidmain(){intmax(intx,inty)inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf("max=%d",c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}输入:10,20输出:max=20声明部分,定义变量调用max函数,返回值赋给c定义max子函数,函数值、形参x、y为整型通过max函数将z值带回调用处* C语言格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式<>C语言程序设计第一章C语言概述main(){……………….…………………………..…………..……………….………………………….……………….………………..}main(){inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}printf(“%d\n”,sum);}优秀程序员的素质之一: 使用TAB缩进 {}对齐 有足够的注释 有合适的空行* C语言结构特点 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main(),可以放在程序中任一位置 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /**/为注释,不能嵌套 不产生编译代码<>例:/*Thisisthemain/*ofexample1.1*/*/ 编译预处理命令C语言程序设计第一章C语言概述 1.4C程序的上机步骤 C程序开发步骤<>C语言程序设计第一章C语言概述程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exeSheet1 源程序 目标程序 可执行程序 内容 程序设计语言 机器语言 机器语言 可执行 不可以 不可以 可以 文件名后缀 .c或.cpp .obj .exeSheet2 Sheet3 TurboC集成开发环境 配置要求 UNIX,PC-DOS,MS-DOS,UCDOS操作系统 硬盘容量约2M,448KRAM运行空间 安装TurboC 创建子目录 Install 若不是可安装盘,将文件拷贝到对应的目录下<>C语言程序设计第一章C语言概述* 进入TurboC D:\TC>TC.exe 主控菜单 文件操作FILE:NewLoadSaveWriteto 编辑操作EDIT:插入/修改块查找/替换 编译链接COMPILELINKMAKE 执行RUN 退出TurboC Alt+x Alt+F,Q 帮助Help F1 Ctrl+F1<>C语言程序设计第一章C语言概述基本操作:F10-----调用主菜单F2------存盘F3------打开F1------帮助信息Alt+F9------CompileCtrl+F9------RunAlt+F5------UserScreenAlt+X------退出Tc 常用热键文本编辑:-------移动光标PgUp,PgDn------上下翻页Ctrl+PgUp,Ctrl+PgDn------文件首尾Home行首End行尾DdeleteInsertBkspace块操作:Ctrl+KB-------块开始标记Ctrl+KK--------块结束标记Ctrl+KC-------块拷贝Ctrl+KV--------块移动Ctrl+KY-------块删除Ctrl+KH--------块隐藏程序调试:F8-----StepoverF7-------TraceintoF4-----GotoCursorCtrl+F7--------AddWatchCtrl+F8------ToggleBreakpointCtrl+F2--------ProgramReset窗口操作:F5-----窗口缩放F6-----窗口切换C语言程序设计第一章C语言概述<> 课后作业 预习“题解与上机指导”一书中 P181~199页的14.3~14.10节 P236页实验1 教材P12:1.5、1.6、1.7、1.8题。注意:有关设计程序的作业,必须经过上机调试!C语言程序设计第一章C语言概述<>算法的概念简单算法举例算法的特性怎样表示一个算法第2章程序的灵魂——算法C语言程序设计第二章程序的灵魂——算法结构化程序设计方法<>C语言程序设计第二章程序的灵魂——算法 程序包括的内容: 数据结构:数据的类型和组织形式 算法:操作步骤的描述NikiklausWirth提出:教材认为:程序=算法+数据结构+程序设计方法+语言工具和环境灵魂加工对象工具*<>C语言程序设计第二章程序的灵魂——算法 2.1算法的概念 为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。 算法核心是解决“做什么”和“怎么做”的问题。 P15页的例2.1,求1……5之积。 可以有多种方法,一般采用简单和运算步骤少的。准确、高效 计算机算法类别 数值运算算法 非数值运算算法*<>C语言程序设计第二章程序的灵魂——算法 2.2简单算法举例 例2.1 方法1:累乘 方法2:用循环结构解决,灵活、通用。 例2.2 通过循环选择打印 例2.3 判断闰年 例2.4 累加求级数的和,循环改变正负号和分母加1。 例2.5 判断素数课后认真思考,加深什么是算法的概念*<>C语言程序设计第二章程序的灵魂——算法 2.3算法的特性 有穷性—在合理范围内可完成 确定性—无歧义性 有零个或多个输入—从外界得到信息 有一个或多个输出—问题的答案 有效性—每步有确定的结果*>C语言程序设计第二章程序的灵魂——算法 2.4怎样表示一个算法 自然语言表示 2.2节例。易懂,文字冗长,易歧义性 流程图表示 用流程图符号构成,直观,易懂 N-S流程图表示 伪代码表示 计算机语言表示 顺序结构 选择结构 循环结构<*>C语言程序设计第二章程序的灵魂——算法传统流程图流向混乱、可读性差,所以应该采用结构化流程图。 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构<*>C语言程序设计第二章程序的灵魂——算法 选择结构 二分支选择结构 多分支选择结构<*>C语言程序设计第二章程序的灵魂——算法 循环结构 当型循环结构 直到型循环结构注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构<*>C语言程序设计第二章程序的灵魂——算法三种基本结构的共同特点: 只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。<*>C语言程序设计第二章程序的灵魂——算法 2.5结构化程序设计方法 结构化程序:用三种基本结构组成的程序 基本设计思路: 复杂问题分解成几个最基本问题,再分别处理。 采用的方法: 自顶向下; 逐步细化; 模块化设计:复杂问题按功能分成多个子模块 结构化编码:正确采用三种基本结构实现<*>C语言程序设计第二章程序的灵魂——算法 课后作业 P36页习题: 2.4、2.8(结合实验指导读懂答案) 用N-S图表示2.4题中⑴⑵⑹ 用传统流程图求解以下问题:将一个16进制数转化为10进制数 复习二进制的基本概念 “计算机文化基础”一书中P27~33页<*第3章数据类型、运算符与表达式C语言程序设计第三章程序的灵魂——算法C的数据类型常量与变量整型数据实型数据字符型数据变量赋初值各种数值型数据间的混合运算算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式<>C语言程序设计第三章程序的灵魂——算法 3.1C的数据类型*<>C语言程序设计第三章程序的灵魂——算法 常量和符号常量 定义:程序运行过程中,其值不能被改变的量(常数) 分类:直接常量、符号常量 3.2常量与变量 类型 示例 整型常量 12、0、-3 实型常量 4.6、-1.23 字符常量 ‘a’、‘b’ 符号常量 PRICE、PAI*<>C语言程序设计第三章程序的灵魂——算法 符号常量:用标识符代表常量 一般用大写字母:PRICE、PI 定义格式:#define符号常量常量 其值在作用域内不能改变和再赋值。例3.1符号常量举例#definePRICE30#include<stdio.h>voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d\n",total);}*<>C语言程序设计第三章程序的灵魂——算法 变量 定义:其值可以改变的量。 定义格式:数据类型变量名; 变量应该有名字,并在内存中占据一定的存储单元。 变量名和变量值有不同的含义 变量名实为一个符号地址例变量的使用main(){inta;a=3;printf(“a=%d",a);}*<>C语言程序设计第三章程序的灵魂——算法 标识符 定义:标识变量名、符号常量名、函数名、数组名、文件名的字符串序列——名字。 命名规则: 只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线 大小写字母含义不同,一般用小写 不能使用关键字 TC允许最长32个字符,建议长度不超过8个字符 使用:先定义、后使用这些标识符合法吗?1A、M.D.John、¥123、#33、Tatol、int、max*>C语言程序设计第三章程序的灵魂——算法 3.3整型数据 整型常量(整常数)的三种表示方法 十进制整数:由数字0~9和正负号表示.如123,-456,0 八进制整数:由数字0开头,后跟数字0~7表示.如0123,011 十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0xff<*<>C语言程序设计第三章程序的灵魂——算法 补充知识: 字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1*<>C语言程序设计第三章程序的灵魂——算法 数值的表示方法——原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加19-5=49+7=16=(14)12*<>C语言程序设计第三章程序的灵魂——算法 负数补码转换成十进制数:最高位不动,其余位取反加1例补码:11111001取反:10000110加1:10000111=-7*>C语言程序设计第三章程序的灵魂——算法 整型变量 整型数据在内存中的存放形式 数据在内存中以二进制补码形式存放 每一个整型变量在内存中占2个字节10的原码反码补码-10的原码取绝对值反码补码整数的最左二进制位是符号位,0正、1负<*>C语言程序设计第三章程序的灵魂——算法 整型变量的分类 三类整型变量 整数类型和取值范围<*>C语言程序设计第三章程序的灵魂——算法 整型变量的定义 先定义后使用——强制类型定义inta,b;(指定变量a、b为整型)unsignedshortc,d;(指定变量c、d为无符号短整型)longe,f;(指定变量e、f为长整型)例3.2整型变量的定义与使用#include<stdio.h>voidmain(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n",c,d);}指定abcd为整型变量指定u为无符号整型变量定义放在函数开头的声明部分不同类型混合运算,类型自动转换结果:a+u=22,b+u=-14定义与赋值同时进行:inta=12;<*>C语言程序设计第三章程序的灵魂——算法 整型数据的溢出此情况称为“溢出”,运行时不报错,编程时要注意整型变量最大值32767加1后是–32768的补码形式例3.3整型数据的溢出#include<stdio.h>voidmain(){inta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);}改为:longb;结果是什么?<*>C语言程序设计第三章程序的灵魂——算法 整型常量的类型 整型常量的值在-32768~+32767范围内,编译器认为是int类型 整型常量的值超过上述范围,而在-2147483648~+2147483647范围内,编译器认为是long类型 当系统定义shortint与int占内存长度相同,则两种类型常量均可以赋给int和shortint型变量 在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L 在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。<*<>C语言程序设计第三章程序的灵魂——算法 3.4浮点型数据 浮点型常量的表示方法 浮点数(float)又称为实数(real) 两种表示方法: 十进制小数形式:必须有小数点如0.123、.123、123.0、0.0、123. 指数形式:e或E之前后必须有数字;指数必须为整数如123.456e0、12.3456e1、1.23456e2、0.123456e3、0.0123456e4等 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 化指数形式 只有一位非零整数的指数形式 是指数的输出形式6.28e-2表示6.28×10-2-3.0824e4表示–3.0824×104*>C语言程序设计第三章程序的灵魂——算法 浮点型变量 浮点型数据在内存中的存放形式 浮点型数据在内存中占4个字节(32位) 在内存中分成3部分,指数为2的幂次+.3141591数符小数部分指数 浮点型变量的分类floatx,y;(指定x、y为单精度浮点型变量)doublez;(指定z为双精度浮点型变量)longdoublet;(指定t为长双精度浮点型变量)<*>C语言程序设计第三章程序的灵魂——算法 浮点型数据的舍入误差 数据超过有效位数,则产生误差 要避免一个很大的数与一个很小的数加减例3.4浮点型数据的舍入误差#include<stdio.h>voidmain(){floata,b;a=123456.789e5;b=a+20;printf("%f\n",b);} 浮点型常量的类型 浮点型常量一般按双精度64位处理,数后加F或f按单精度 浮点型常量不分float和double<*>C语言程序设计第三章程序的灵魂——算法 3.5字符型数据 字符常量 定义:用单引号括起来的单个字符或转义字符字符常量的值:该字符的ASCII码值定义格式:char变量名=值转义字符:反斜线后面跟一个字符或一个代码值表示如‘a’‘A’‘\n’‘\t’如‘a’——97,‘A’——65‘\n’——10,‘\t’——9charch=65与charch=‘A’与char=‘\101’是等效的<*>C语言程序设计第三章程序的灵魂——算法例3.5转义字符的使用#include<stdio.h>voidmain(){printf(“abc\tde\rf\tg\n”);printf(“h\ti\b\bjk”);}<*>C语言程序设计第三章程序的灵魂——算法 字符变量 存放字符常量,占用一个字节,存放一个字符 定义形式:赋值:charc1,c2;c1=‘a’;c2=‘b’; 字符数据在内存中的存储形式及其使用方法 以二进制存放字符的ASCII码值(0~255整数) 与整数的存储形式类似 以字符或整数形式输出例3.6向字符变量赋整数#include<stdio.h>voidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n",c1,c2);printf(“%d%d\n",c1,c2);}输出形式取决于printf函数中的格式符格式符为“%c”时输出的变量值为字符格式符为“%d"时输出的变量值为整数<*>C语言程序设计第三章程序的灵魂——算法 对字符数据进行算术运算 实质是对其ASCII值进行算术运算例3.7大小写字母的转换#include<stdio.h>voidmain(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c",c1,c2);} 字符型与整型间互相赋值例:互相赋值#include<stdio.h>voidmain(){intc1;charc2;c1=‘a’;c2=98;c1=c1-32;c2=c2-32;printf(“%c%c",c1,c2);}小写字母比大写字母的ASCII码大(32)10<*>C语言程序设计第三章程序的灵魂——算法 字符串常量 定义:用双引号(“”)括起来的字符序列“Howdoyoudo”,“CHINA”,“a”,“$123.45” 存储:每个字符串尾自动加一个‘\0’作为字符串结束 标志 禁止坐卧标志下载饮用水保护区标志下载桥隧标志图下载上坡路安全标志下载地理标志专用标志下载 字符常量与字符串常量不同例:charch;ch=“A”;没有字符串变量,只能用字符数组存放<*>C语言程序设计第三章程序的灵魂——算法 3.6变量赋初值 变量的使用:先定义,后使用 变量定义位置:一般放在函数开头 变量初始化:可以在定义时赋初值例:inta=1,b=-3,c;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=1;(×)错!inta=b=c=3<*>C语言程序设计第三章程序的灵魂——算法 3.7各类数值型数据间的混合运算 整型、实型、字符型数据间可以混合运算 自动转换 什么情况下发生 运算转换------不同类型数据混合运算时 赋值转换------把一个值赋给与其类型不同的变量时 输出转换------输出时转换成指定的输出格式 函数调用转换------实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型<*>C语言程序设计第三章程序的灵魂——算法<*>C语言程序设计第三章程序的灵魂——算法 强制转换(见P56强制类型转换运算符部分) 一般形式:(类型名)(表达式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变例3.8#include<stdio>main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题强制类型转换运算符表达式仅一个变量时,括号可以省略<*>C语言程序设计第三章程序的灵魂——算法 3.8算术运算符和算术表达式 学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型<*>C语言程序设计第三章程序的灵魂——算法 算术运算符和算术表达式 基本算术运算符:+-*/% 结合方向:从左向右 优先级:----->*/%----->+-(2)(3)(4)说明: “-”可为单目运算符时,右结合性 两整数相除,结果为整数 %要求两侧均为整型数据 +-*/运算的两个数中有一个数为实数,结果是double型例5/2=-5/2.0=例5%2=-5%2=1%10=5%1=5.5%2例5/2=2-5/2.0=-2.5例5%2=1-5%2=-11%10=15%1=05.5%2()<*>C语言程序设计第三章程序的灵魂——算法 自增、自减运算符++-- 作用:使变量值加1或减1 种类: 前置++i,--i(先执行i+1或i-1,再使用i值) 后置i++,i--(先使用i值,再执行i+1或i-1)例 j=3;k=++j; j=3;k=j++; j=3;printf(“%d”,++j); j=3;printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4,j=4//3,j=4//c=20,a=4//c=15,a=4<*>C语言程序设计第三章程序的灵魂——算法 几点说明:例-i++i=3;printf(“%d”,-i++);-(i++)//-3 ++--不能用于常量和表达式,如5++,(a+b)++ ++--结合方向:自右向左 优先级:-++-------->*/%----->+-(2)(3)(4) 该运算符常用于循环语句中,使循环变量加减1 有关表达式使用中的问题说明 不同系统对运算符和表达式的处理次序不同,尽可能写通用性强的语句 不要写有歧义和不知系统如何执行的程序<*>C语言程序设计第三章程序的灵魂——算法 3.9赋值运算符和赋值表达式 简单赋值运算符 符号:= 格式:变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量 左侧必须是变量,不能是常量或表达式例a=3;d=func();c=d+2;例3=x-2*y; a+b=3;(×)< 类型转换 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例floatf;inti=10;f=i;则f=10.0例inti;i=2.56;//结果i=2;* 复合赋值运算符 种类:+=-=*=/=%=《=》=&=^=|= 含义:exp1op=exp2exp1=exp1opexp2>C语言程序设计第三章程序的灵魂——算法 赋值表达式 形式:<变量><赋值运算符><表达式> 赋值表达式的值与变量值相等,且可嵌套例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2<*>C语言程序设计第三章程序的灵魂——算法 3.10逗号运算符和逗号表达式 形式:表达式1,表达式2,……表达式n 结合性:从左向右 优先级:15,级别最低 逗号表达式的值:等于表达式n的值 用途:常用于循环for语句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表达式值60//a=15,表达式值20//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3//1,2,3//3,2,3<*>C语言程序设计第三章程序的灵魂——算法例:逗号表达式使用main(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}<*>C语言程序设计第三章程序的灵魂——算法 课后作业 P66~68页习题: 3.2,3.5(思考) 3.3,3.4,3.9,3.12(写出答案) 3.6,3.10(上机验证) 上机:实验教材:实验2(做好上机准备) 预习第四、第五章<*第4章最简单的C程序设计——顺序程序设计C语言程序设计第四章顺序程序设计C语言概述赋值语句数据输入输出的概念及在C语言中的实现字符数据的输入输出格式输入与输出顺序结构程序设计举例<> 4.1C语句概述 C程序结构: 一个C程序可以由多个源程序文件构成 一个源程序文件由若干函数、预编译命令及全局变量声明部分构成 函数包括数据定义部分和执行部分,执行部分是C语言语句,完成对数据的操作C语言程序设计第四章顺序程序设计*<> C语句分为5类 控制语句:共9种 完成一定的控制功能,这些语句能够根据一定的测试条件决定某些语句是否被执行,如分支、循环、跳转等语句。C语言程序设计第四章顺序程序设计*<>C语言程序设计第四章顺序程序设计 空语句:只有一个“;”,什么也不做 表达式语句:由表达式加“;”组成 典型的是赋值语句,由赋值表达式加分号构成,如:y=x+1是表达式,而y=x+1;则是赋值语句。实际上函数调用语句也属于表达式语句。 函数调用语句:由函数加“;”组成printf(“ThisisaCprogram”);a=3;i++;for(i=0;i<100;i++){;}*<> 复合语句: 用{…}括起来的一组语句,也称作程序块。 一般形式:C语言程序设计第四章顺序程序设计inti=0,sum=0;while(i<=100){ sum=sum+i; i=i+1;} 说明 复合语句“}”后不加分号 语法上和其它语句相同 复合语句可嵌套*<> 4.2赋值语句 基本格式:赋值表达式+; 赋值表达式可以包含在其它表达式中,而赋值语句不可以。C语言程序设计第四章顺序程序设计例:if((a=b)>0)t=a;不可写为:if((a=b;)>0)t=a;*<>C语言程序设计第四章顺序程序设计表达式中允许出现运算符号、变量、数值、函数序号语句 含义右侧表达式包括*<> 另一种形式的赋值语句 <变量><运算符>=<表达式>;C语言程序设计第四章顺序程序设计我们可以理解为:<变量>=<变量><运算符><表达式>;只适合于整型变量*<> 连续赋值语句C语言程序设计第四章顺序程序设计inta,b,c;a=b=c=1;*<> 4.3数据输入输出的概念及在C语言中的实现C语言程序设计第四章顺序程序设计 标准输入输出函数putchar输出字符,scanf格式输入,puts输出字符串getchar输入字符,printf格式输出,gets输入字符串 所谓数据的输入输出是从计算机角度出发的。 C语言本身没有I/O语句,所有I/O都由函数来实现。 C语言的标准库函数 由编译系统提供的一系列函数,以库形式存放在系统中,不是C语言文本的组成部分。 库函数已编译成目标文件(.obj),在连接阶段才与源程序编译成的目标文件相连接,生成可执行文件。 调用形式:函数名(参数表) 注意在调用C语言库函数时,需要使用编译预处理命令#include<相关的头文件>,使相应的头文件包含到用户源程序中。#include<stdio.h>或#include”stdio.h”TurboC2.0可以不加#include命令常用头文件:stdio.h定义输入输出函数string.h定义字符串操作函数math.h定义sin、cos等数学函数*<> 4.4字符数据的输入输出 putchar函数(单字符输出函数)C语言程序设计第四章顺序程序设计 输出一个字符:格式:putchar(‘字符’);或putchar(字符变量);强调:被输出的单个字符必须被‘’括起来运行结果:BOY/*例4.1putchar(‘字符’)*/#include<stdio.h>voidmain(){putchar('B');putchar('O');putchar('Y');}/*例4.1putchar(字符变量)*/#include<stdio.h>voidmain(){chara,b,c;a='B';b=‘O';c=‘Y';putchar(a);putchar(b);putchar(c);}结果当然还是一样的!*<> 输出控制字符C语言程序设计第四章顺序程序设计/*例putchar(‘控制字符’)*/#include<stdio.h>voidmain(){chara,b;a=‘O';b=‘k';putchar(a);putchar(‘\n’);putchar(b);}运行结果:Ok 输出转义字符/*例putchar()含有转义符*/#include<stdio.h>voidmain(){chara;a='B';putchar('\101');putchar(a);}运行结果:AB*<> getchar函数(单字符输入函数)。C语言程序设计第四章顺序程序设计格式:getchar();强调:输入单个字符后,必须按一次回车,计算机才接受输入的字符。#include<stdio.h>不能少!/*例4.2*/#include<stdio.h>voidmain(){charc;c=getchar();putchar(c);}运行结果:aa*<> 4.5格式输入与输出 printf函数(格式输出函数) printf函数的一般格式C语言程序设计第四章顺序程序设计格式:printf(格式控制,输出表列); 格式控制:用双引号括起来的字符串,包含两种信息 格式说明:%[修饰符]格式字符,指定输出格式 普通字符:原样输出 输出表列:要输出的数据,可以是变量或表达式,可以没有,多个时以“,”分隔)例:printf(“%d%d”,a,b);printf(“a=%db=%d\n”,a,b);*<>C语言程序设计第四章顺序程序设计/*从最简单的学起*/#include<stdio.h>voidmain(){printf(“HelloWorld!”);}运行结果:HelloWorld!*<> 格式字符 d格式符:输出十进制整数,有3种用法 %d格式:按数据实际长度输出,数据范围-32768~32767。C语言程序设计第四章顺序程序设计/*%d格式的printf()函数使用*/#include<stdio.h>voidmain(){inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);}运行结果:34a=3,b=4格式说明决定最终输出的格式格式说明应与输出列表项个数相同,顺序一致格式说明通常用小写字母表示*<> %md格式:m指定输出字段的宽度 数据位数小于m,左端补空格,反之按实际输出。C语言程序设计第四章顺序程序设计inta=123,b=12345;printf(“%4d%4d”,a,b); %ld格式:输出长整型数据 可以用%mld格式指定输出列宽longc=135790printf(“%ld\n”,c);printf(“%8ld”,c);*<> o格式符:八进制输出整数 是将内存中的二进制位整个按八进制输出,所以输出值没有符号。 可以指定输出宽度%mo,长整型可以用%lo格式输出。C语言程序设计第四章顺序程序设计inta=-1;printf(“%d,%o,%8o,%x”,a,a,a,a);输出:-1,177777,__177777,ffff x格式符:十六进制输出整数 同o格式符,无符号,即无负十六进制数。 可以指定输出宽度%mx,长整型可以用%lx格式输出。*<>C语言程序设计第四章顺序程序设计 u格式符:十进制输出unsigned型数据 int型可以用%u格式输出,unsigned型也可以用%d、%o和%x格式输出。例4.3无符号数据的输出#include<stdio.h>voidmain(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}运行结果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534*<>C语言程序设计第四章顺序程序设计 c格式符:输出一个字符 值在0~255的整数,可以用%c形式输出为字符例4.4字符数据的输出#include<stdio.h>voidmain(){charc=‘a’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}运行结果:a,97a,97*<>C语言程序设计第四章顺序程序设计 s格式符:输出一个字符串 有%s,%ms,%-ms,%m.ns,%-m.ns五种用法例4.5字符串的输出#include<stdio.h>voidmain(){printf(“%3s,%7.2s,%.4s,%-5.3d\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);}运行结果:CHINA,_____CH,CHIN,CHI__*<>C语言程序设计第四章顺序程序设计 f格式符:输出实数 %f格式:整数部分全部输出,小数6位。可以有非有效数字输出,因为单精度有效位7位,双精度16位。 %m.nf格式:占m列,其中n位小数,左补空格。 %-m.nf格式:右补空格例4.8%f格式输出实数时指定小数位数#include<stdio.h>voidmain(){flotf=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);}运行结果:123.456001__123.456001______123.46__123.46__123.46____*<>C语言程序设计第四章顺序程序设计 e格式符:指数形式输出实数 %e格式:不指定m和n,小数6位,指数部分共5位,其中e和指数符号各1位,指数值3位。 %m.ne和%-m.ne格式:m、n、-的含义同前面。没有n时,自动=6 g格式符:输出实数 可以自动根据数值大小选择f或e格式(选列少的) 不输出无意义的零*<>C语言程序设计第四章顺序程序设计inta=100;printf(“%d”,a);inta=255;printf(“%x”,a);inta=8;printf(&l
本文档为【C语言程序设计(第五版)-谭浩强】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xrp27580
暂无简介~
格式:ppt
大小:11MB
软件:PowerPoint
页数:0
分类:初中语文
上传时间:2019-04-03
浏览量:45