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

    二级C语言程序设计知识点.pdf

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

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

    二级C语言程序设计知识点.pdf

    目录第一章C 语言基础知识.1第 一 节 C语言的基本构成.1第二节整型数据.3第三节 实型数据.6第四节字符型数据.7第五节 算术表达式.9第六节赋值表达式.10第七节自加表达式.12第八节逗号表达式.14第二章顺序结构.15第一节表达式与语句.15第二节 数据输出.16第三节数据输入.19第三章 选择结构.22第一节关系运算符、关系表达式.23第二节、逻辑运算符和逻辑表达式.23第三节 i f 语句.24第四节 条件运算符与条件表达式.27第 四 节 sw itch语句及其构成的选择结构.28第五节 goto 语句.29第四章 循环结构.30第一节 w hile语句及其构成的循环结构.30第二节 do-while语句及其构成的循环结构.31第三节 fo r语句及其构成的循环 结 构(重点章节).31第 四 节 循 环 的 嵌 套.33第五节 break语句和continue语句在循环体中的运用.34第 五 章 指 针.36第一节 变量的地址.36第二节 指针变量的介绍.36第三节 对指针的具体操作.38第 六 章 数 组.40第一节 一维数组.40第二节 一维数组与指针.42第三节 二维数组.43第四节二维数组和指针.45第 七 章 函 数.48第一节 函数的定义.48第二节 函数的返回值.49第 三 节 库 函 数.50第 三 节 调 用 函 数.51第 四 节 函 数 的 声 明.52第八章 函数与指针、数组关系.54第一节 函数的参数传递.54第 二 节 指针与函数的关系.55第三节 一维数组与函数.57第四节 二维数组与函数.59第九章字符串.61第一节字符串与字符数组.61第二节 处理字符串的方法.62第三节字符串的输入和输出.63第四节字符串数组.64第五节用于字符串处理的函数.65第十章 对 C语言的深入讨论.67第一节 对函数的进一步讨论.67第 二 节 C语言中用户标识符的作用域.68第四节动态存储分配.71第五节 用户定义类型.72第六节 编译预处理.72第 七 节 位 运 算.74第十一章 结构体与共用体.76第一节 结构体.76第二节结构体的初始化和调用.80第三节 函数之间结构体变量的数据传递.81第四节、用结构体构成链表.85第 五 节 共 用 体.87第十二章 文件.90第 一 节 C语言文件的基本概念.90第二节文件指针以及打开与关闭.90第三节 文件定位相关的操作.92第四节对文件的具体操作.94附录.98C 语言中的关键字.98C 语言运算符优先级.98第一章C语言基础知识该章内容:本章是整个C语言最基础的部分;表达式是C语言的核心,本章会学习到不同的表达式。学习方法:对关键的知识点一定要多背,把最基础的习题多做几遍,在以后的学习中要多次反回来复习,加深印象。第一节C语言的基本构成知识点:c语言的注释;关键字;书写风格;常量和变量重要程度:1、C语言的良好风格用 C 语言编写的程序,称为C 语言源程序,简称C 程序。本节将通过一个简单的C 程序例子,向大家介绍C 语言的一些基本构成和如何写出风格良好的程序,使读者对C 语言有一个初步的认识。例 I:计算两个整数之和的C 程序f t i n c l u d e s t d i o.h m a i n()(i n t a,b,s u m;a=1 0;b=2 0;s u m=a+b;/*求两数之和*/*变量说明*/*把整数1 0 赋值给变量a */*把整数2 0 赋值给变量b */*把两数之和赋值给变量s u m */p r i n t f (a=%d,b=%d,s u m=%d n/,a,b,s u m);/*把计算结果输出到用户屏幕上*/好的风格:1.花括号独占一行,有对应关系的花括号在同一列;2.有层次关系的代码有必要的缩进;3 .一条语句独占一行4 .有适当的注释2、关于注释的说明(考点一)令 程序中以“/*”开头并且以“*/”结尾的部分表示程序的注释部分。令注释可以加在程序的任何位置。令 注释是为了提高程序的可读性而增加的,不属于C 语言。令/*/*d d d d d d d*/*/这样的注释不是合法的。注释是从/*”开始到”*/“结束的。以该例为准,属于注释的就是/*/两个之间的/*d d d d d d d,所以最后剩下的*/就是多余了。例 1:阅读以下程序,想一想结果是多少?mai n()i n t a=0,b=0;a=1 0;/*给 a 赋值b=20;给 b 赋值*/p r i n t f (,/a+b=%d n/z,a+b);/*输出计算结果*/这是20 0 6 年9 月全国计算机等级考试二级考试的第1 9 题。需要特别注意的是,程序第三行“/*”开始的注释部分,直到第四行末尾才结束。因此上面的程序等价于以下的程序:mai n()i n t a=0,b=0;a=1 0;p r i n t f (,a+b=%d n,/,a+b);3、标 识 符(考试重点)在C 语言中用于标识名字的有效字符序列称为标识符。标识符可以用作常量名、变量名、符号名、函数名和后面要学到的指针名、数组名等。C语言中标识符的命名规则如卜:1)标识符只能由字母、数字和下划线组成;2)标识符的第一个字符必须是字母或下划线。3)标识符区分大小写字母。如 i n t 与 I n t 是两个完全不同的标识符。合法的标识符:a x s um s p e l s p r o g r am ab l _ t o f i l e _ 5 al b 2c 3 _ 2 B 3非法的标识符:ab l 2#(含有不合法的字符“#)al-c (含有不合法的字符ab c (空格不是合法标识符)i r r (“兀”不是字母,为不合法标识符字符)23 ab (第一个字符不能为数字)C 语言的标识符分为如下三类:1)关键字关键字是具有特定含义的、专门用来说明C 语言特定成分的一类标识符。关键字均由小写字母构成。I n t 就不是关键字。2)预定义标识符预定义标识符(如 p r i n t f,s c an f,s i n,i s al um等)和编译预处理命令名(如 d e f i n e,i n c l ud e 等)。注意,预定义标识符可以作为“用户标识符”使用。3)用户标识符(考试重点)不能是关键字;只能由字母、数字和下划线组成;第一个字符必须是字母或下划线。I n t 可以作为用户标识符,i n t 就不可以作为用户标识符。考点:L 识别哪些是(或不是)标识符2.识别哪些是(或不是)用户标识符例 2:以下不能定义为用户标识符的是A)s c an f B)V o i d C)_ 3 c o m_ D)in t分析:本题答案选D。因为in t 是关键字,关键字不能作为用户标识符。答 案(A)的 sc a n f 虽然是预定义标识符,但是预定义标识符可以作为用户标识符使用。(B)中 V o id 的第一个字符V大写,它与关键字v o id 是两个不同的标识符,故它可以作为用户标识符。(C)中的一3 c o m 一符合标识符的命名规则,且不是关键字,故可以定义为用户标识符。例 3:以下不合法的用户标识符是A)j2_ KE Y B)D o u b l e C)4 d D)_ 8 _分析:本题答案选C。答 案(A)是一个用户标识符,符合标识符的命名规则。答 案(B)也是用户标识符,需要注意的是,它与关键字d o u b l e 是两个不同的标识符。答 案(D)是用户标识符,由数字和下划线组成,且第一个字符为下划线。只有答案(C)是不合法的用户标识符,因为它的第一个字符是数字,不符合标识符的命名规则。标识符的常见错误:1.数字开头2.包含减号“-”3 .用户标识符使用的是关键字4、常量。C 语言中,还有另外一种常量是用标识符命名的,称为符号常量。下面程序的PI 就是符号常量。例 4:计算圆面积的C 语言程序f t d e f in e PI 3.14 15 9m a in()f l o a t r,a re a;r=12.5;a re a=PI*r*r;p rin t f (z/a re a=%f nz,,a re a);)程序的第一行是宏定义,以后遇到PI 就用其后的内容3.14 15 9 来原样替换。这里的PI 就是一个符号常量。通常,符号常量用大写字母表示,但这并不是语法上的要求,只不过用大写字母书写符号常量,便于辨认。当进行宏定义后,程序中只要用到相应的数值常量都可以用符号常量代替,这就给程序的修改提供了方便。例如,如果需要进一步提高圆周率的精度,可以直接修改宏定义中的数值常量:t t d e f in e PI 3.14 15 9 26这样,程序中只要用到PI 的地方,其值都自动变为3.14 15 9 26。5、变量与常量对应的是变量。顾名思义,变量就是在程序的运行过程中其值可以改变的量。例 1 中的a,b 都是变量,它们是由用户定义的标识符,变量的命名必须遵循标识符的命名规则。用盒子的理论来描述:1)变量就是盒子,里面装的内容可以改变。2)通过赋值语句就可以改变盒子里的内容。3)每次使用盒子时,盒子里都应该有确切的内容而不能是不确定的值。4)每次使用盒子时,都是用的现在盒子里装的内容。以前装过什么内容没有任何影响。第二节整型数据知识点:进制的转换;整型的定义和使用;重要程度:在 C 语言中,有三种基本的数据类型,它们是整型、实型和字符型。1、数制转换二进制的数,基为二,某位出现的最大数字是2-1=1;八进制的数,基为八,某位出现的最大数字是8-1=7;十六进制的数,基为十六,某位出现的最大数字是f (相当与十进制的1 5)。在十六进制中,数字由十六个代码组成,分别是0 9 和 A F (或者是a f)这十六个代码。表 1 列举出十进制数字从0 1 5 时,相应的二进制、八进制和十六进制数字。(同列的为一组,表示相同的值)表 11进制、二进制、八进制和十六进制对照表十进制01234567二进制011 01 11 0 01 0 11 1 01 1 1八进制01234567十六进制01234567十进制891 01 11 21 31 415二进制1 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1八进制1 01 11 21 31 41 51 61 7十六进制89ABCDEF十进制的数字在我们日常生活中普遍使用,然而在计算机内部,数字均以二进制形式表示和存放。引例:(1)将任意进制的数转换为十进制数:将这个数按照引例中的方法展开。注意底数使用的是该进制的基。使用以上的方法,我们再来看两个例子:(2 3 E),6=2 X 1 6-+3 X 1 6 +1 4 X 1 6 =(5 7 4)1 0(1 1 1)2=1 X 22+1 X 2 +1 X 2 =2-1 =(7)1 0(2)将十进制数转换成任意进制数十进制数转换成二进制数的规则为:将十进制的数字除以2,得到的商数继续除以2,直到商为0,然后将各次相除所得的余数从后往前排列,就得到该十进制数转换成的对应的二进制数。例如,将十进制数1 3 转换成二进制数的过程如下:2 1 1 32_ 6 12|3 02|1 10 .1所得的余数从后往前排列,得到二进制数1 1 0 1,与表1 中的一致。同理,可以得出将十进制数转换为任意进制数的规则。例如,将十进制数1 3 转换成八进制数的过程如下:8|1 38 _ _ _ 1 .50 .1所得的余数从后往前排列,得到二进制数1 5,与表1 中的一致。(3)二进制与八进制、十六进制之间的转换从表1 中可以看出,每个八进制数的单个数字都可以用三位二进制数来表示,最大的八进制单个数字7等于最大的三位二进制H1,最小的八进制单个数字。等于最小的三位二进制0 0 0。因此,每个八进制数的单个数字都可以用三位二进制数字来表示,即 2 J 8。同样,每个十六进制数的单个数字都可以用四位二进制数来表示,即2 =1 6。例如,将八进制数1 3 转换成二进制数的过程如下:(1 3),=(0 0 1 0 1 1)2从以上的转换过程看出,将每个八进制数字转换成了三位二进制数字,1转换成0 0 1,3转换成0 1 1,因此八进制1 3 对应的二进制数字为1 0 1 1 c现举例说明将十六进制数数E 3 转换成二进制数的过程:(E 3),6 =(1 1 1 0 0 0 1 1)2从表1 可以看出,十六进制数字E 等于二进制的1 1 1 0,3 等于二进制的0 0 1 1,于是十六进制数字E 3 等于二进制数字1 1 1 0 0 0 1 1。反过来,将二进制转换成八进制、十六进制,只需将从右边起的每三位或者每四位二进制数转换成对应的八进制数或十六进制数。进制的常见错误:1 .八进制数据中出现8,甚至是9.2 .十六进制中,把 1 5 当成一个字符(实际上应该是f)。2、整型常量 在 C 语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。注意,在 C语言中没有直接表示二进制的整型常量。(常考)(1)十进制整型常量由一串连续的0 9 数字组成。如:0、1 2 0、3 6 5、-1 2 等。(2)八进制整型常量以数字0 开头,其中的数字为0 7。如:0 1 1 2 (十进制7 4)、0 1 2 3 (十进制8 3)、0 7 7 (十进制6 3)等。(3)十六进制整型常量以Ox(数字0 和字母x)或 0X开头,其中的数字可以是0 9、a f 或 A F中的数字或英文字母。如:0 x 1 1(十进制1 7)、0 x a 5(十进制1 6 5)、0 X 5 a(十进制9 0)等。整型常量又分为短整型(s h o r t i n t)、基本整型(i n t)、长整型(l o n g i n t)和无符号整型(u n s i g n e d)等几类。例 1:以下选项中可作为C语言合法整数的是A)1 0 1 1 0 B B)0 3 8 6 C)OX f f a D)x 2 a 2分析:本题答案为C。选 项(A)不是C 语言中三种整型常量之一。选 项(B)不是合法的八进制整型常量,因为八进制整型常量中不可能出现“8”字符。选 项(D)中x 2 a 2 前加上“0”就是一个合法的十六进制整型常量。3、整型变量整型变量是用于存放整型值的变量。对应于整型常量,整型变量也可分为短整型(s h o r t i n t)、基本整型(i n t)、长整型(l o n g i n t)和无符号整型(u n s i g n e d)四种。定义基本整型变量用关键字i n t,形式如下:i n t i;i n t 类型所占据的字节长度因不同类型的机器或编译器而有所不同:如果使用V C+6.0,则会为i n t 型变量分配4 个字节长度的存储单元。我们使用的将是这种情况。如图1 所示。图中表示对定义的i n t 型整型变量i 分配了四个字节的存储单元,这个存储单元的名字为i,里面的内容不确定。图1计算机系统为整型变量i分配的内存空间当对变量i 赋值时,这个值就存储在这个存储单元中。例如,执行了赋值语句:i=6;则变量i 的存储单元变为如图2 所示的情况。图2十进制整数6存放在变量i的内存空间中的形式1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0正如读者所知,在计算机中实际上是以二进制形式存储数据的,所以在变量i 的存储单元中存放的是四个字节的二进制数0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 (十进制6)。c 语言中规定,在定义变量的同时给变量赋初值,称为变量初始化。例如:m a i n()i n t a=2,b=3,c=4;表 2 不同类型的整型数在内存中所占用的字节数和数值范围数据类型关键字占用的字节数数值范围短整型s i g n e d s h o r t i n t 2-3 2 7 6 83 2 7 6 7无符号短整型u n s i g n e d s h o r t i n t 20-6 5 5 3 5基本整型s i g n e d i n t4-2 1 4 7 4 8 3 6 4 82 1 4 7 4 8 3 6 4 7无符号整型u n s i g n e d i n t 40-4 2 94 96 7 2 95长整型s i g n e d l o n g i n t 4-2 1 4 7 4 8 3 6 4 82 1 4 7 4 8 3 6 4 7无符号长整型u n s i g n e d l o n g i n t 40-4 2 94 96 7 2 95说明:1)如果要表示一个长整型常量,则应该在对应的整型常量后面加上一个字母后缀1(L的小写)或者 是L。如O L、1 1 0 L、1 2 3 L等。这是因为如果不加上L(或1),则表明这个整型常量为基本整型常量,在内存中占两个字节的存储单元,而加上之后,则表明为长整型常量,在内存中占四个字节存储单元。2)无论是短整型还是长整型常量,C语言系统都默认为是有符号整数。无符号整数在数字的后面加上一个字母后缀u或者是U。若是长整型无符号整型常量,则应该加后缀l u或者是L U o例2:以下选项中不属于C语言的类型的是A)s i g n e d s h o r t i n t B)u n s i g n e d l o n g i n tC)u n s i g n e d i n t D)l o n g s h o r t分析:根据表2可知,正确答案为D。4、整数在内存中的存储形式在计算机内存中最小存储单位称为 位(b i t)”。每一个位中或者存放0,或者存放1,因此称为二进制位。一个 字 节(Byte)有8个二进制位。沿用惯例,把最右边一位称为最低位,把最左边一位称为最高位。在C语言中,对于有符号型整数,将最高位作为符号位,当最高位为0时表示正整数,当最高位为1时表示负整数。下面介绍整数的存储形式。注意:计 算 机 中(或者说内存中)的数据都以它对应的画形式存在。第三节实型数据知识点:实型的定义方法和实型常量的表达方法;重要程度:1、实型常量在C语言中,实型常量有两种表示形式:小数形式利指数形式。(1)小数形式规则如下:L有且仅有一个小数点。2 .左边和右边可以有一边没有数据,但是不能同时没有数据。如:3.1 4 1 5 9 0.1 5 8 1 2.3 6 0.0 -1 8.0(2)指 数 形 式(E前E后都有数,E后必为整数)规则如下:L有且仅有一个字母e (或 者E)。2 .左右两边都必须有数据。3 .左边可以是整数也可以是小数。4 .右边只能是整数。以下列举出几个正确的指数形式:l e 5 (表示数值1 x 1 0,)1.2 5 E+4 (表示数值 1.2 5 x 1 0)2.0 E-3 (表示数值 2.0 x 1 0,)实型常量的常见错误:1 2 (缺少小数点,1 2 其实为一个整型的常量而不是实型常量)e 5 (缺少小数部分)1.2 5 E (缺少指数部分)2.0 E 1.3 (指数部分不是整数)例 1:以下选项中合法的实型常数是A)5 E 2.0 B)E-3 C).2 E 0 D)1.3 E分析:本题的答案是C。选 项(A)的指数部分不是整数。选 项(B)缺少小数部分。选 项(D)缺少指数部分。例 2:以下选项中,不能作为合法常量的是A)1.2 3 4 e 0 4 B)1.2 3 4 e 0.4 C)1.2 3 4 e+4 D)1.2 3 4 e 0分析:选 项(B)的指数部分不是整数,所以答案为B,其它选项均为正确的常量。2、实型变量C 语言中,实型变量分为单精度实型(f l o a t)变量与双精度实型(d o u b l e)变量两种。它们定义的形式分别如下:f l o a t x,y,z;/*定义单精度实型变量x,y,z */d o u bl e a,b,c;/*定义双精度实型变量a,b,c*/d o u bl e 的精度比f l o at 好!第四节字符型数据知识点:字符型常量;字符型变量;转义字符;重要程度:(字符可当作整型使用)1、字符常量字符常量是由一对单引号括起来的。1)由一对单引号括起来的单个字符:单引号中只有一个字符:0 、A 、a、2)由一对单引号括起来的,里面是由斜杠“”引起的若干字符:在单引号中,都由“开头:飞n 、t 0 、3 7 7 、x f f这个“”称为转义字符。转义字符后面的内容失去了原来的意义,如 n 表示换行符,而不是字母n了。每个字符都有一个AS C H 码与之对应。(字符可以看成整形)如字符 0 的A S C I I 码值为4 8,我们简称字符 0 的值为4 8。同样,A 的值为65,a 的值为97。字符型数据进行运算,使用的其实都是这个字符对应的AS CII码值。C 语言中一共有三种转义字符:一般转义字符、八进制转义字符、十六进制转义字符。表3 C语言中常用的转义字符字符形式意义字符形式意义 n换行 一个反斜杠字符t横向跳格(Tab)个 单引号v竖向跳格个双引号”b退格符(backspace)o o o13位八进制数代表的字符r回车符 x h h12 位十六进制数代表的字符f换页符 0空值(1)一般转义字符n、等,由一个“”开头加一个普通字符组成。请牢记表3 中粗体的转义字符。(2)八进制转义字符它 是 由 与 其 后 的 13 位八进制数字构成的字符序列。反斜杠后面的十六进制数不需要以0 开头。0 61 就错了6 1 首先把61这个八进制化成十进制,得到49,ASCH为 49的字符就是1 。.i o r 首先把101这个八进制化成十进制,得到65,ASCII为65的字符就是A。.(3)十六进制转义字符它 是 由 与 其 后 的 12 位十六进制数字构成的字符序列。反斜杠后面的十六进制数不需要以Ox开头。0 x 77 错了!但是反斜杠之后的必须是小写字母x,而不能是大写字母X,也不能是其它形式。0 X 77 错了!x42表示字符常量 B x6e分别表示字符常量和 n 字符型常量的常见错误:(1)把a看作字符常量。字符常量的标志是一对单引号,而不是双引号”(2)一对单引号中有多个字符。65是非法的字符常量。(常考)(4)oooz中出现数字8。o o o 中只能出现字符07。(5)xhh中,忘记书写字符X。例 1:以下不合法的字符常量是A 018 B C D xcc分析:本题是2006年 4 月考题,考察点在字符常量的概念。此题答案为A。A中为八进制转义字符,但是八进制数不能出现8,因此错误。B中是一般转义字符,表示一个双引号字符,正确。C中是-一般转义字符,表示一个反斜杠字符,正确。D中匹配十六进制转义字符,c c 是合法的十六进制数,正确。2、字符变量(考试重点)char a:等价于 char aa=A ;a=65;变量a 中存放了A的ASCH码值65。前面已经知道,字符型数据都是被处理为整型量,因此,可以直接对字符变量赋字符常量对应的ASCII码值。如赋值语句a=65;与赋值语句a=A;等价。例 2:已定义c为字符型变量,则下列语句中正确的是A)c=9 7 ;B)c=9 7 ;C)c=9 7;D)c=a;分析:答案选择C。A中 9 7 为非法的字符常量。单引号内不能出现多个字符。B中 9 7”为字符串,字符常量的标志的一对单引号,而不是双引号。C 将整型量9 7赋给字符变量c,即将A S C I I 码值为9 7的字符常量 a 赋给变量c,正确。D 中 a 不是字符常量,而是字符串。3、对字符型数据的运算1、对字符进行算术运算就是将字符对应的A S C H 码值进行运算。如:D-C 的值为1。因为我们用 D 和 C 的A S C H 码 68、67分别替换 D、C 之后,等价于求 68-67的值。又例如,C+1 的值为 D。2、大写字母的A S C I I 码与对应的小写字母的A S C I I 码相差32 o大写字母 转换成 小写字母 A 加上 32 a 如 A 与 a 的A S C I I 码分别为65 和 9 7。这样我们经过简单的算术运算就可以进行大小写字母字符的转换。如 A +32 即为,a -32 即为 A 。3、字符数字的A S C I I 码与对应的数字的A S C I I 码相差了 4 8.字符数字 转换成 数字T 减去4 8 1第五节算术表达式知识点:运算符号的优先级别;强制类型转换的使用;重要程度:1、算术运算符与算术表达式1、在 C 语言中,有下列五个基本的算术运算符:+、-、*、/和乐依次表示加、减、乘、除、求余运算。(考得最多的是/和%符号!)2、求余运算符%的运算对象只能是整型,即%左侧的被除数与右侧的除数都只能为整型值。求余得到的运算结果的符号与被除数相同。(3%1.2 错了)如:1 2%9 运算结果为3,1 2%-9 的运算结果也为3。-1 2%9 运算结果为-3,-1 2%-9 的运算结果也为-3。3、求余就是求余数,而不是求商,这点总是容易被弄混淆。令 想一想:3%9 运算结果为多少?(结果为3 而不是0)4、1/2 得到的数据是为0 的,这个原则是当除号/“左右两边都为整数的时候,我们遵守取整丢小数的原则。那么如果希望1 和 2 相除得到0.5,我们就可以用1.0/2,或者1/2.0,或者1.0/2.0都可以实现。先面通过一个具体例子的分析,我们来彻底搞清楚算术运算符的运算规则。例 1:试求 1.6+3/2*1.2-3/2.0 的值步骤:计算过程:说明:第一步:1.6+1*1.2-3/2.0根据运算优先级和结合的顺序,先算3/2,注意到它们为整型数据相运算,因此结果应为整数1,而不是1.5。第二步:1.6+1.0*1.2-3.0/2.01*1.2为整型和实型数据相运算,因此,会把整型数据1转换为对应的实型数据1.0,再与1.2进行运算。同理,3变成3.0第三步:1.6+1.2-1.5分 别 计 算 出1.0*1.2和3.0/2.0的结果第四步:2.8-1.5同一优先级的运算,从左到右依次进行第五步:1.3结果为L 3,而不是1.9下面,大家自己算算,表达式3.6-5/2+1.2+5%2的值应该是多少?A)4.3 B)4.8 C)3.3 D)3.8分析:根据表3列出的算术运算符优先级,本题目应先计算5/2与5%2得到2和1,然后再计算3.6-2+1.2+1,得到答案 D。2、强制类型转换在进行算术运算时,如果希望将某一运算量转换成指定的类型,则可以利用强制类型转换符。强制类型转换表达式为:(类型名)表达式其中,“(类型名)”是强制类型转换符,它将右边表达式的类型转换为括号中的类型。强制类型转换并不会改变右边表达式的值,(类型名)表达式这个整体产生了一个临时值。例:有如下代码:f l o a t a=3.8;i n t b;b=(i n t)a;这段代码把a强制转化为整型数据3 (注意C语言里的强制转换都是截取,而不是四舍五入),并把这个值3赋给整型变量b。注意,此时a的值仍然是3.8。强制转换只控制其后的一个数据例:(i n t )a+b 和(i n t )(a+b)不同:前者是把a强制转换为整型,再把这个临时的整型值和b作运算。后者是先计算a+b,之后把它们的值做整体的强制转换。强制转换需要注意的儿点:1)类型名外的()必不可少2)强制转换控制其后的一个数据3)强制类型转换并不会改变右边表达式的值第六节赋值表达式知识点,赋值表达式的运算;复合赋值表达式的运算;自加和自减;重要程度:1、赋值运算符和赋值表达式i n t a =12;它的含义是将赋值运算符右边的表达式的运算结果赋值给左边的变量。说明:1)赋值运算符左边必须是单个变量。例如x+l=3在数学上虽然是正确的,可是在C语言中却是错误的,不能将一个常量赋值给一个表达式。2)赋值运算会将左边变量的值用右边表达式的值来代替,右边的值不会改变。例 如,i n t x=3,y=5;x=y+l;以上代码先将x 初始化为3,将 y 初始化为5。执行完赋值语句x=y+l;后,变量x的值被y+1覆盖掉,即x的值变成了 6,变量y 的值不会改变。用盒子理论来说就是,先定义了两个盒子,分别叫做x 盒子和y 盒子,x 盒子装的是整数3,y 盒子装的是整数5。之后把x 盒子所装的内容改成y 盒子的内容加1,也就是6。这样,x 盒子中装的就是 6 了,以后再要使用x,都是用的新值6。而以前x 装过什么值现在再也不知道了。3)赋值表达式的值是赋值号左边变量被赋值后的值。例如:x=0整个赋值表达式的值是变量x 被赋值之后的值,也就是说这个表达式的值为0。4)可以将赋值表达式的值再赋值给变量,形成连续赋值运算。(学会分析过程)例如,x=(y=2 5)是一个连续赋值表达式。由于赋值表达式的结合形式是从右到左,因此可以简写为 x=y=2 5,它表达的含义是将2 5 赋值给变量y,然后将表达式y=2 5 的值赋值,即变量y 的值赋给变量 x,结果使变量x 和 y 的值都变为2 5。5)虽然可以连续赋值,但是不能连续初始化。(考试重点)例如:i n t x=y=2 5;就是错误的。对于i n t x=y=2 5;我们会先计算y=2 5,此时,y 并没有定义,而是在直接使用,所以就会报错。如果我们把上面的连续初始化改成:i n t y;i n t x=y=2 5;这样就没有错了。6)赋值运算符不同于数学上的“等 号(C 语言中“=”表示赋值,=”表示等号)因为赋值运算符的操作是将赋值号右边的表达式的值赋给左边的变量。它是单方向的操作。例如在数学中,i=i+l 不成立,但在赋值表达式中却是成立的,它表示将变量i 的值增加1之后得到的结果赋值给变量i,因此,该表达式的含义是使变量i 的值增加1。7)如果赋值号两边的运算对象类型不一致,则系统会自动进行类型转换。8)自动类型转换的实例:i n t a=3.6;赋值号左边的变量类型是整数,右边的值是实数,因此将右边的值转换成整数。3.6转换成整数后是3,因此a的值被赋为了 3。注意:实数转换成整数的方法是截取而不是四舍五入,因此直接把小数点后的数据去掉就行了。2、复合赋值表达式(掌握如何计算即可)在 C 语言中,可以将算术运算符与赋值运算符组合在一起组成复合赋值运算符。它们是:+=,-=,*=,/=,其使用方法及具体的运算规则如下:表达式n+=100等价的表达式为:n=n+100表达式n-=2*n 等价的表达式为:n=n-2*n表达式n*=m+l 等价的表达式为:n=n*(m+1)表达式n/=m+l 等价的表达式为:n=n/(m+1)上述四种复合赋值运算符的运算优先级与赋值运算符的优先级相同(优先级都非常低),运算方向均为自右向左。想一想:n+=10和 n+10有什么区别?区别在于前者n 本身的值改变了,而后者n的值没有改变。例 1:已知变量n的初始值为8,计算表达式n+=n*=n-2 的值。(经典考题)分析:表达式中有两个复合赋值运算符:+=和*=。它们优先级相同,运算方向均为自右向左。因此,运算的步骤如下:(1)先计算最右边表达式n-2 的值为6;(2)再计算n*=6,该表达式等价n=n*6,将 n中的值8 乘以6,得到4 8,并赋值给n,因此变量n的值为4 8,表达式n*=n-2 的值为4 8;(3)最后计算n+=4 8,该表达式相当于n=n+4 8。因为上步计算出n的值为4 8,所以n+4 8 的值为9 6,即n的值最终为9 6。通过计算,表达式n+=n*=n-2 的值为9 6。例 2:i n t a=5,b=6,c=2;c*=a+b;请问:c 的值最终是多少?错误的算法:c=c*a+b;得到的是1 6。正确的算法:c=c*(a+b);得到的是2 2。第 七 节 自加表达式自加与自减运算符(超级重点)如何让一个变量自身的值加1?通过之前的学习,我们知道=2+1;和 a+=l;都可以实现。而我们将要讨论的a+和+a同样可以实现这样的效果。自加、自减运算是一种赋值运算。既然a+和+a写法上有区别,那么它们应该有所不同。这里仅就+运算符进行说明,一运算符有类似的结论:a+和+a的相同处:对于变量a 而言,它们都是让a 的值加1。a+和+a的不同处:(+a)、(a+)是两个自加表达式,所以这两个表达式本身就有数值,只是+a,a+两个的表达式的数值不同。自加表达式的核心理解+a是先把a 加 1,再作为(+a)这个表达式的数值。a+是先把a 的数值作为(a+)这个表达式的数值,再使a 自加1 令 遇 到 a+,就看成a,等这部分执行结束后,再让a 的值加一。(加号在后,则先使用后自加)令 遇到+a,贝 IJ把 a 的值先加一,之后再使用加过一后的值。(加号在前,则先自加后使用)。例如有以下代码(通过以下代码,学会分析a+和+a的执行过程):i n t a=3,b;b=a+;这段代码执行完后,b 的值为3,a 的值为4。对于语句 b=a+;按照以上所说,我们就看成b=a;此时a 值为3,因此赋值后b 的值也为3。等这部分执行结束后,再让a 的值加一。因此,整个这段代码结束后,b 的值为3,a 的值为4。i n t a=3,b;b=+a,代码发生了变化,那么执行完后,a 和 b 的值分别为多少呢?对于语句6=+a;按照以上所说,我们把a 值先加一,得到a 的值为4。之后赋值给b。因此,整个这段代码结束后,a、b 的值都为4。通过以上的简单例子,我们看到,a+和+a都会让a 本身的值加一。不同在于对别人的影响。语句b=a+;等价于以下两条语句:b=a;a+;(先使用(赋值),后自加)语句b=+a;等价于以下两条语句:a+;b=a;(先自加,后使用(赋值)说明:补充考点:1)增量运算符的运算对象只能为单个变量,不能是常量或是表达式。例如:+3、+(i+1)都是不合法的增量表达式。2)不论“+”在变量的前面还是在变量的后面,对于变量本身都具有“增加1”的相同效果。例如i+、+i 两个增量表达式运算后变量i 的值都是增加1。3)自加、自减运算符的结合方向是“从右到左”。例如有如下代码:i n t y,x=3;y=一 x+;负 号 与 自 加 运 算 符“+”具有相同的运算优先级,但是根据“从右到左”的结合方向,那么应该先计算X+,而 X+可以先看成就是X。取其负值3 赋给y,那么y的值就为-3,这部分执行结束了,x的值再加所以这段代码结束后,x的值为4,y 的值为-3。4)在使用“+”运算符时,变量应该有个确定的值。例如:i n t a;a+;就是错误的。因为刚定义好的a 值不确定。让一个垃圾值自加一没有任何意义。经典考题:例 1:有以下定义语句:d o u b l e a,b;i n t w;l o n g c;若各变量已正确赋值,则下列选项中正确的表达式是A)a=a+b=b+B)w%(i n t)a+b)C)(c+w)%(i n t)a D)w=a%b;分析:答案C正确。选项A是一个连续赋值表达式,先将表达式b+的值赋值给表达式a+b,因为赋值语句的左边只能是变量名称,因此这时会出错。选项B是一个求余运算符连接起来的两个运算对象,除数(i n t)a+b)看起来比较复杂,它先将双精度类型变量a的值强制转换为整型,然后再与双精度类型变量b 求和,得到的值的类型仍为双精度类型,也就是说除数是一个实数而不是整数,因此不能使用运算符,所以答案B 错误。选项C的被除数是两个整型数相加,运算结果为整型,除数为(i n t)a,也为整型,答案C正确。选项D +a%b 错误。例 2有以下程序m a i n()i n t m=1 2,n=3 4;p r i n t f(%d%d”,m+,+n);p r i n t f (z/%d%d nz,,n+,+m);)程序运行后的输出结果是A)1 2 3 5 3 5 1 4 B)1 2 3 5 3 5 1 3 C)1 2 3 4 3 5 1 4 D)1 2 3 4 3 5 1 3分析:在第一个p r i

    注意事项

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

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




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

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

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

    收起
    展开