欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    谭浩强C语言程序设计.pptx

    • 资源ID:73622050       资源大小:1.61MB        全文页数:329页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    谭浩强C语言程序设计.pptx

    C C语言程序设计语言程序设计第一章第二章第三章第四章第五章第六章第七章第1页/共329页第一章第一章 C C语言概述语言概述 C语言 既可作为系统软件的程序设计语言,又可作为应用软件的程序设计语言。尤其是当今计算机应用极为广泛,软件的设计、编写质量要求高,经常与硬件部分打交道,如:界面设计等,所以用C语言编写是最理想的。因而C语言也是当前计算机语言中用得最广泛的语言之一。第2页/共329页 1.1 C 1.1 C语言出现的历史背景一一、操操作作系系统统的的设设计计语语言言O.S.操作系统,为用户使用计算机提供一个操作环境:系统命令、语言编程等。如:DOS.UNIX以前:O.S.软件用汇编指令编写。汇编语言:一种二进制指令代码的符号表示,既繁琐,又易出错,可读性差。改进:用C语言编写,既提高了程序的可读性,又可与硬件打交道。第3页/共329页二二、发发 展展 过过 程程 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language)1967年,Matin Richards对CPL进行改进、简化、推 出 了 BCPL(Basic Combined Programming Language)1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。第4页/共329页 美国贝尔实验室D.M.Ritchie 在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。1978年,美国Brain W.Kernighan与Dennis.M.Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。第5页/共329页 1983年,美国标准化协会(ANSI)制定了ANSI C。ANSI C 为基础:不同机器有不同版本,尤其是函数均应参考相应的机器。第6页/共329页 1.2 C语言的特点 只有通过学习,方可理解C之特点,先简叙之:1.简洁、紧凑、方便、灵活 32个关键字,9种控制语句,主要用小写字母,压缩一切不必要成分2.运算符丰富 除了最基本的、%等运算外,还将括号、赋值、类型强制转换等均作为运算符,共有34种运算符。第7页/共329页3.数据结构丰富 除基本类型外,有指针,结构体、共同体等类型。4.具有结构化的控制语句 模块完整,控制中的语句可完整化。5.语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。第8页/共329页6.可与机器硬件打交道,直接访问内存地址,具可与机器硬件打交道,直接访问内存地址,具有有“高高”、“低低”级语言之功能。级语言之功能。7.生成目标代码质量高,执行效率高。8.可移植性优于汇编语言。第9页/共329页1.3 简单的C程序介绍 为了更好、更快地掌握C程序,我们先看几个C语言程序:例1.main()printf(This is a c programn);第10页/共329页例2.main()/*求两个数之和*/int a,b,sum;/*这是定义变量*/a=123;b=456;sum=a+b;printf(sum is%dn,sum);第11页/共329页例3.main()/*主函数*/int a,b,c;/*定义变量*/scanf(%d,%d,&a,&b);/*输入变量a和b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c*/printf(max=%d,c;)/*输出c的值*/第12页/共329页 int max(x,y)int x,y;/*对形参x、y作类型定义*/int z;/*max函用到的变量z,也要加以定义*/z=y;if(xy)z=x;return(z);/*将z的值返回,通过max带回调用处*/第13页/共329页通过分析,初步看到通过分析,初步看到:1.C程序全部由一个一个的函数构成。至少有一个主函数main(),其它函数可被主函数调用或相互调用。其它函数可为C 函数库中函数,也可为自己编的函数。上述特点称为程序的模块化.第14页/共329页2.函数的构成:函数说明+函数体 函数体:变量定义与执行语句 可允许空函数:dump()函数说明包括:函数名、类型、属性、参数等第15页/共329页3.函数的执行一定从main()开始。尽管main()函数位置可自由。4.书写自由,一个语句可多行,一行可多个语句。5.每一条语句必须有一个分号;6.C语言的输入/出均以函数形式出现。scanf(),printf().7.可用/对C语言加注释第16页/共329页第17页/共329页第二章 数据类型、运算符与表达式2.1.数据类型 著名计算机科学家沃思提出:程序数据结构算法第18页/共329页 所以,存放数据的方式直接反映了一种语言的数据表达能力。数据的存储方式又称之为:数据类型。举 一个例子:以考生各科成绩及总分排队问题为列。成绩的存放 以数组形式 排队方法 算法第19页/共329页前面已述.C数据类型丰富,分为:基本类型构造类型指针类型空类型整型字符型实型单精度双精度数组结构体共用体数据有常量、变量之分,均为其中一种类型。本章先学习基本类型。枚举第20页/共329页2.2 常量与变量2.2.1 常量和符号常量常量 程序运行过程中不能被改变的量。一般的数据显式写法均表示常量。如程序中:20 整型常量 15.8 实型常量 a 字符常量第21页/共329页例:#define PRICE 30 main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);还可用一个符号表示一个常量 符号常量第22页/共329页符号常量(一般用大写,以区分变量)再如:=3.1415629#define PAI 3.1415629#define PRICE 30第23页/共329页2.2.2变量 程序执行中可以改变的量称为变量。变量包括变量名和变量值。变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。标识符 由字母、数字、下划线组成且由字母或下划线开头的字符串。第24页/共329页 标识符可用来命名变量及作为常量名、函数名、类型名、文件名等,一个程序内不得有重复名。如:_sum,sum,student_name,price等 习惯上,变量名、函数名等用小写字母表示。常量名用大写字母表示(以增加可读性)。另:需注意标识符长度,视不同系统而定。设允许8个字符。则:student_ name student_ number为同一名字。第25页/共329页C语言中,变量须先定义,后使用 如:int student student=30;则若写成student=30,则未定义,编译时指出其错。一旦变量被定义,即可在编译时为其分配相应数量的单元。一旦变量被定义,其类型便确定。则可检查其运算的合法性。如:a%b 表示a整除以b的余,则a,b必须为整型量。第26页/共329页2.32.3整型数据整型数据2.3.1 整型常量整型常量 整型常数C语言提供了三种形式 十进制 如:256,308,120等第27页/共329页 八进制 以数字0开头表示的整数 例:0235,0146 012等.0235=28238515710 014618248610210 012(182)1010十六进制 以0 x开头的整型数 如:0 x16,0 x28第28页/共329页2.3.2 整型变量一、分类:一、分类:分为四种:基本型、短整型、长整型、无符号型 2.短整型:用short int或 short定义 3.长整型:用long 或 long int 定义 1.基本型:用int定义第29页/共329页 4.无符号型:不存放符号,则不带符号数.又分无符号整型,无符号短整型,无符号长整型。上述各种类型所占内存单元数及取值范围视不同机器而不同。详见P13。第30页/共329页二、定义方法二、定义方法 整型变量分别以下列方式定义2.短整型 short int 或 short a,b,c;3.长整型 long int 或 long a,b,c;1.基本整型:int a,b,c;第31页/共329页4.无符号型 unsigned a,b,c;unsigned short a,b,c;unsigned long a,b,c;例:main()int a,b,c,d;/*指定a,b,c,d为整型变量*/unsignd u;/*指定u为无符号整型变量*/a=12;b=24;u=10;第32页/共329页 c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);由此看到:不同类型的整型数据可进行算术运算。但有一定规则,见2.7.运行结果为 a+u=22,b+u=14第33页/共329页三、关于整型常量三、关于整型常量 程序中出现的整型常数,系统按以下规则分配变量(内存单元)或赋值给相应变量 2.若超越,而在21474836482147483647之间,则可赋给 long int 变量。1.当常数(量)在 3276832767之间,则可赋给int,long int 变量。第34页/共329页4.一个非负整数,=,=,!=第56页/共329页4.位运算符 ,&.5.赋值运算符 =等6.条件运算符?等7.逗号运算符 ,8.指针运算符 *,&第57页/共329页11.分量运算符 ,12.下标运算符 13.其它运算符 如函数的调用()9.求字节数运算符 size of 10.强制类型转换运算符 (类型)第58页/共329页 2.8.2 算术运算符和算术表达式一、基本算术运算符+加法 正值 3+6,+3 减法 负值 6 4,5 乘法 38/除法 8/5%求余 7%4 的值为3第59页/共329页注:两个整型数据相除(结果为整,一般向零靠拢)。5/3 1“/”中,有一个 float,则结果为double型,使用时千万注意 int/int 出现数据丢失。第60页/共329页二、算术表达式及算术运算符的优先级与结合性运算对象:常量、变量、函数等优先级:(),/,%,+,结合性:同一优先级,自左向右,为左结合性,反之为右结合性。例:a b/c 1.5+ad e 当类型不同的数据进行运算时,按2.7介绍的类型转换。算术表达式:用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子。第61页/共329页三、可利用强制类型转换运算符将一个算术表达式转换为所需类型形式:(类型名)(表达式)例如:(double)a 将a转换为double(int)(x+y)将x+y转换为int(float)(5%3)将5%3转换为float第62页/共329页注:1.括号不能省略。如:intx 会理解为变量intx.2.转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变。float x;又如:(int)(x+y)若省略:(int)x+y会变成将x转成整型.(int)x;则x本身仍为实型,而(int)x由一个中间变量(整)存放x的整数部分。第63页/共329页例:main()float x;int i;x=3.6;i=(int)x;printf(x=%d,x,i);则:x=3.600000,i=3.第64页/共329页总结以上类型转换,有二种:1.强制另:强制类型转换运算优先于算术运算符.2.系统自动如:若x为float,则x%3不合法。但可用(int)x%3来解决。(附录III介绍了优先级)第65页/共329页四、自增,自减运算符设有int i=3;+自增1 自减1则:+i,i+都会使i变为4,但有区别:+i:先使i值+1,再使用i值;i+:先使用i值,再使i值+1.j=+i;j=4,i=4.(i=i+1;j=i;)j=i+;j=3,i=4.(j=i;i=i+1)第66页/共329页同理:i,i ,均使i值1,但:又如:printf(i=%dn,i+);结果:i=3若:printf(i=%dn,+i);结果:i=4 i:先使i值1,再使用i值;i :先使用i值,再使i值1i=3;第67页/共329页几点注意:1.+和 运算法只能用于变量,不得用于常量和表达式.2.+,的结合性为从右至左,而一般算术运算符为从左至右。如:如 5+,(a+b)+均为不合法.i+和+为同一优先级.i+相当于(i+)若 i=3,则结果为3,i为4.+,主要用于循环变量自增或自减。第68页/共329页1.要慎用+、运算符。五、有关表达式使用中的问题说明则:先对i进行3次自加,为6,然后三个i相加为18,而i为6。如:表达式(i+)+(i+)+(i+)(i=3)一般认为:从左至右:3+4+5=12,i6.但Turbo C.MSC 都是先取三个原值相加:i+i+i=9 i6如果表达式数为:k=(+i)+(+i)+(+i)第69页/共329页2.在表达式中,有的运算符为一个字符,有的为两个字符。3.在函数调用时,如:一般地:自左至右尽可能多地将若干字符组成一个运算符。例:i+j,究竟理解为(i+)+j还是i+(+j)?printf(%d,%d,i,i+);若i=3,若参数计算从左至右,则输出 3,3若从右至左,则输出4,3上述问题看似复杂,最好上机实践.第70页/共329页2.9 赋值运算符和 赋值表达式符号=为赋值运算符。2.整型数据赋给实型变量,数值不变,但按实数形式存放.1.将实型数据(无论单,双精度)赋给整型变量时,舍弃小数.赋值时,两边类型若不一致,则按以下规则转换:第71页/共329页4.将intlong int,进行符号扩展。即:符号扩展,低16位long 的低16位。5.long int int 则高16位截断。3.字符型数据赋给整型变量时:(2)字符带符号整型变量,则字符高位扩展。(1)字符无符号整型变量,则存入低8位,高8位补零。第72页/共329页6.将unsigned int 型long int高位补0。原值传送,但数据大小不能超值。如:unsigned int a=65535;int b;b=a;则越界。而位数相同部分赋值 unsigned int int unsigned long long unsigned short short第73页/共329页7.非unsigned 型长度相同的unsigned型数据,原样传送(包括符号位)一、复合赋值运算符:在 号之前加一个其它运算符。C语言规定:凡是二目运算符均可构成复合运算符。例:a+=3;相当于 a=a+3 x=y+8;相当于 x=x(y+8)x%=3;相当于x=x%第74页/共329页一般形式:二、赋值表达式例:x=10 为一赋值表达式 其中又可以是一个赋值表达式。例:x=(y=10)相当于 y=10;x=y 由于赋值号为右结合性,于是()可省略,即为:x=y=10;第75页/共329页例:a+=a =aa (设a12)又:a=5+(c=6)c=6,a=11 a=(b=4)+(c=6)b=4,c=6,a=10 a=(b=10)/(c=2)b=10,c=2,a=5进一步,还可用复合赋值运算符作下列运算:步骤:aa144.a =a a a=a a a=12 144=132 a+=132 a=a+(132)=264第76页/共329页2.10 逗号运算符和逗号表达式 一般形式:表达式1,表达式2其计算规则:先计算表达式1,再计算表达式2,最后值为表达式2的值。例:a=35,a 4 则:先计算3 5,a15,a 4=60,结果为60。第77页/共329页又如:(a=35,a 4),a+5 扩展形式:表达式1,表达2,表达式n,结果为20(作为逗号表达式的值)a+5a 即 20a.3 5=15a a 4=60 (此时a值仍未变)结果为表达式n的值 第78页/共329页注意:x=(a=3,63)赋值表达式,x18;x=a=3,6 a 逗号表达式,x3.逗号表达式主要用于某些语句中需一次计算多个表达式值的情况。如在循环语句中。函数调用中的实参之间虽然用的是逗号间隔,但不是逗号表达式。如:printf(%d,%d,%d,a,b,c);第79页/共329页第80页/共329页第三章 最简单的C程序设计3.1 C语句概述 C语句全部为可执行语句,对应若干机器操作指命令C程序由许多源文件组成。(分别编译,然后连接)每一个源文件由预编译命令和若干函数组成。每一个函数由说明部分和语句部分组成。第81页/共329页其结构如图除说明部分外,重要部分为语句部分。C 程 序源程序文件1源程序文件i源程序文件n预编译命令函 数1函 数n说 明 部 分执行部分(语句)第82页/共329页C 语句分为五类1.控制语句改变语句的执行顺序共有9种控制语句:if()else (条件)for()(循环)while()(循环)do while (循环)第83页/共329页 continue (结束本次循环)switch (多分支选择)break (中止整个循环)goto (转移)return (函数返回)()表示条件,表示语句第84页/共329页2.函数调用语句3.表达式语句printf();表达式加;如:i=i+1;i+;x+y;其函数调用也可理解为表达式语句.第85页/共329页5.复合语句4.空语句 ;任何事情都不做.用 括起来的一系列语句。如:z=x+y;t=z/100;printf(%f,t);第86页/共329页3.2 3.2 程序的三种基本结构程序的三种基本结构 从结构化程序设计角度出发,程序有三种结构:顺序结构选择结构循环结构第87页/共329页1.顺序结构表示ABAB先执行A,再执行B.第88页/共329页2.选择结构表示为ABPTFB TPFA存在某条件P,若P为真,则执行A,否则执行B。第89页/共329页3.循环结构表示为PFTAAP为T(1)当型结构 当P条件成立时(T),反复执行A,直到P为“假”时才停止循环.有两种结构:当型和直到型第90页/共329页(2)直到型APFTA直到P为真 先执行A,再判断P,若为F,再执行A,如此反复,直到P为T.第91页/共329页 另外:由选择结构可以派生出另一种基本结构多分支结构.KK=K1A1A2AiAnK=K2K=Ki 已证明:上述三种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述三种结构。第92页/共329页3.3 3.3 赋值语句赋值语句 由赋值表达式加分号;构成,与其它高级语言相比有以下不同点:“=”为一运算符,由此,构成一赋值表达式,可出现于表达式能出现的任何地方:if (a=b)0)t=a;第93页/共329页3.4 3.4 数据输出数据输出 前面已论述:C语言本身无输入/出语句,由函数实现,如printf.等。一般:C语言提供了一些标准的输入/出函数系统函数。第94页/共329页形式:putchar(c);功能:向终端(一般为显示器)输出一个字符,其中c为 字符型或整型变量注意:用该函数时,须用预编译命令:#include stdio.h 3.4.1 putchar 函数 字符输出函数第95页/共329页举例:#include stdio.h main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(C);结果:BOY第96页/共329页 putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);*利用putchar还可输出其它转义字符结果:B O Y putchar(101);输出Aputchar();输出putchar(015);输出*若将最后一行改为:第97页/共329页3.4.2 printf 函数格式输出函数一、printf的一般形式 是C语言中使用得最多的一种输出函数,它可一次按格式输出多个不同类型的数据。printf(格式控制序列,输出表列);输出表列 用“,”号隔开的变量或表达式序列,其变量的值按对应的格式控制符所指定的格式输出。第98页/共329页格式控制序列用双引号“.”括起来的格式符序列。格式控制序列由格式说明符和普通字符组成。2.普通字符 原样输出1.格式说明符:由%接格式字符组成 如:%f,%d等第99页/共329页例:a=3;b=4;printf(a=%d,b=%d,a,b);结果:a=3,b=4无论 a,b中位数多少,均为上述形式:a=123 b=45第100页/共329页二、格式字符 如直接用%d,则将出错。不同类型的数据输出,用不同格式字符:1.d格式符十进制整数输出。(1)%d:按数据的实际长度输出。(2)%md:m表示输出字段宽度。若实际位数m,则m自动取n值,即保证n个字符正常输出。(2)%ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。第109页/共329页7.f格式符以小数形式输出单、双精度实数,有以下几种形式:%m.nf,指定输出的数据共占m列,其中有n位小数。如果值长度小于m,则左端补空格。%mn.f,与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。%f%m.nf%m.nf第110页/共329页8.e格式符以指数形式输出单,双精度实数基本形式:%e结果:1.23456共13列6例5例可有%m.ne和%m.ne的形式9.g格式符根据实数大小自动选择f格式,或e格式输出单双精度实数。e+002例:printf(%e,123.456)第111页/共329页表3.1 printf格式字符总结格式字符d以带符号的十进制形式输出整数(正数不输出符号)oxucsfeg以8进制无符号形式输出整数(不输出前导符0)。以16进制无符号形式输出整数(不输出前导符0 x)。以无符号10进制形式输出整数。以字符形式输出,只输出一个字符。说明输出字符串。以小数形式输出单、双精度数,隐含输出6位小数。以标准形式输出单、双精度数,数字部分小数位数为6位。选用f或%e格式中输出宽度较短的一种格式,不输出无意义的0。第112页/共329页 许多情况与具体机器或系统有关,最好机器上一试。表3.2 附加格式说明字符字符说明用于长整型整型,可加在格式符d、o、x、u前面。数据最小宽度对实数,表示输出n位小数;对字符串,表示截取的字符个数。输出的数字或字符在域内向左靠。m(代表一个正整数).n(代表一个正整数)字母1第113页/共329页3.5 3.5 数据输入数据输入 系统提供了若干函数,以提供从标准输入设备(键盘)上输入数据.3.5.1 getchar 函数本节先介绍两个输入函数.形式:getchar()功能:从标准输入装置(键盘)上输入一个字符要求:有#include stdio.h预编译命令第114页/共329页例:#include stdio.h main()char c;c=getchar();putchar(c);第115页/共329页3.5.2 scanf函数函数功能:在标准输入装置(键盘)上按指定格式 输入各种类型的数据地址表列变量的地址或字符串首地址。形式:scanf(格式控制序列,地址表列)格式控制序列同printf(.)第116页/共329页例:main()int a,b,c;scanf(%d%d%d,&a,&b,&c);prinft(%d,%d,%dn,a,b,c);运行,机器等待你输入:3 4 5 结果 3,4,5第117页/共329页注意:1.scanf函数顺用地址量接受数据。2.输入数据的间隔为,Tab.空格,不能为“,”.3.允许在格式符中插入附加字符。格式字符及附加字符的定义如下表3.3和表3.4第118页/共329页表3.3 scanf格式字符格式字符d用来输入十进制整数。oxcsfe用来输入八进制整数。用来输入十六进制整数。用来输入单个字符。说明用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志 0作为其最后一个字符。用来输入实数,可以用小数形式或指数形式输入。以f作用相同,e与f可以互相替换。第119页/共329页表3.4 scanf附加的格式说明字符字符说明用于输入长整型数据(可用ld,%lo,%lx),以及double型数据(用%lf或%le)。用于输入短整型数据(可用%hd,%ho,%hx)。指定输入数据所占宽度(列数)。表示本输入项在读入后不赋给相应的变量。h域宽(为一正整数)*l第120页/共329页4.对于输入unsigned型数据,不用%u,而用%d,%o,%x.5.指定数据长度时,系统自动截取。则当输入123456时,scanf(%3d%3d,&a,&b);a12,b34第121页/共329页7.输入数据不能规定精度.6.在%后加“*”表示跳过相应的数据则当输入为12 345 67则a12 b67scanf(%2d%*3d%2d,&a,&b);scanf(%7.2f,&a);是错误的第122页/共329页8.在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入。例:scanf(%d,%d,&a,&b);则必须输入 21,28又如:scanf(a=%d,b=%d,c=%d,&a,&b,&c);则输入:a=34,b=58,c=100第123页/共329页3.6 3.6 程序举例程序举例例1:输入三角形三边,求三角形面积。例2:输入一个大写字母,要求系统改为小写字母输出。例3.当b24ac0时,求ax2+bx+c=0的两个根。第124页/共329页第125页/共329页 在C程序的三种结构中,分支结构是一重要结构,其中的P为条件问题:条件如何表达?逻辑运算、关系运算第126页/共329页4.1 关系运算符 关系运算比较运算,如:a3为一比较运算,当a=5,a3成立。结果称为“真”,否则,如:a=1,a3不成立,为假。上述表达式a3称为关系表达式。第127页/共329页4.1.1 关系运算符及其优先次序1.,=为同一优先级,=,!=等为同一优先级,但前者高于后者。2.关系运算符优先级低于算术运算符。C语言提供了六种关系运算符 =!=优先级为:第128页/共329页3.关系运算符优先级高于赋值运算符。如下图:算术运算符赋值运算符关系运算符高低举例:ca+b c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)第129页/共329页4.1.2 关系表达式关系表达式的结果值规定为1或0.如:ab,a+bb+c,(a=3)(b=5),a b,(ab)(bb)=c 成立 1b+cb 则ab值为1,所以d=1.f=abc ab为1,abc为0,所以f=0.第131页/共329页4.2 4.2 逻辑运算符和逻辑逻辑运算符和逻辑 表达式表达式 用逻辑运算符将关系表达式、逻辑表达式连接起来的式子逻辑表达式。第132页/共329页4.2.1 逻辑运算符及优先级 a b !a !b a&b a b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假三种:&(与),(或)!(非)其意义见真值表第133页/共329页a&b 当a,b均为1时,才为1a b 当a,b中有一个为1时,才为1!a 当a为1,!a为0,反之为1.由此看到:和&为双目运算符.!为单目运算符。第134页/共329页优先级定义:2.&和低于关系运算符。!高于算术运算符1.!(非)优先于&(与).&优先于即:!&例:!a&b xy&c (!a)&b)(xy)&c)第135页/共329页4.2.2 逻辑表达式 1.逻辑表达式的值与关系表达式值一样,真为1,假为0。例:a=4 则!a 值为0.此处只要a 0,为真.则!a值为0.a=4,b=5 a&b为1 前面已定义了逻辑表达式,以下看一看逻辑表达式的值及具体的运算。第136页/共329页 4&0 2 为1.总之,在逻辑运算中,非0值参加逻辑运算时被看成1处理.a=4,b=5 a b为1 a=4,b=5!a b为1第137页/共329页2.一个逻辑表达式中的逻辑运算符并不是一定全部执行.一个实际的例子:判断年号是否为润年。如:a&b&c.则当a=0(假)时,b,c不需判断。当a=1,b=0,则不需判c.又如:a b c.当a=1时,b,c均不必判别。润年的定义:能被4整除且又能被400整除。年号能被4整除但不能被100整除。第138页/共329页 当(year%4!=0)(year%100=0&year%400!=0)为1时,year为非润年。设用变量year表示年号 当(year%4=0&year%100!=0)year%400=0)为1时,year为润年,否则为非润年。如果要判别非润年可在上述表达式前加非(!)运算符.当!(year%4=0&year%100!=0)year%400=0)为1时,year为非润年。或者:即:则:第139页/共329页4.3 if 4.3 if 语句语句条件条件判断判断4.3.1 ifif的三种形式 功能:当表达式值非0时,执行语句A,否则不执行语句A.表达式语句A00例如:if(xy)printf(%d,x)形式1 if(表达式)语句A其流程图:第140页/共329页形式2 if(表达式)语句A else 语句B功能:表达式为非0,执行语句A 表达式为0,执行语句B表达式语句A语句B 0=0例:if(xy)printf(%d,x);else printf(%d,y);第141页/共329页形式3 if(表达式1)语句1 else if(表达式2)语句2else if(表达式3)语句3 else if(表达式n)语句nelse 语句n第142页/共329页流程:表达1表达2表达3表达n语句1语句2语句3语句n语句n语句1 0=0=0 0 0 0第143页/共329页如:if(3)prinft(o.k);if(a)1.表达式可以是逻辑、关系,甚至是算术表达式。2.上述形式中的语句必须以分号结束 3.上述形式中的语句可以是由 括起来的复合语句。此时,在 外可以不用分号.注意的问题:第144页/共329页main()float a,b,t;scabf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2f,a,b);例4.1 输入两个实数,按代数值由小到大次序输出这两个数。第145页/共329页 3.6,3.2 3.20,3.60运行情况如下:第146页/共329页例4.2 输入三个数,按大小顺序输出。main()float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;第147页/共329页 if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);运行情况如下:3,7,1 1.00,3.00,7.00第148页/共329页4.3.2.if语句的嵌套if(表达式1)内嵌ifelse内嵌注意:else与最近的if 配对.一般形式 在上述形式的if语句中,又可以是if语句称为嵌套。if(表达式2)语句1if(表达式3)语句3else 语句2else 语句4第149页/共329页例:if()if()语句2else 语句3if ()if()语句1 else 所以:必要时加.if()语句1else第150页/共329页例4.3 有一函数y=1 (x0)编一程序,输入一个x值,输出y值。有以下几种写法,请判断哪些是正确的?程序1:main()int x,y;scanf(d,&x);第151页/共329页 if(x=0)if(x0)y=1;else y=0;else y=1;第152页/共329页程序3:将上述if语句改为:y=1;if(x!=0)if(x0)y=1;else y=0;程序4:y=0;if(x=0)if(x0)y=1;else y=1;第153页/共329页4.3.3 条件运算符 C语言提供了一个简单的条件赋值语句或条件表达式。问题:当判断条件不论是“真”是“假”,均给同一变量赋值时,能否简化语句书写?条件运算符为?:三目运算符。第154页/共329页功能:先判表达式1,若非0,则值为表达式2的值,否则为表达式3的值。一般形式表达式1?表达式2:表达式3 max=ab?a:b;当ab.max a.否则maxb第155页/共329页注:1.条件运算符优先于赋值运算符.例:max=(ab?a:b)可去掉()2.条件运算符低于关系运算符和算术运算符。例:max=ab?a:b+1 max=ab?a:(b+1)并不是 max=(ab?a:b)+1 3.条件运算符结合性为从右至左.如:ab?a:cd?c:d 相当于 ab?a:(cd?c:d)第156页/共329页4.条件表达式不能取代一般的if语句,只有当if 的两 个分支为给同一变量赋值时才可替代if.if(ab)printf(%d,a);else printf(%d,b)由于printf.不是表达式,故不可用条件表达式,但可为:printf(%d,ab?a:b);第157页/共329页5.表达式1、表达式2、表达式3可类型不同。main()char ch;scanf(%c,&ch);ch=(ch=A&ch=Z?(ch+32):ch;printf(%c,ch)例4.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。第158页/共329页运行结果如下:A a第159页/共329页4.4 switch 4.4 switch 语句语句开关语句开关语句 问题:当某一表达式有n个取值,每一取值执行一语句,则如果用内嵌if十分繁锁,而用switch简单.一般形式:switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default :语句n+1 第160页/共329页例:根据成绩等级打印百分数段.switch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);break;case D:printf(60n);break;第166页/共329页4.5 4.5 程序举例程序举例例1 写一程序,输入年号,判断是否为闰年。1.算法:根据闰年的判断条件 当年号能被4整除但不能被100整除时,它为闰年。当年号能被100整除又能被400整除时,它为闰年。第167页/共329页 设用变量year表示年号,leap为待置值变量,当year为闰年:leap1,否则leap0.输入yearyear%4=0year%100=0leap0leap1yesANoNoyes 2.流程图第168页/共329页leap%400=0leap1leap=0打印非闰年打印是闰年结束leap1yesNoyesNoA第169页/共329页3.程序:main()int year,leap;scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;else leap=0;第170页/共329页 else leap=1;else leap=0;if(leap)printf(%d is,year);else printf(%d is not,year);printf(a leap yearn);第171页/共329页运行情况如下:2000 2000 is a leap year1989 1989 is not a leap year第172页/共329页 上述条件也可用一个

    注意事项

    本文(谭浩强C语言程序设计.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开