《二级C语言程序设计》章节题库(编译预处理和动态存储分配)【圣才出品】
- 格式:pdf
- 大小:528.89 KB
- 文档页数:26
c语言二级考试题库及详解答案C语言二级考试题库及详解答案一、选择题1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. 3numberD. variable#答案:B2. C语言中,整型变量int所占的字节数是:A. 1字节B. 2字节C. 4字节D. 8字节答案:C(注:实际字节数可能因编译器和平台而异,但通常为4字节)3. 下列哪个不是C语言的控制语句?A. ifB. switchC. forD. goto答案:B(注:switch也是C语言的控制语句,此题有误)二、填空题1. 在C语言中,若要定义一个整型数组,可以使用以下语法:___________。
答案:int array_name[array_size];2. C语言中,用于计算两个数的乘积的运算符是:___________。
答案:*三、简答题1. 简述C语言中数组和指针的区别。
答案:数组是一种数据结构,用于存储相同类型的元素集合。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以作为指针使用,但数组本身不是指针。
数组的大小在定义时确定,而指针可以指向不同大小的内存块。
2. 解释C语言中的递归函数。
答案:递归函数是一种函数,它在执行过程中调用自己。
递归函数通常用于解决可以分解为相似子问题的问题。
递归函数必须有一个明确的终止条件,以避免无限递归。
四、编程题1. 编写一个C语言程序,实现求1到100的和。
答案:```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串反转。
答案:```cvoid reverseString(char *str) {int len = 0;while(str[len] != '\0') {len++;}for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - 1 - i];str[len - 1 - i] = temp;}}```五、论述题1. 论述C语言中函数的作用和重要性。
全国计算机二级《C语言》考试题库与答案全国计算机二级《C语言》考试题库与答案在学习、工作中,我们都离不开试题,借助试题可以检验考试者是否已经具备获得某种资格的基本能力。
什么样的试题才能有效帮助到我们呢?以下是店铺为大家收集的全国计算机二级《C语言》考试题库与答案,欢迎大家分享。
全国计算机二级《C语言》考试题库与答案篇1(1)下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除(2)下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3B.4C.6D.7软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ):A.学生成绩管理系统B.c语言编译程序C.UNIX操作系统D.数据库管理系统(5)结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构(6)下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是( )。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言一个教师可讲授多门课程,一门课程可由多个教师讲授。
则实体教师和课程间的联系是( )。
A.1:1联系B.1:m联系C.m:1联系D.m:n联系(9)已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
由于计算机等级考试的试题是有版权的,根据版权法的保护,我不能为您提供具体的试题内容。
但是,我可以为您提供一些关于计算机等级考试二级C语言的常见考题类型和一些备考建议。
1.程序分析与设计该部分的考题主要着重考察考生对问题的分析能力和设计能力,需要考生能够根据题目要求进行程序结构设计、算法设计等。
备考建议:多阅读相关算法和数据结构的书籍,多进行程序练习和项目实践,提高自己的问题分析与设计能力。
2.C语言基础知识该部分的考题主要考察考生对C语言的基本知识掌握程度,包括C语言的基本语法、变量类型、运算符、控制语句、函数等。
备考建议:系统学习C语言基础知识,掌握C语言的基本语法和常用函数,多进行编码练习,增加对C语言的熟练度。
3.数组与字符处理该部分的考题主要考察考生对数组和字符处理的掌握程度,包括数组的定义和使用、字符的输入输出和处理、字符串的操作等。
备考建议:多进行数组和字符的练习题,掌握数组和字符的常见操作方法,多进行字符串处理的练习。
4.文件操作该部分的考题主要考察考生对文件操作的掌握程度,包括文件的打开和关闭、文件的读写等。
备考建议:学习文件操作的基本方法和函数,多进行文件的读写操作练习。
5.数据结构该部分的考题主要考察考生对数据结构知识的掌握程度,包括链表、栈、队列等数据结构的定义和操作。
备考建议:学习常见的数据结构知识,掌握相关的常用操作方法,多进行数据结构的练习。
在备考过程中,要注重理论知识的学习,同时也要注重实践操作的练习。
可以通过自己编写程序、参与项目实践或者进行在线编程练习等方式提高自己的编程技能。
此外,了解考试的命题规律,多进行模拟考试,提高自己的应考能力。
希望以上信息对您有所帮助,祝您考试顺利!。
全国计算机等级考试二级C语言程序设计真题精选3一、单项选择题1.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件√D.文件由字符序列组成,其类型只能是文本文件解析:C语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组成形式,可将文件分为两种:①ASCII文件,又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符;②二进制文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
所以C文件就是一个字节流或一个二进制流。
2.有以下程序:#includ<stdio.h>main()inm=1,n=2,*p=&m,*q=&n,*r; r=p,p=q;q=r; printf("%d,%d,%d,%",m,n,*p,*q);}程序运行后的输出结果是()。
A.1,2,1,2B.1,2.2,1 √C.2,1,2,1D.2,1.1,2解析:本题定义了两个整型变量,然后用两个指针分别指向这两个整型变量,接着对指针进行交换,那么原来指向第一个整数的指针将指向第二个整数,原来指向第二个整数的指针将指向第一个整数。
3.有以下程序:#includ<stdio.h>#include<string.h>strucAina;chab[10];doublc;};strucf (struct);main()struca={1001,"ZhangDa",1098.0}; a=f(a);printf ("%d,%s,%6.1",a.a,a.b,a.c);}strucf(struct)t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returt;}程序运行后的输出结果是()。
1.2算法1[填空题]一颗二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】O参考解析:[2】DEBFCA【解析】根据二叉树的中序遍历原则可知D为二叉树的最左边的叶子结点,根据二叉树的前序遍历原则可知A是二叉树的根结点,就可以确定二叉树的结构,所以二叉树的后序遍历结果为:DEBFCA02[填空题]队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。
允许删除的一端称作。
参考解析:队头【解析】队列是只允许在一端删除,在另一端插入的顺序表,在队列中。
允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
3[填空题]在最坏情况下,堆排序需要比较的次数为。
参考解析:0(nlog2n)【解析】在最坏情况下,冒泡排序所需要的比较次数为n(nr1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为0(nl.5);堆排序所需要的比较次数为0(nlog2n)。
4[单选题]算法的有穷性是指()。
Λ,算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用参考答案:A参考解析:算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。
③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
,④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
⑤输出:一个算法有一个或多个输出。
5[单选题]下列叙述中正确的是()。
A.数据的逻辑结构与存储结构是一一对应的B.算法的时间复杂度与空间复杂度一定相关C.算法的效率只与问题的规模有关,而与数据的存储结构无关D.算法的时间复杂度是指执行算法所需要的计算工作量参考答案:D参考解析:根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。
《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案(教育部考试中心)高等教育出版社出版(第一章、第二章、第三章)第一章程序设计基本概念1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。
答案:.exe1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:.c .obj .exe1.3 结构化程序由_____、_____、_____三种基本结构组成。
答案:顺序、选择、循环第二章 C程序设计的初步知识一、选择题2.1 以下选项中正确的整型常量是A)12. B)-20 C)1,000 D)4 5 6答案:B2.2 以下选项中正确的实型常量是A)0 B)3. 1415 C)0.329×10(2)(10的2次方)D).871答案:D2.3 以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2答案:B2.4 以下选项中不合法的用户标识符是A)abc.c B)file C)Main D)PRINTF答案:A2.5 以下选项中不合法的用户标识符是A)_123 B)printf C)A$ D)Dim答案:C2.6 C语言中运算对象必需是整型的运算符是A)% B)/ C)! D)**答案:A2.7 可在C程序中用作用户标识符的一组标识符是A)void define WORDB)as_b3 _123 IfC)For -abc caseD)2c DO SIG答案:B2.8 若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b答案:B2.9 以下叙述中正确的是A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。
计算机二级C语言章节练习题及答案2017年计算机二级C语言章节练习题及答案计算机二级统一成绩查询入口为教育部考试中心,部分省市如江苏、黑龙江等也可通过省市考试院或者人事考试中心进行查询。
这是店铺准备的2017年计算机二级C语言章节练习题及答案,快来看看吧。
1.1 程序和程序设计1[单选题] 数据库概念设计的过程中,以下各项中不属于视图设计设计次序的是( )。
A.自顶向下B.由整体到个体C.由内向外D.由底向上参考答案:B参考解析:数据库概念设计的过程中,视图设计一般有三种设计次序,它们是:自顶向下。
这种方法是先从抽象级别高且普遍性强的对象开始逐步细化、具体化与特殊化。
由底向上。
这种设计方法是先从具体的对象开始,逐步抽象,普遍化与一般化,最后形成一个完整的视图设计。
由内向外。
这种设计方法是先从最基本与最明显的对象着手逐步扩充至非基本、不明显的其他对象。
2[单选题] 关系数据库管理系统能实现的专门关系运算包括( )。
A.选择、投影、连接B.排序、查找、统计C.关联、更新、排序D.显示、打印、制表参考答案:A参考解析:关系数据库管理系统能实现的专门关系运算,包括选择运算、投影运算、连接运算。
3[单选题] 关系表中的每一横行称为一个( )。
A.字段B.元组C.行D.码参考答案:B参考解析:在关系数据库中,关系模型采用二维表来表示,简称“表”。
二维表由表框架及表元组组成。
在表框架中,按行可以存放数据,每行数据称为元组。
本题答案是B)。
4[单选题] 下列叙述中正确的是( )。
A.数据库不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合D.数据库系统中,数据的.物理结构必须与逻辑结构一致参考答案:C参考解析:数据库是存储在计算机存储设备中的、结构化的相关数据的集合。
数据库中的数据不只是面向某一项特定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立的系统。
第13章编译预处理和动态存储分配考点归纳13.1 宏定义(不带参数的宏定义,带参数的宏定义)1.编译预处理就是对C源程序进行编译前,由″编译预处理程序″对预处理命令行进行处理的过程。
2.C语言中,凡是以″#″开头的行,都称为″编译预处理″命令行。
C语言中的编译预处命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。
这些预处理命令组成的预处理命令行必须在一行的开头以″#″号开始,每行的未尾不得加″;″号,以区别于C语句、定义和说明语句。
3.不带参数的宏定义:命令的一般形式为:#define 标识符字符串定义中的″标识符″为用户定义的标识符,称为宏名。
在预编译时,C预编译程序将出现的宏名替换成″字符串″的内容,这一过程也称为宏展开。
4.带参数的宏定义:命令的一般形式为#define宏名(形式参数) 字符串定义中的″字符串″应包含括号中所指定的形式参数。
注意宏名与括号之间不要加空格,否则就成为不带参数的宏定义了。
5.预编译时,遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换,原则是:遇到实参则以实参代替,非形参字符原样保留,从而成展开后的内容。
13.2 “文件包含”处理1.文件包含的一般形式为:#include″头文件名″#include<头文件名>头文件名一般由C语言提供,也可以是用户自己编写的,头文件通常用.h作为后缀。
2.当头文件名用双引号括起来时,系统首先在使用此命令的文件所在的目录中查找被包含的文件,找不到时,再按系统指定的标准方式检索其它目录;当头文件名用尖括号括起来时,则直接按系统指定的标准检索方式查找被包含的文件。
3.预编译时,将被包含文件的内容全部复制到包含文件中,这就是文件″包含处理″。
13.3 条件编译C语言中的条件编译命令可对源程序代码的各部分有选择地进行编译。
《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 100000002.26 【参考答案】[1]32767 [2]-32768 [3]10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
第13章编译预处理和动态存储分配
1.以下叙述中正确的是()。
A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于C源程序的起始位置
C.#include<stdio.h>必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
【答案】A
【解析】“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。
A项正确,在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。
B项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾;C项错误,#include <stdio.h>可以出现在程序的任意一行的开始部位;D项错误,预处理可以实现宏定义、条件编译和文件包含。
答案选择A选项。
2.以下关于编译预处理的叙述中错误的是()。
A.预处理命令行必须位于源程序的开始
B.源程序中凡是以#开始的控制行都是预处理命令行
C.一行上只能有一条有效的预处理命令
D.预处理命令是在程序正式编译之前被处理的
【答案】A
【解析】通常,预处理命令位于源文件的开头,也可以写在函数与函数之间。
答案选择A选项。
3.以下关于宏的叙述中正确的是()。
A.宏名必须用大写字母表示
B.宏定义必须位于源程序中所有语句之间
C.宏替换没有数据类型限制
D.宏调用比函数调用耗费时间
【答案】C
【解析】A项错误,在C语言中,宏名可以是任何合法的C语言标识符,只不过通常习惯用大写字母;B项错误,宏可以根据需要出现在程序的任何一行的开始部位;D项错误,宏定义是“编译预处理”命令,它们的替换过程在编译时期就已经完成了,因此不会占有程序运行的时间。
答案选择C选项。
4.以下关于宏的叙述错误的是()。
A.宏替换不具有计算功能
B.宏是一种预处理指令
C.宏名必须用大写字母构成
D.宏替换不占用运行时间
【答案】C
【解析】宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,答案选择C选项。
5.以下叙述中错误的是()。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#define MAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的
【答案】D
【解析】在C语言中,以“#”开头的行都称为“编译预处理命令行”,其中的末尾不得用“;”结束,区别语句的定义和说明语句,选项A、B正确。
C项中的宏定义为不带参数的宏命令行,宏名之后可以有替换文本,也可以没有,选项C正确。
编译预处理是在编译程序对C源程序进行编译前执行的,选项D错误。
答案选择D选项。
6.若程序中有宏定义行:
#define N 100
则以下叙述中正确的是()。
A.宏定义行中定义了标识符N的值为整数100
B.在编译程序对C源程序进行预处理时用100替换标识符N
C.上述宏定义行实现将100赋给标识符N
D.在运行时用100替换标识符N
【答案】D
【解析】D项正确,预处理程序对源程序中所有使用宏名的地方进行直接替换。
A项错误,宏定义没有类型限制;B项错误,预处理程序进行宏替换,而非编译程序;C项错误,宏定义不是赋值操作,而是进行在预编译时进行替换。
答案选择D选项。
7.以下选项中的编译预处理命令行,正确的是()。
A.#define PI 3.14
B.##define eps 0.001
C.#DEFINE TRUE
D.#define int INT
【答案】A
【解析】A项正确。
不带参数的宏定义是用一个指定的标识符来代表一个字符串,其一般形式如下:#define宏名替换文本。
需要注意:①在#define、宏名和替换文本之间用空格隔开;②在C程序中,宏定义的定义位置一般写在程序的开头;③宏名一般用大写字母表示,便于与变量名区别;④宏定义是用宏名来表示一个字符串,在宏展开时以该字符串取代宏名,这只是一种简单的代换,预处理程序对它不做任何检查;⑤宏定义不是语句,在行末不加分号,如加上分号则连分号也一起替换。
B项define前多了一个#。
C项缺少“替换文本”。
D项不能将一个自定义标识符宏定义为关键字。
答案选择A选项。
8.下面关于编译预处理的命令行,正确的是()。
A.#define PAI 3.14
B.#Define Eps 0.00001
C.##DEFINE FALSE 0
D.#define int INT
【答案】A
【解析】宏定义用法一般表达式为:
#define 宏名替换文本
A项满足宏定义用法;C语言中是区分大小写的,define属于C语言的关键字,不可以大写,B、C项错误;D项中,int是代表整数类型,不满足define用法,D项错误。
答案选择A选项。
9.有如下程序:
#include <stdio.h>
#define D(x)4*x+1
main()
{
int i=2,j=4;
printf("%d\n",D(i+j));
}
程序运行后的输出结果是()。
A.25
B.13
C.9
D.12
【答案】B
【解析】带参数的宏定义不是进行简单的字符串替换,而是要进行参数替换。
替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。
调用函数D(i+j),进行替换为4*i+j+1=13,输出13,答案选择B选项。
10.有以下程序:
#include<stdio.h>
#define S(x) x *x
main()
{
int k=5,j=2;
printf("%d,%d\n",S(k+j+2),S(j+k+2));
}
程序的运行结果是()。
A.21,18
B.81,81
C.21,21
D.18,18
【答案】A
【解析】带参数的宏的替换过程是,用宏调用提供的实参字符串直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。
S(k+j+2)被置换成k+j+2*k+j+2,计算时先计算2*k,结果为21;S(j+k+2)被置换成j+k+2*j+k+2,计算时先计算2*j,结果为18。
程序的运行结果是21,18。
答案选择A选项。