中国农业大学:《C语言程序设计》课程教学资源(试卷习题)C程序设计讲义与习题(含参考答案)

目录 第一部分上课PpT讲义 第二部分C语言知识点总结 第一音C语言基本知识 第二章顺序结构 第三章选择结构 第四章循环结构 .8 第五章字符型数据与位运算 8 第六音函数 第十音指针 指针概飞 知识点补充 10 第八章数组 第九章字符串 .11 第十章结构体与共用体 12 第十一音文件 12 第十二章深入讨论 第三部分历年真题部分. 2005年4月全国计算机等级考试二级笔试试卷 2005年9月全国计算机等级考试二级笔试试卷 2006年4月全国计算机等级考试二级笔试试卷 .37 2006年9月全国计算机等级考试二级笔试试卷 48 2007年4月全国计算机等级考试二级笔试试卷, 59 2007年9月全国计算机等级考试二级笔试试老 > 2008年4月全国计算机等级考试 二级笔试试卷 82 2008年9月全国计算机等级考试二级笔试试卷 ,90 2009年3月全国计算机等级老试二级笔试试卷 98 2009年9月全国计算机等级考试二级笔试试卷 106 2010年3月全国计算机等级考试二级笔试试卷 116 2010年9月全国计算机等级考试 级笔试试 12 2011年3月全国计算机等级考试二级笔试试卷 .135 2011年9月全国计算机等级考试二级笔试试卷 .144 2012年3月全国计算机等级考试二级笔试试卷 153 2012年9月全国计算机等级考试二级笔试试卷 161 第四部分历年真题答案部分, .170 2005年4月笔试试卷参考答案 170 2005年9月笔试试卷参 考答 170 2006年4月笔试试卷参考答案 .17 2006年9月笔试试卷参考答案 .171 2007年4月笔试试卷参考答案 172 2007年9月笔试试券参考答客 172 2008 年4月笔试试卷参考答案 .173
3 目录 第一部分 上课 PPT 讲义. 5 第二部分 C 语言知识点总结. 6 第一章 C 语言基本知识. 6 第二章 顺序结构. 7 第三章 选择结构. 7 第四章 循环结构 . 8 第五章 字符型数据与位运算. 8 第六章 函数. 9 第七章 指针. 9 指针概念知识点补充 . 10 第八章 数组. 11 第九章 字符串. 11 第十章 结构体与共用体. 12 第十一章 文件. 12 第十二章 深入讨论. 13 第三部分 历年真题部分. 14 2005 年 4 月全国计算机等级考试二级笔试试卷. 14 2005 年 9 月全国计算机等级考试二级笔试试卷. 25 2006 年 4 月全国计算机等级考试二级笔试试卷. 37 2006 年 9 月全国计算机等级考试二级笔试试卷 . 48 2007 年 4 月全国计算机等级考试二级笔试试卷. 59 2007 年 9 月全国计算机等级考试二级笔试试卷. 71 2008 年 4 月全国计算机等级考试二级笔试试卷. 82 2008 年 9 月全国计算机等级考试二级笔试试卷. 90 2009 年 3 月全国计算机等级考试二级笔试试卷. 98 2009 年 9 月全国计算机等级考试二级笔试试卷. 106 2010 年 3 月全国计算机等级考试二级笔试试卷. 116 2010 年 9 月全国计算机等级考试二级笔试试卷. 126 2011 年 3 月全国计算机等级考试二级笔试试卷. 135 2011 年 9 月全国计算机等级考试二级笔试试卷. 144 2012 年 3 月全国计算机等级考试二级笔试试卷. 153 2012 年 9 月全国计算机等级考试二级笔试试卷. 161 第四部分 历年真题答案部分. 170 2005 年 4 月笔试试卷参考答案. 170 2005 年 9 月笔试试卷参考答案 . 170 2006 年 4 月笔试试卷参考答案 . 171 2006 年 9 月笔试试卷参考答案 . 171 2007 年 4 月笔试试卷参考答案 . 172 2007 年 9 月笔试试卷参考答案 . 172 2008 年 4 月笔试试卷参考答案 . 173

2008年9月笔试试卷参考答案 .173 2009年9月笔试试卷参老答 173 2009年3月笔试试卷参考答 2010年3月笔试试卷参考答案 ,17 2010年9月笔试试卷参考答案. .174 2011年3月笔试试卷参考答案 175 2011年9月笔试试卷参考答案 175 2012年3月笔试试卷参考答案 175 2012年9月笔试试卷参考答案 176 第五部分二级c语言考试大纲与考试注意事项 177 二级C语言考试大纲 笔试机试注意事项 .179 第六部分公共基础知识资料】 -180 第一章数据结构与算法 .180 第二章程序设计基础」 184 第三竞软件工程基础 184 第四章数据库设计基础 189
4 2008 年 9 月笔试试卷参考答案 . 173 2009 年 9 月笔试试卷参考答案. 173 2009 年 3 月笔试试卷参考答案. 174 2010 年 3 月笔试试卷参考答案. 174 2010 年 9 月笔试试卷参考答案. 174 2011 年 3 月笔试试卷参考答案. 175 2011 年 9 月笔试试卷参考答案. 175 2012 年 3 月笔试试卷参考答案. 175 2012 年 9 月笔试试卷参考答案. 176 第五部分 二级 C 语言考试大纲与考试注意事项. 177 二级 C 语言考试大纲. 177 笔试机试注意事项. 179 第六部分 公共基础知识资料. 180 第一章 数据结构与算法 . 180 第二章 程序设计基础 . 184 第三章 软件工程基础 . 184 第四章 数据库设计基础 . 189

第一部分上课PPT讲义
5 第一部分 上课 PPT 讲义

第二部分C语言知识点总结 第一章C语言基本知识 【知识点1】C程序 有编写的程序称为C语言源程序,源程序文件的后缀名为“©”,源程序经编译 后生成后缀名为“O”的目标文件,再把目标文件与各种库函数连接起来,生成“ee 可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。 【知识点2】main函数 又称主函数,是C程序的入口。ma后面跟一对小括号和一对花括号,花括号括起来 的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完 结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其 为man 数服务的。 个位构成 花据是买用进制形式,由0或1构成的二进 个位物成转化为进制八进制十大进制深用除据的波进制是它的地 【知识点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“体”开始到最近一个“*” 结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【知识点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语 句可写在多行上 【知识点6】标识符 标识符 备名烫效宽符序列、可以理为C程序中的单词。 标行能 字母、数字和下制线组成,字母区分大小写 》标识符的第个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、.include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【知识点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量 。常量分为整型常量 实型常量、字符 常最 字符串使用字符数组 运行过程中其值可以改变的量称为变量。C语言 【知识点8】整型数据 八进制、十六进制三种表示形式,没有二进制形式。八进制整型常 量加前导数字0, 六进制学前导0以 八进生觉品由不△出及 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned). 一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材。 【知识点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 型变量分为单精因 型(oat)和双精度型(double),单精度型占四个字节. 【知识点10】算术运算 6
6 第二部分 C 语言知识点总结 第一章 C 语言基本知识 【知识点 1】C 程序 用 C 语言编写的程序称为 C 语言源程序,源程序文件的后缀名为“.c”。源程序经编译 后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe” 可执行文件。C 语言有三种基本结构:顺序结构、选择结构、循环结构。 【知识点 2】main 函数 又称主函数,是 C 程序的入口。main 后面跟一对小括号和一对花括号,花括号括起来 的部分称为 main 函数的函数体。一个 C 程序从 main 函数开始执行,到 main 函数体执行完 结束,而不论 main 函数在整个程序中的位置如何。每一个程序有且仅有一个 main 函数,其 他函数都是为 main 函数服务的。 【知识点 3】存储形式 计算机在电脑中保存数据是采用二进制形式,由 0 或 1 构成的二进制称为位(bit),八 个位构成一个字节(Byte),1 个 Byte=8 个 bit。二进制、八进制、十六进制转化为十进制采 用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【知识点 4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/” 结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【知识点 5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语 句可写在多行上。 【知识点 6】标识符 是标识名字的有效字符序列,可以理解为 C 程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C 语言标识符分如下 3 类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如 int、for、switch 等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如 define、include 等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【知识点 7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符 常量、字符串常量、符号常量 5 种。在程序运行过程中其值可以改变的量称为变量。C 语言 中没有字符串变量。存放字符串使用字符数组。 【知识点 8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常 量加前导数字 0,十六进制常量加前导 0X,八进制常量中不会出现 8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。 一个基本整型占 4 个字节。其它类型的整型占用字节数和取值范围详见教材。 【知识点 9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E 前 E 后必有数,E 后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【知识点 10】算术运算

算术运算符一共有+、一、*、人、%这五个。求余运算要求运算对象只能为整型,除法 运算符两边运算对 象都为整型时,运算结果也为整型即舍掉小数部分。 【知识点11】强制类型转换 象转换成指定类型,格式为(类型名)表达式,注意小括号位置 【知识点12】 赋 。=”,不同于关系等于“==”。赋值表达式格式 值运算符左边必须为变量,赋估运算是把赋值运算符右边表达式的 ,变量名=表达式, 直赋给左边变量 复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌 握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。 【知识点13】自加自诚运算 自加运算符 与自减运算符“”是单目运算符,运算对象必须是变量。自增自减 运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如j+:等价于i=+1: 而=++等价于i=+1:j= 口诀:加加在前先加后用,加加在后先用后加。 符运算优先级最低,可将多个表达式构成一个新的表达式 第二章顺序结构 【知识点】运算符、表达式、署向 【知识点2】运算符的优先级和结合顺序 运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算 符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻 辑非)、条件运算符、赋值运算符、迅号运算符。位运算符优先级介于算术运算符与逻辑运 算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋 制,输出列表)】。输出控制是用一对双引号括起来的,包含格式说 数中格式说明 实型,%对应字符型%0对应八讲制无符号整型,% 对应无符号十六进制整型,%仙对应无符号整型,%对应指数型,%s对应字符串型。可在% 和格式字符之间加一个数来控制数据所占的宽度和小数位数。 【知识点5】scanf函数 输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。分隔符包括 空格符、制表符和回车符,但不包括逗号。 【知识点6】如何交换两个变量 要使用中间变量,语句为:=X:Xy,x式,a 第三章选择结构 【知识点1】关系运算 C语言用非 辑 可以的可用前利 死先 于后两种。关系表 c)来表示 【知识点2】逻辑运算 逻辑运算符共有3个:逻辑与(&&),逻辑或(),逻辑非(!),注意短路现象,例a+b+
7 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法 运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【知识点 11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【知识点 12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋 值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。 复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌 握复合赋值表达式转化为赋值表达式的方法。如 n+=100 可转化为 n=n+100。 【知识点 13】自加自减运算 自加运算符“++”与自减运算符“-”是单目运算符,运算对象必须是变量。自增自减 运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如 j=i++;等价于 j=i;i=i+1; 而 j=++i;等价于 i=i+1;j=i;。 口诀:加加在前先加后用,加加在后先用后加。 【知识点 14】逗号运算 逗号运算符运算优先级最低,可将多个表达式构成一个新的表达式。 第二章 顺序结构 【知识点 1】运算符、表达式、语句 运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、 常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语 句。 【知识点 2】运算符的优先级和结合顺序 运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算 符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻 辑非!)、条件运算符、赋值运算符、逗号运算符。位运算符优先级介于算术运算符与逻辑运 算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋 值运算符。 【知识点 3】printf 函数 格式为:printf(输出控制,输出列表)。输出控制是用一对双引号括起来的,包含格式说 明和原样信息。输出列表包含若干输出项。 【知识点 4】printf 函数中格式说明 %d 对应整型,%f 对应单精度实型,%c 对应字符型,%o 对应八进制无符号整型,%x 对应无符号十六进制整型,%u 对应无符号整型,%e 对应指数型,%s 对应字符串型。可在% 和格式字符之间加一个数来控制数据所占的宽度和小数位数。 【知识点 5】scanf 函数 输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。分隔符包括 空格符、制表符和回车符,但不包括逗号。 【知识点 6】如何交换两个变量 要使用中间变量,语句为:t=x; x=y; x=t;。 第三章 选择结构 【知识点 1】关系运算 C 语言用非 0 表示逻辑真,用 0 表示逻辑假。关系运算符有 6 个,分别是>,>=,<, <=,==,!=,前四种优先级高于后两种。关系表达式真时为 1,假时为 0。注意 a<b<c 是不 可以的,可用(a<b)&&(b<c)来表示。 【知识点 2】逻辑运算 逻辑运算符共有 3 个:逻辑与(&&),逻辑或(||),逻辑非(!)。注意短路现象,例 a++||b++

如果表达式a+的值非零,则表达式b+不再执行。 【知识点3】f语句 可以单独出现,也可以与else匹配出现。f语句可以嵌套,这时ese总是与离它最近的 匹配的f匹配: 个表达式值为表达式2的值 ,格式为:表达式 达式收为非0时,整 值为表 口诀:真前假后 【知识点5】 n句 后小货采材生表长反有堂 e后有没有break语句的区别.还要注意switch 口决:switch表不为实,case表不为变。 第四章循环结构 【知识点1】三种循环结构 三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材。注 意f循环中的小括号中必须是两个分号:循环一定要有结束条件,否则成了死循环: do-while()循环最后的while(:后一定要有分号。 【知识点2】break与continue 结物心k是所在轻环只出现在精环结构中。不北,可可出现在精环 就是循环里面还有循环,计算要一层一层分析。 一般只考查两层嵌套,循环嵌套通常是 处理二维数组】 【知识点4】循环结构的复习 循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性 很强。要求学员重点理解并多加练习,领会掌握。 第五章字符型数据与位运算 【知识点1】字符常量 个字符常量用一对单引号括起来,字符常量只能包括一个字符,’b'是非法的。空 格常用'口'来表示。字符常量可用对应的ASCI码表示,需记住:’0'的ASC码为48, 的ASC为65 a’的ASC1码为97。 【知识点2】转义字符 以,个反斜线后跟一个特定字符或八进制、 型数据可以 和整型数据相互转 为6的的字制题来成转文字行。 char a=65 printf“%d%c”a,a,结果为65A 【知识点4】位运算符 C语言提供6种位运算符:按位求反,按位左移,按位与&,按位异 或,按位或^。一般情况下需要先转化进制。异或运算的规则:0异或1得到1,0异或0得 到0,1异或1得到0。可记为“相同为0,不同为1”。 【知识点s】putchar与getchar函数 可用于输出或输入单个字符,这两个函数是stdio.h文件中的库函数,它们是printf与 scanf函数的简化
8 如果表达式 a++的值非零,则表达式 b++不再执行。 【知识点 3】if 语句 可以单独出现,也可以与 else 匹配出现。if 语句可以嵌套,这时 else 总是与离它最近的 且没有与 else 匹配的 if 匹配。 【知识点 4】条件运算 是唯一的三目运算符,格式为:表达式 1?表达式 2:表达式 3。表达式 1 值为非 0 时,整 个表达式值为表达式 2 的值,表达式 1 值为 0 时,整个表达式值为表达式 3 的值。 口诀:真前假后 【知识点 5】switch 语句 格式及执行过程详见教材,要注意每条 case 后有没有 break 语句的区别。还要注意 switch 后小括号里面的表达式不能为实型,case 后表达式不能有变量。 口诀:switch 表不为实,case 表不为变。 第四章 循环结构 【知识点 1】三种循环结构 三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材。注 意 for 循环中的小括号中必须是两个分号;循环一定要有结束条件,否则成了死循环; do-while()循环最后的 while();后一定要有分号。 【知识点 2】break 与 continue break 是终止所在整个循环,而 continue 是ᨀ前结束本轮循环。break 语句可出现在循环 结构与 switch 语句中,continue 只出现在循环结构中。 【知识点 3】循环的嵌套 就是循环里面还有循环,计算要一层一层分析,一般只考查两层嵌套,循环嵌套通常是 处理二维数组。 【知识点 4】循环结构的复习 循环结构是重点,笔试所占分值一般在 13 分左右,在上机考试中也是必考点,应用性 很强。要求学员重点理解并多加练习,领会掌握。 第五章 字符型数据与位运算 【知识点 1】字符常量 一个字符常量用一对单引号括起来,字符常量只能包括一个字符,’ab’是非法的。空 格常用’□’来表示。字符常量可用对应的 ASCII 码表示,需记住:’0’的 ASCII 码为 48,’ A’的 ASCII 码为 65,’a’的 ASCII 码为 97。 【知识点 2】转义字符 一对单引号中以一个反斜线后跟一个特定字符或八进制、十六进制数来构成转义字符。 比如’\n’表示换行,’\101’或’\x41’表示 ASCII 码为 65 的字符’A’。 【知识点 3】字符型数据可以和整型数据相互转换 如:’0’-0=48 ‘A’+32=’a’ char a=65;printf(“%d%c”,a,a);结果为 65A 【知识点 4】位运算符 C 语言ᨀ供 6 种位运算符:按位求反~,按位左移>,按位与&,按位异 或|,按位或^。一般情况下需要先转化进制。异或运算的规则:0 异或 1 得到 1,0 异或 0 得 到 0,1 异或 1 得到 0。可记为“相同为 0,不同为 1”。 【知识点 5】putchar 与 getchar 函数 可用于输出或输入单个字符,这两个函数是 stdio.h 文件中的库函数,它们是 printf 与 scanf 函数的简化

第六章函数 【知议点1】函数的定义 函数是具有一定功能的一个程序块。函数的首部为:函数类型函数名(类型1形参1, 类型2形参2,.)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型 默认为int型。 【知识点2】库函数 为 知识点】函的返回 、五句 回一个值,返回的值类型与函数类型一样。return语句只执行 次,执行完或函数体结束后退出函数。 【知识点4】函数的声明 函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函 数返回值类型、函数参数类型,但不一定要有形参的名称。 【知识点5】函数的调用 程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用 节宋,子下执 【知识点6】函数 的参数及值传 时函数名后面括号中的 实在参数简 “传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的 话,形参的变化就有可能改变实参所对应的量。 【知识点7】函数的递归调用 函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归 的条件。在做递归题时可把递归的步爆一步步写下来,不要弄颠倒了。 【知识点8】要求掌握的岸函数 sqrt(算术平方根函数,fabs()绝对值函数,pow0幂函数,sin0正弦函数 第七章指针 【知识点1】指针变 变童 存储地址的 般变量是存储数值的。指针变量可指向任意一种数据 用多少字节 个指针变量占用四个字节。 型名指 ,二维指针int*p,可以理解为基类型为(nt*)类型 【知识点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用, 如果不指向任何数据就赋“空值”NUL. 【知识点4】指针变量的引用 &是取地址符,·是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间 接访问运算符就等价它所指向的量。 【知识点5】指针的运算 间的 变量所指的数据变化 是间 9
9 第六章 函数 【知识点 1】函数的定义 函数是具有一定功能的一个程序块。函数的首部为:函数类型 函数名(类型 1 形参 1, 类型 2 形参 2,.)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型 默认为 int 型。 【知识点 2】库函数 调用 C 语言标准库函数时要包含 include 命令,include 命令行以#开头,后面是”或<> 括起来的后缀为”.h”的头文件。以#开头的一行称为编译预处理命令行,编译预处理不是 C 语言语句,不加分号,不占运行时间。 【知识点 3】函数的返回值 函数通过 return 语句返回一个值,返回的值类型与函数类型一样。return 语句只执行一 次,执行完或函数体结束后退出函数。 【知识点 4】函数的声明 函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函 数返回值类型、函数参数类型,但不一定要有形参的名称。 【知识点 5】函数的调用 程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用 函数结束,再顺序往下执行。 【知识点 6】函数的参数及值传递 形式参数简称形参,是定义函数时函数名后面括号中的参数。实在参数简称实参,是调 用函数时函数名后面括号中的参数。实参和形参分别占据不同的存储单元。实参向形参单向 传递数值。 “传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的 话,形参的变化就有可能改变实参所对应的量。 【知识点 7】函数的递归调用 函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归 的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。 【知识点 8】要求掌握的库函数 sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数 第七章 指针 【知识点 1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据 类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。 【知识点 2】指针变量的定义 格式为:类型名 *指针变量名。二维指针 int **p;可以理解为基类型为(int *)类型。 【知识点 3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用, 如果不指向任何数据就赋“空值”NULL。 【知识点 4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间 接访问运算符就等价它所指向的量。 【知识点 5】指针的运算 *p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个 指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数 组时,它们可以比较大小进行减法运算

指针概念知识点补充 ●变量的地址就是变量的指针。变量的值和变量的地址是不同的概念,变量的值是该 变量在内存单元中的数据。用来存放指针(地址)的变量就称为指针变量。 ●若把某变量的地址赋值给指针变量p,则称指针变量p指向该变量。 ●定义指针变量的一般形式为:类型名*指针变量名:,其中“*”为说明符,而不是 运算符。 ●通常指针变量可以通过以下几种方法获得地址:通过地址运算“&”威值,指针变 量的初始化,通过其他指针变量赋值,用NULL给指针变量赋空值,以及通过调用标准函 数赋值。 ●“*”称为指针运算符(单目运算符),也称取内容运算符。当指针变量p指向一个 变量x时,可以用*p的形式存取该变量的值。此时,p与变量x相互等价 ●取地址运算符“&”与指针运算符“◆”作用在一起时,有相互“抵消”的作用。对 于变量x,*&x与x相互等价。 ●若定义了一维数组a和指针变量p,且pa,则以下四种表示相互等价:a、p小 (a+i、*(p+i)。 未对指针变量p赋值即p没有指向时,而就对*赋值,该值就代替了内存中某单元 的内容,有可能出现不可意料的错误。 一个数组的元素在内存中是连续存放的,数组第一个元素的地址称数组的首地址, 在C语言中,数组名是该数组的首地址,因此,数组名是指针常量。 ●当指针变量D指向数组元素时,D加上一个正整数,则当前指向为相对D向前移动 n个元素的位置:p减去一个正整数n,则当前指向为相对p向后移动n个元素的位置。 ●假设指针变量p、q指向同一数组,若p指向地址较大元素,q指向地址较小的元素, 则p>g的值为1(真),且pq的值为0(假)。 ●假设指针变量P、q指向同一数组,p-q的值等于p所指对象与q所指对象之间的元 素个数,若p>g则取正值,p<g取负值。 ●把字符串常量赋值给字符指针变量,相当于把该字符串常量的首地址赋值给字符指 针变量。 ●C语言的二维数组由若干个一维数组构成。若有定义语句:int a[M][N,ij, 则以下元素的七种表示相互等价:al、*(a+i、*(a+i+j)、(*(a+il、 *(&a0I0+N*ij、*(a0+N*itj小*(*a+N*itj)- ●若有语句:int a[M][N].i,.j(piN,则指针变量pi指向“包含N个整型元素的 维数组”。当pi=a,时,pi+1将跳过N个元素指向下一行,故称pi为行指针,也称pi是(指 向一维)数组(的)指针。若p-a,则以下五种元素的表示相互等价:a、pi (pi+j、*(*(pi+i+j、((pi+il. ●除了由二维字符数组可以构成字符串数组外,还可以定义一个指针数组,并在定义 时用字符串赋初值的方法,构成一个字符串数组。 ●指向指针的指针变量,经过二次间接存取后才能存取到变量的值。 ●通常用指针数组的每个元素p指向二维数组a的每行第0列元素的首地址,然后 用指向指针的指针变量pp指向指针数组,此时,pp+1指向数组指针p阳的下一个元素,也 0
10 指针概念知识点补充 ● 变量的地址就是变量的指针。变量的值和变量的地址是不同的概念,变量的值是该 变量在内存单元中的数据。用来存放指针(地址)的变量就称为指针变量。 ● 若把某变量的地址赋值给指针变量 p,则称指针变量 p 指向该变量。 ● 定义指针变量的一般形式为:类型名 *指针变量名;,其中“*”为说明符,而不是 运算符。 ● 通常指针变量可以通过以下几种方法获得地址:通过地址运算“&”赋值,指针变 量的初始化,通过其他指针变量赋值,用 NULL 给指针变量赋空值,以及通过调用标准函 数赋值。 ● “*”称为指针运算符(单目运算符),也称取内容运算符。当指针变量 p 指向一个 变量 x 时,可以用*p 的形式存取该变量的值。此时,*p 与变量 x 相互等价。 ● 取地址运算符“&”与指针运算符“*”作用在一起时,有相互“抵消”的作用。对 于变量 x,*&x 与 x 相互等价。 ● 若定义了一维数组 a 和指针变量 p,且 p=a;,则以下四种表示相互等价:a[i]、p[i]、 *(a+i)、*(p+i)。 ● 未对指针变量 p 赋值即 p 没有指向时,而就对*p 赋值,该值就代替了内存中某单元 的内容,有可能出现不可意料的错误。 ● 一个数组的元素在内存中是连续存放的,数组第一个元素的地址称数组的首地址。 在 C 语言中,数组名是该数组的首地址,因此,数组名是指针常量。 ● 当指针变量 p 指向数组元素时,p 加上一个正整数 n,则当前指向为相对 p 向前移动 n 个元素的位置;p 减去一个正整数 n,则当前指向为相对 p 向后移动 n 个元素的位置。 ● 假设指针变量 p、q 指向同一数组,若 p 指向地址较大元素,q 指向地址较小的元素, 则 p>q 的值为 1(真),且 pq 则取正值,p<q 取负值。 ● 把字符串常量赋值给字符指针变量,相当于把该字符串常量的首地址赋值给字符指 针变量。 ● C 语言的二维数组由若干个一维数组构成。若有定义语句:int a[M][N], i, j;, 则以下元素的七种表示相互等价: a[i][j] 、 *(a[i]+j) 、 *(*(a+i)+j) 、 (*(a+i))[j] 、 *(&a[0][0]+N*i+j)、* (a[0]+N*i+j)、* (*a+N*i+j)。 ● 若有语句:int a[M][N], i, j, (*pi)[N];,则指针变量 pi 指向“包含 N 个整型元素的一 维数组”。当 pi=a;时,pi+1 将跳过 N 个元素指向下一行,故称 pi 为行指针,也称 pi 是(指 向一维)数组(的)指针。若 pi=a;,则以下五种元素的表示相互等价:a[i][j]、pi[i][j]、 *(pi[i]+j)、*(*(pi+i)+j)、(*(pi+i))[j]。 ● 除了由二维字符数组可以构成字符串数组外,还可以定义一个指针数组,并在定义 时用字符串赋初值的方法,构成一个字符串数组。 ● 指向指针的指针变量,经过二次间接存取后才能存取到变量的值。 ● 通常用指针数组的每个元素 pa[i]指向二维数组 a 的每行第 0 列元素的首地址,然后 用指向指针的指针变量 pp 指向指针数组,此时,pp+1 指向数组指针 pa 的下一个元素,也

就是pp+l指向二维数组a的下一行。如果a是二维字符数组,则pp+1指向下一个字符串。 ·当指针变量指向某一结构体变量时,可用下述三种方式之 一存取结构体成员(三种 方式是等价的):结构体变量名成员名、指针变量名>成员名、(*指针变量名)成员名。 ●若p指向数组a,则:()p+(或p叶=),使p指向下一元素。 (2)*n++空价(n++ 作用是先得到D指向的变量的值(即* 一p。3)p-+)与*+p)不同。前者为 a0,后者为a。(p+表示p指向的元素值加1,即(a0 +(⑤)如果p当前指向 数组中第i个元素,则:*p-)相当于-,先对P进行*运算,再使p自减: *(++D)相当 于a+,先使p自加,再作*运算。*(-p)相当于a-,先使p自减,再作*运算。 第八音数组 【知识点1】数组的定义 数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名数 组名[常量表达 T知识点】数组的初始化广吉字节数为元素个数与基美至所古字节数的来积·一 元为随:合品 值为0:而在中,元素值为 确定自 随机数 【知识点3】元素的引用 数组元素的下标从0开始,到数组长度减1结束。所以ita5:中数组最后一个元素是 4。要把数组元素看作一个整体,可以把a4当作一个整型变量, 【知识点4】二维数组 数组a2[3=(1,2,3,4,5.,6:中含6个元素,有2行3列。第一行为a0行,第2行为a1 行,a0小、a1]叫行首地址,是地址常量。*(a0叶1)是第一行第一个元素往后跳一列,即元素 a01)值为2,*(a0+3)是第一行第一个元素往后跳三个,即元素a1]0]值为4。 【知识点5】行指针 能存放金 占四个字节 的首址注意p两边的小不 行指针指向一行连续数据 形式 有两 个整型元 干指针元素的集 【知识点6】数组 组名是地址常量, 数相加得到一个新地址。 【知识点7】元素形式的转换 助记:“脱衣服法则”a2变成*(a+2),a23]变成*(a+23]再可变成*(*(a+2+3)。 第九章字符串 【知识点1】字符审常量及表示 字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动 在其尾部加上一个空值'0',空值也要占用一个字节,也就是字符串”ABC”需要占四个 【知识点2】字符数 际存放的最长之 变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实 多一个元素, 从而存放 0 【知识点3】半符串赋值 可以用下面的形式进行赋值:char str”Hello!”或char*p,p=”Hello!”;,但不能用 下面的形式:char str[0:str=”Hello”:因为str是一个地址常量,不能进行赋值操作。 【知识点4】字符串的输入与输出 2
11 就是 pp+1 指向二维数组 a 的下一行。如果 a 是二维字符数组,则 pp+1 指向下一个字符串。 ● 当指针变量指向某一结构体变量时,可用下述三种方式之一存取结构体成员(三种 方式是等价的):结构体变量名.成员名、指针变量名->成员名、(*指针变量名).成员名。 ●若 p 指向数组 a,则:⑴ p++ (或 p+=1),使 p 指向下一元素。 ⑵ *p++ 等价 *(p++)。 作用是先得到 p 指向的变量的值(即*p),然后再使 p+1→p。⑶ *(p++)与*(++p)不同。前者为 a[0],后者为 a[1]。⑷ (*p)++表示 p 指向的元素值加 1,即(a[0])++ ⑸ 如果 p 当前指向 a 数组中第 i 个元素,则: *(p-)相当于 a[i-],先对 p 进行*运算,再使 p 自减; *(++p)相当 于 a[++i],先使 p 自加,再作*运算。 *(- p)相当于 a[-i],先使 p 自减,再作*运算。 第八章 数组 【知识点 1】数组的定义 数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名 数 组名[常量表达式]。数组的所占字节数为元素个数与基类型所占字节数的乘积。 【知识点 2】数组的初始化 第一维长度可以不写,其它维必须写。int a[]={1,2};合法,int a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。数组初始化元素值默认为 0,没有初始化元素值为随机。如在 int a[5]={0,1,2};中,元素 a[4]值为 0;而在 int a[5];中,元素 a[4]值为一个不确定的随机数。 【知识点 3】元素的引用 数组元素的下标从 0 开始,到数组长度减 1 结束。所以 int a[5];中数组最后一个元素是 a[4]。要把数组元素看作一个整体,可以把 a[4]当作一个整型变量。 【知识点 4】二维数组 数组 a[2][3]={1,2,3,4,5,6};中含 6 个元素,有 2 行 3 列。第一行为 a[0]行,第 2 行为 a[1] 行,a[0]、a[1]叫行首地址,是地址常量。*(a[0]+1)是第一行第一个元素往后跳一列,即元素 a[0][1]值为 2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素 a[1][0]值为 4。 【知识点 5】行指针 是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int (*p)[2];,p 只 能存放含有两个整型元素的一维数组的首地址。注意(*p)两边的小括号不能省略,否则就成 了指针数组,是若干指针元素的集合。 【知识点 6】数组名 数组名是数组的首地址。数组名不能单独引用,不能通过一个数组名代表全部元素。数 组名是地址常量,不能对数组名赋值,所以 a++是错误的。但数组名可以作为地址与一个整 数相加得到一个新地址。 【知识点 7】元素形式的转换 助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。 第九章 字符串 【知识点 1】字符串常量及表示 字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动 在其尾部加上一个空值’\0’,空值也要占用一个字节,也就是字符串”ABC”需要占四个 字节。 【知识点 2】字符数组 C 语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实 际存放的最长字符串多一个元素,从而存放’\0’。 【知识点 3】字符串赋值 可以用下面的形式进行赋值:char str[]=”Hello!”;或 char *p;p=”Hello!”;,但不能用 下面的形式:char str[10];str=”Hello”;因为 str 是一个地址常量,不能进行赋值操作。 【知识点 4】字符串的输入与输出

可以用scanf和printf函数,如scanf(”%s”,sr,也可用专门处理字符串的两个函数 gets和pus函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’0'。使 gs函数可以接收空格,使用puts函数在最后输出一个换行。 【知识点5】字 符串西数 符串拷贝函数strepy() 长度 部分包 头 件” 字符串长度要小于字符数组的长度,例:char str1O=”Hello”sizeofstr)的值为10(数 组长度),srsr的值为5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟 练应用这几个函数。 第十章结构体与共用体 【知识点1】结构体类型的说明 结构体是若干个类型数据的集合,结构体类型说明格式如下:suct类型名(类型1成 员名1,类型2成员名2, :,以上整个部分是 个数据类型,与整型的t是同样地位, 可用typedef把结构体类型替换成一个只有几个字母的简短标识符。 【知识点2】结构体变量的定义 个变量,与结构体类型不是一回事。一个 【知识点3】结构体成员的引用 式:(1)结构体变量名.成员名:(2)指针变量名->成员名:(3) (*指针变量名)成员名。点()称为成员运算符,箭头(>)称为结构指向运算符。 【知识点4】链表 链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域 与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向下一个结点。链表是考 试中的难点,在C语言和公共基础部分都会考到,要领悟掌握。 【知识点5】共用体 结构体相似,共用体定义的关键字为union,共用体所占字节数是 所有成员 大的那个 第十一章文件 点文件类型指 【知识 构体类型的指针,定义格式为:FLE*指针变量名。在使用文件 都需要先定义文件指针 时,知要先安文件与三进制文件 文本形式存放的是字符的ASC码 二进制形式存放的是数据的二进制。例如“100” 如果是文本形式就是存储’1'、 ”0'、,0·三个字符的ASCT1码(0011000100110000 00110000),如果是二进制形式就把100转化成二进制(01100100). 【知识点3】打开文件 文件的打开形式如下:FILE *fp,p=ope(“clab.c ,”b”方。fopen函数的前面 部分为文件名,后面一部分为文件的使用方式。打开方式详见教材,其中r代表读,w代表 b 1 二进制位的 位置移到 移动文件指针位置fseek函 数 获得文件位置ftell函数 文件 数和
12 可以用 scanf 和 printf 函数,如 scanf(”%s”,str);,也可用专门处理字符串的两个函数 gets 和 puts 函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’\0’。使 用 gets 函数可以接收空格,使用 puts 函数在最后输出一个换行。 【知识点 5】字符串函数 要掌握的四个字符串函数:字符串拷贝函数 strcpy(),求字符串长度函数 strlen(), 字符串链接函数 strcat(),字符串比较函数 strcmp()。使用这些函数需在预处理部分包含 头文件”string.h”。 字符串长度要小于字符数组的长度,例:char str[10]=”Hello”;sizeof(str)的值为 10(数 组长度),strlen(str)的值为 5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟 练应用这几个函数。 第十章 结构体与共用体 【知识点 1】结构体类型的说明 结构体是若干个类型数据的集合,结构体类型说明格式如下:struct 类型名 {类型 1 成 员名 1;类型 2 成员名 2;.};,以上整个部分是一个数据类型,与整型的 int 是同样地位。 可用 typedef 把结构体类型替换成一个只有几个字母的简短标识符。 【知识点 2】结构体变量的定义 结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个 结构体变量所占字节数为其所有成员所占字节数之和。如 struct stu{char name[10];int age;} a,b;则表明定义了两个结构体变量 a,b,每个变量占 14 个字节。a,b 与 int i,j;中的变量 i,j 是同样 地位。 【知识点 3】结构体成员的引用 引用成员可用以下 3 种方式:(1)结构体变量名.成员名;(2)指针变量名->成员名:(3) (*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运算符。 【知识点 4】链表 链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域 与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向下一个结点。链表是考 试中的难点,在 C 语言和公共基础部分都会考到,要领悟掌握。 【知识点 5】共用体 共用体的使用格式与结构体相似,共用体定义的关键字为 union,共用体所占字节数是 所有成员中字节数最大的那个。 第十一章 文件 【知识点 1】文件类型指针 文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件 时,都需要先定义文件指针。 【知识点 2】文本文件与二进制文件 文本形式存放的是字符的 ASCII 码,二进制形式存放的是数据的二进制。例如“100” 如果是文本形式就是存储’1’、 ’0’、 ’0’三个字符的 ASCII 码(00110001 00110000 00110000),如果是二进制形式就把 100 转化成二进制(01100100)。 【知识点 3】打开文件 文件的打开形式如下:FILE *fp; fp=fopen(“c:\\lab.c”,”rb”);。fopen 函数的前面一 部分为文件名,后面一部分为文件的使用方式。打开方式详见教材,其中 r 代表读,w 代表 写,a 代表添加,b 代表二进制位的。 【知识点 4】文件函数 判断文件结束 feof 函数,移动文件指针位置 fseek 函数,获得文件位置 ftell 函数,文件 位置移到开头 rewind 函数,文件字符输入输出 fgetc 函数和 fputc 函数,文件输入输出 fscanf 函数和 fprintf 函数,文件字符串输入输出 fgets 函数和 fputs 函数,读写二进制文件 fread 函
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(分支与循环以前知识点,带答案).pdf
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(数组,带答案).pdf
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第06章 指针.ppt
- 《C语言程序设计》课程教学资源(讲义资料)C语言程序设计期中测试(函数,带答案).pdf
- 《C语言程序设计》课程教学课件(PPT讲稿)c语言指针完整教程.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)C语言指针详解.ppt
- 《C语言程序设计》课程教学资源(讲义资料)C语言指针用法详解.pdf
- 《C语言程序设计》课程教学资源(讲义资料)C指针详解(经典详细).pdf
- 《C语言程序设计》课程教学资源(讲义资料)C语言中详解指针.doc
- 《计算机导论》课程教学课件(英文讲稿)7-a- Web.pdf
- 《计算机导论》课程教学课件(英文讲稿)6-b- The Internet.pdf
- 《计算机导论》课程教学课件(英文讲稿)6-a- The Internet.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-b- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-a- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)4-a- File mangement.pdf
- 《计算机导论》课程教学课件(英文讲稿)4- operating system.pdf
- 《计算机导论》课程教学课件(英文讲稿)3-a-b-Computer Software.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-b-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-a-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)1-b-Digital Data Representation.pdf
- 《C语言程序设计》课程教学资源(讲义资料)考试知识点复习(C语言程序设计复习样题及部分解析).doc
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第09章 文件.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第08章 结构体.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第07章 预处理命令.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第05章 函数.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第04章 数组.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第03章 三种基本控制结构(下).ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第04章 三种基本控制结构(上).ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第02章 数据类型、运算符和表达式.ppt
- 中国农业大学:《C语言程序设计》课程教学课件(PPT讲稿)第01章 C语言概述(主讲:李辉).ppt
- 《数据结构》课程实验教学大纲 Data Structure.doc
- 《数据结构》课程设计教学大纲 Course Design of Data Structure.doc
- 《数据结构》课程教学大纲 Data Structure.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案8.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案6.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案7.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案9.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案2.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案3.doc
- 《数据结构》课程教学资源(作业习题)练习题及答案4.doc