2022年全国计算机二级考试C语言易错知识点汇总 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年全国计算机二级考试C语言易错知识点汇总 .pdf》由会员分享,可在线阅读,更多相关《2022年全国计算机二级考试C语言易错知识点汇总 .pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. . . . . 计算二级 C语言易错知识点1.指针是用来存放地址的变量,用( 类型名 * 指针变量名 ) 的形式定义。 赋值时应将某个变量地址即&x 赋给指针变量2.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp) 的返回值为 A) 0 B) 0 C) 非 0 值 D) NULL 【解析】本题考查文件的定位,feof 函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof 函数值为非零值,否则为0,所以选项 C正确。3.有以下程序#include main() int a=5,b=1,t; t=(a2)|b; printf(%dn,t); 程序
2、运行后的输出结果是 A) 1 B) 11 C) 6 D) 21 【解析】本题考查位运算, 以及按位或操作, 将 a 左移一位相当于是将a 乘以了4,所以 a2等于 20,二进制表示为 00010100,与 b 按位或得到 00010101,即21,所以选项 D正确。4.有以下程序 #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 26 页 - - - - - - - - - . . . . . #define N 5 #define M N+1 #defi
3、ne f(x) (x*M) main() int i1,i2; i1=f(2) ; i2=f(1+1) ; printf(%d %dn,i1,i2); 程序的运行结果是 A) 12 7 B) 12 12 C) 11 11 D) 11 7 【解析】本题考查宏定义的用法, 宏定义只是做个简单的替换,所以本题中执行f(2)=(2*N+1)=11,执行 f(1+1)=(1+1*N+1)=7 。选项 D正确。5.有以下程序#include #include struct A int a; char b10; double c; ; void f(struct A t); main() struct A
4、a=1001,ZhangDa,1098.0; f(a); printf(%d,%s,%6.1fn, a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,ChangRong); t.c=1202.0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 26 页 - - - - - - - - - . . . . . 程序运行后的输出结果是 A) 1002, ZhangDa,1202.0 B) 1002,ChangRong
5、,1202.0 C) 1001, ChangRong,1098.0 D) 1001,ZhangDa,1098.0 【解析】本题考查结构体的相关操作以及传值、传址的区别, 该题中调用 f 函数后,会生成参数 a 的一个副本,而不会改变a 的值,所以 a 值维持原值,选项D正确。6.假定已建立以下链表结构,且指针p 和 q 已指向如图所示的结点:则以下选项中可将q 所指结点从链表中删除并释放该结点的语句组是 A) p-next=q-next;free(q); B) p=q-next;free(q); C) p=q;free(q); D) (*p).next=(*q).next;free(p); 【
6、解析】本题考查删除链表中的节点操作,其方法是将要删除节点的上个节点的下个节点指向要删除节点的下个节点, 然后释放该要删除节点, 所以选项 A正确。7.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 26 页 - - - - - - - - - . . . . . 以下结构体类型说明和变量定义中正确的是 A) struct REC; int n;char c; REC t1,t2; B) typedef struct int n;char c; REC; REC t1,t2
7、; C) typedef struct REC; int n=0; char c=A; t1,t2; D) struct int n;char c; REC; REC t1,t2; 【解析】本题考查结构体的相关知识,选项A中 struct REC 后面不能有分号, C选项中 typedef struct REC的后面也不能有分号,选项D中 REC已经是结构体变量,不能当做结构体类型来使用。8.下列函数的功能是void fun(char *a,char *b) while(*b=*a)!=0) a+;b+; A) 将 a 所指字符串赋给 b 所指空间 B) 使指针 b 指向 a 所指字符串 C)
8、 将 a 所指字符串和 b 所指字符串进行比较 D) 检查 a 和 b 所指字符串中是否有 0 【解析】 While 循环条件为: (*b=*a)!=0,执行时先把指针a 所指向的字符赋给指针 b 所在存单元,如果该字符不是结束标识0 ,执行循环体 a+;b+; ,指针 a、b 分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a 所指向的字符赋给指针b 所在存单元,直到遇到结束标识为止。因此A选项正确。9.有以下程序 #include void fun(char *a,char *b) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
9、 - - - - 名师精心整理 - - - - - - - 第 4 页,共 26 页 - - - - - - - - - . . . . . while(*a=*) a+; while(*b=*a) b+;a+; main() char *s=*a*b* , t80; fun(s,t); puts(t); 程序的运行结果是 A) ab B) a*b C) *a*b D) a*b* 【解析】在函数 fun(char *a,char *b)中,while(*a *)a+的功能是:如果*a 的容为 *,则 a 指针向后移动,直到遇到非*字符为止,退出循环进入下一个 while 循环,在 while(
10、*b *a)b ;a ; 中,把字符数组 a 中的字符逐个赋给字符数组b。所以在主函数中,执行fun(s,t)语句后,字符数组t中的容为 a*b*。因此 D选项正确。10.以下关于字符串的叙述中正确的是 A) 空串比空格打头的字符串小 B) 两个字符串中的字符个数相同时才能进行字符串大小的比较 C) 可以用关系运算符对字符串的大小进行比较 D) C 语言中有字符串类型的常量和变量【解析】字符串比较大小是以第1 个不相同字符的大小为标准的, 跟长度没有关系,B选项不正确; 字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了, 而不能通过关系运算符来比较大小。因为字符串在
11、表达式中相当于 const char* ,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。C选项不正确。 C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此 A选项是正确。11.以下程序中函数 f 的功能是:当 flag为 1 时,进行由小到大排序;当flag 为 0时,进行由大到小排序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 26 页 - - - -
12、 - - - - - . . . . . #include void f(int b,int n,int flag) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jbj:bibj) t=bi;bi=bj;bj=t; main() int a10=5,4,3,2,1,6,7,8,9,10,i; f(&a2,5,0); f(a,5,1); for(i=0;i10;i+) printf(%d,ai); 程序运行后的输出结果是 A) 1,2,3,4,5,6,7,8,9,10, B) 3,4,5,6,7,2,1,8,9,10, C) 5,4,3,2,1,6,7,8,9,1
13、0, D) 10,9,8,7,6,5,4,3,2,1, 【解析】本题重点考查函数的参数传递, 函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。函数 f 完成的功能是对数据进行排序,语句 f(&a2,5,0)的作用是对从 a2 开始的 5 个元素进行从大到小排序。注意:这里传递的是地址&a2 ,所以排序操作可看作是直接对数组a 操作,执行后的结果为 5,4,7,6,3,2,1, 8,9,10 。语句 f(a,5,1)对数组 a 的前 5 个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1, 8,9,10。因此 B选项正确。12.若有定义语句: int a23
14、,*p3; 则以下语句中正确的是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 26 页 - - - - - - - - - . . . . . A) p=a; B) p0=a; C) p0=&a12; D) p1=&a; 【解析】 A选项错误,因为 p 是指向一个指针数组,作为数组名,不能指向别的地方。 B选项错误,因为p0 是一个 int指针,也就是 int* ;而 a 是一个指向指针的指针 int*。 C选项正确,因为 p0 是一个 int* , a12是 int
15、, &a12是 int* ,类型吻合。 D选项错误,因为 a 作为数组名,不能取地址,即使能取,p1 是 int* ,&a是 int*,类型不对。因此C选项正确。13.以下叙述中错误的是 A) C 程序必须由一个或一个以上的函数组成 B) 函数调用可以作为一个独立的语句存在 C) 若函数有返回值,必须通过return语句返回 D) 函数形参的值也可以传回给对应的实参【解析】形参是函数定义时由用户定义的形式上的变量,实参是函数调用时, 主调函数为被调函数提供的原始数据。在 C语言中,实参向形参传送数据的方式是“值传递”。因此D选项正确。14.有以下程序 #include main() int a
16、=1,b=2; for( ;a0|E0) B) (E=0) C) (! E=0) D) (E!=0) 【解析】 while 语句中条件表达式E的值不为 0 即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。16.若有定义: int a,b; 通过语句 scanf(%d;%d,&a,&b); 能把整数 3 赋给变量 a,5 赋给变量 b 的输入数据是 A) 3 5 B) 3,5 C) 3;5 D) 35 【解析】输入数据的格式必须与scanf() 的格式控制串完全匹配,所以输入时必须在 3 和 5 之间输入 ; 。17.名师资料总结 - - -精品资料欢迎下载 - - - -
17、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 26 页 - - - - - - - - - . . . . . 以下关于 C语言的叙述中正确的是 A) C 语言的数值常量中夹带空格不影响常量值的正确表示 B) C 语言中的变量可以在使用之前的任何位置进行定义 C) 在 C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D) C 语言中的注释不可以夹在变量名或关键字的中间【解析】 C语言的数值常量中不能夹带空格,所以A错误。 C语言中的变量都必须先定义再使用, 对变量的定义通常放在函数体的前部,但也可以放在函数外部或复
18、合语句的开头, 不能随便放置, 所以 B错误。在 C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,所以C错误?18.一个教师可讲授多门课程, 一门课程可由多个教师讲授。 则实体教师和课程间的联系是 ( )。 A) 1 :1 联系 B) 1 :m联系 C) m :1 联系 D) m :n 联系【解析】因为一个教师可讲授多门课程, 而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m :n。19.负责数据库中查询操作的数据库语言是( ) 。 A) 数据定义语言 B) 数据管理语言 C) 数据操纵语言 D) 数据控制语言【解析】数据定义语言: 负责数据的模式定
19、义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。20.下面描述中错误的是 ( ) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 26 页 - - - - - - - - - . . . . . A) 系统总体结构图支持软件系统的详细设计 B) 软件设计是将软件需求转换为软件表示的过程 C) 数据结构与数据库设计是软件设计的任务之一 D) PAD 图是软件详细
20、设计的表示工具【解析】详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以 A)错误。21.某二叉树共有 7 个结点,其中叶子结点只有1 个,则该二叉树的深度为 ( 假设根结点在第 1 层)( ) 。 A) 3 B) 4 C) 6 D) 7 【解析】根据二叉树的基本性质3:在任意一棵二叉树中,度为0 的叶子结点总比度为 2 的结点多一个, 所以本题中度为 2 的结点为 110 个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共 7 个结点共 7 层,即度为7。22.下列叙述中正确的是 ( ) 。
21、A) 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 B) 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 C) 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D) 以上说法均不正确解析】栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C)。23.下列关于栈叙述正确的是( ) 。 A) 栈顶元素最先能被删除 B) 栈顶元素最后才能被删除名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 26 页
22、 - - - - - - - - - . . . . . C) 栈底元素永远不能被删除 D) 栈底元素最先被删除解析】栈是先进后出的数据结构, 所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A)。24.有以下程序:#include main() unsigned char a2,b 4,c 5,d; d a|b;d & c;printf(%dn,d); 程序运行后的输出结果是( ) 。 A) 3 B) 4 C) 5 D) 6 【解析】 & 按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为 0。| 按位或,两个相应的二进制位中只要有一个为1,该位的结果值
23、为 1。2的二进制为 00000010,4 的二进制为 00000100, 所以做或运算结果为00000110,该数与 5 即 00000101做与操作结果为 00000100,即 4。25.以下叙述中错误的是 ( ) 。A) 使用三种基本结构构成的程序只能解决简单问题B) 结构化程序由顺序、分支、循环三种基本结构组成C) C 语言是一种结构化程序设计语言D) 结构化程序设计提倡模块化的设计方法正确答案: A 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 26 页 -
24、 - - - - - - - - . . . . . 答疑:【解析】使用顺序,选择 ( 分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A)错误。26.数据库应用系统中的核心问题是数据库的设计。27.耦合性和聚性是对模块独立性度量的两个标准。下列叙述中正确的是( ) 。A) 提高耦合性降低聚性有利于提高模块的独立性B) 降低耦合性提高聚性有利于提高模块的独立性C) 耦合性是指一个模块部各个元素间彼此结合的紧密程度D) 聚性是指模块间互相连接的紧密程度正确答案: B 答疑:【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单
25、。一般较优秀的软件设计,应尽量做到高聚,低耦合, 即减弱模块之间的耦合性和提高模块的聚性,有利于提高模块的独立性,所以 A)错误,B)正确。耦合性是模块间互相连接的紧密程度的度量而聚性是指一个模块部各个元素间彼此结合的紧密程度,所以C)与 D)错误。28.软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划, 排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年全国计算机二级考试C语言易错知识点汇总 2022 全国计算机 二级 考试 语言 知识点 汇总
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内