2008年9月全国计算机等级考试二级C语言笔试试题(含参考答案)
全国计算机等级考试二级C笔试试卷(含参考答案)
全国计算机等级考试二级C笔试试卷(含参考答案)以下各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)以下表达中正确的选项是A)程序设计就是编制程序 B)程序的测试必须由程序员自己去完成C)程序经调试改错后还应进展再测试 D)程序经调试改错后不必进展再测试(2)以下数据构造中,能用二分法进展查找的是A)顺序存储的有序线性表 B)线性链表C)二叉链表 D)有序线性链表(3)以下关于栈的描述正确的选项是A)在栈中只能插入元素而不能删除元素B)在栈中只能删除元素而不能插入元素C)栈是特殊的线性表,只能在一端插入或删除元素D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(4)以下表达中正确的选项是A)一个逻辑数据构造只能有一种存储构造B)数据的逻辑构造属于线性构造,存储构造属于非线性构造C)一个逻辑数据构造可以有多种存储构造,且各种存储构造不影响数据处理的效率D)一个逻辑数据构造可以有多种存储构造,且各种存储构造影响数据处理的效率(5)以下描述中正确的选项是A)软件工程只是解决软件工程的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原那么D)软件工程只是解决软件开发中的技术问题(6)在软件设计中,不属于过程设计工具的是A)PDL(过程设计语言) B)PAD图 C)N-S图 D)DFD图(7)以下表达中正确的选项是A)软件交付使用后还需要进展维护B)软件一旦交付使用就不需要再进展维护C)软件交付使用后其生命周期就完毕D)软件维护是指修复程序中被破坏的指令(8)数据库设计的根本目标是要解决A)数据共享问题 B)数据平安问题C)大量数据存储问题 D)简化数据维护(9)设有如下关系表:R S TA B C A B C A B C1 123 1 3 1 1 22 23 2 2 33 1 3那么以下操作中正确的选项是A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S(10)数据库系统的核心是A)数据模型 B)数据库管理系统 C)数据库 D)数据库管理员(11)以下表达中错误的选项是A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识(12)以下表达中错误的选项是A)C语句必须以分号完毕B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句(13)以下表达中正确的选项是A)调用printf函数时,必须要有输出项B)使用putchar函数时,必须在之前包含头文件stdio.hC)在中,整数可以以十二进制、八进制或十六进制的形式输出D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码(14)以下关于函数的表达中正确的选项是A)每个函数都可以被其它函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数(15)假设有语句:char *line[5];,以下表达中正确的选项是A)定义line是一个数组,每个数组元素是一个基类型为char 的指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(16)有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;以下表达中正确的选项是A)以上的说明形式非法 B)NODE是一个构造体类型C)OLD是一个构造体类型 D)OLD是一个构造体变量(17)以下表达中错误的选项是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句 FILE fp; 定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(18)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1(19)以下不能正确计算代数式值的C语言表达式是A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2)(20)以下能正确定义且赋初值的语句是A)int n1=n2=10; B)char c=32;C)float f=f+1.1; D)double x=12.3E2.5;(21)以下程序的功能是:给r输入数据后计算半径为r的圆面积s。
2008年9月计算机等级考试二级C语言模拟试卷及其答案
2008年9月计算机等级考试二级C语言模拟试卷及其答案
转贴于:计算机二级考试_考试大
全国计算机等级考试二级C语言模拟试卷答案
一、选择题
(1)D
评析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。
一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。
(2)B
评析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。
《电力拖动控制线路与技能训练》试卷(A)
.21。
计算机二级c语言试题及答案解析
计算机二级c语言试题及答案解析一、选择题1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A解析:关键字`struct`用于定义一个结构体,它允许将多个不同类型的数据项组合成一个单一的数据结构。
2. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ::D. ||答案:C解析:`%`是取模运算符,`&&`是逻辑与运算符,`||`是逻辑或运算符,而`::`不是C语言中的运算符。
二、填空题1. 在C语言中,`________`关键字用于声明一个函数。
答案:int解析:在C语言中,`int`是用于声明一个函数的返回类型,表示该函数返回一个整数值。
2. 以下代码片段中,`________`用于定义一个名为`data`的数组,包含10个整数。
```cint data[10];```答案:int data[10];解析:`int data[10];`定义了一个名为`data`的数组,它包含10个整数。
三、编程题1. 编写一个C语言函数,计算并返回两个整数的和。
```cint add(int a, int b) {return a + b;}```答案:```cint add(int a, int b) {return a + b;}```解析:该函数接受两个整数参数`a`和`b`,计算它们的和,并返回结果。
2. 编写一个C语言程序,实现将一个字符串反转。
```c#include <stdio.h>#include <string.h>void reverse(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) { char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverse(str);printf("Reversed string: %s\n", str); return 0;}```答案:```c#include <stdio.h>#include <string.h>void reverse(char *str) {int len = strlen(str);for (int i = 0; i < len / 2; i++) { char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverse(str);printf("Reversed string: %s\n", str);return 0;}```解析:该程序定义了一个`reverse`函数,它接受一个字符串作为参数,并通过交换字符的方式将字符串反转。
全国计算机二级《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语言试题及答案
计算机二级证考试c语言试题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 若有以下定义:```cint a = 5, b = 10;```则执行以下语句后,变量a的值是多少?```ca += (b -= 3);```A. 8B. 12C. 15D. 2答案:B3. 在C语言中,以下哪个函数用于计算浮点数的平方根?A. sqrt()B. pow()C. log()D. exp()答案:A4. 若有以下代码:```cchar str[] = "Hello";```则str数组的长度是多少?A. 5B. 6C. 7D. 10答案:B5. 在C语言中,以下哪个运算符用于计算两个整数的模?A. %B. /C. *D. /答案:A6. 在C语言中,以下哪个关键字用于声明一个无限循环?A. whileB. forC. do...whileD. goto7. 若有以下定义:```cint x = 3;```则执行以下语句后,变量x的值是多少?```cx = (x - 1) ? (x - 1) : (x + 1);```A. 2B. 4C. 3D. 0答案:A8. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strncat()答案:A9. 在C语言中,以下哪个关键字用于声明一个指针?A. intB. charC. floatD. *10. 若有以下代码:```cint a = 10, b = 20;```则执行以下语句后,变量a的值是多少?```ca =b = 30;```A. 10B. 20C. 30D. 40答案:C二、填空题(每题3分,共15分)1. 在C语言中,使用________关键字可以定义一个宏。
2008年9月全国计算机等级考试二级C语言笔试真题及参考答案
2008年9月二級C語言筆試真題及答案(1)一個棧的初始狀態為空。
現將元素1、2、3、4、5、A、B、C、D、E 依次入棧,然後再依次出棧,則元素出棧的順序是()。
A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA(2)下列敘述中正確的是()。
A)迴圈佇列有隊頭和隊尾兩個指針,因此,迴圈佇列是非線性結構B)在迴圈佇列中,只需要隊頭指針就能反映佇列中元素的動態變化情況C)在迴圈佇列中,只需要隊尾指針就能反映佇列中元素的動態變化情況D)迴圈佇列中元素的個數是由隊頭指針和隊尾指針共同決定3)在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數是()。
A)O(n) B)O(n2) C)O(log2n) D)O(n log2n)4)下列敘述中正確的是()。
A)順序存儲結構的存儲一定是連續的,鏈式存儲結構的存儲空間不一定是連續的B)順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構C)順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表 D)鏈式存儲結構比順序存儲結構節省存儲空間5)數據流圖中帶有箭頭的線段表示的是()。
A)控制流 B)事件驅動 C)模組調用 D)數據流6)在軟體開發中,需求分析階段可以使用的工具是()。
A)N-S 圖 B)DFD 圖 C)PAD 圖 D)程式流程圖7)在面向對象方法中,不屬於“對象”基本特點的是()。
A)一致性 B)分類性 C)多態性 D)標識唯一性(8)一間宿舍可住多個學生,則實體宿舍和學生之間的聯繫是()。
A)一對一 B)一對多 C)多對一 D)多對多(9)在數據管理技術發展的三個階段中,數據共用最好的是()。
A)人工管理階段 B)檔系統階段 C)資料庫系統階段 D)三個階段相同(10)有三個關係R、S 和T 如下:R S TA B B C A B Cm 1 1 3 m 1 3n 2 3 5由關係R 和S 通過運算得到關係T,則所使用的運算為()。
全国计算机二级c语言考试真题及答案
全国计算机二级c语言考试真题及答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 若有定义int a[5] = {1, 2, 3, 4, 5};,则a[0]的值是?A. 1B. 2C. 3D. 4答案:A3. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. whileD. do答案:B4. 在C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A5. 若有定义int x = 10;,则表达式x++的值是多少?A. 9B. 10C. 11D. 无法确定答案:B6. 在C语言中,以下哪个关键字用于定义一个联合体?A. structB. unionC. enumD. typedef答案:B7. 下列哪个选项是C语言中的合法整型常量?A. 012B. 0x1AC. 1.2E3D. 0b1010答案:A8. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A9. 若有定义int a = 5, b = 10;,则表达式a + b 的值是多少?A. 15B. 5C. 10D. 无法确定答案:A10. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. structB. unionC. enumD. typedef答案:C二、程序填空题(每空2分,共20分)给定以下C语言程序片段,请在空白处填入正确的代码。
```c#include <stdio.h>int main() {int a, b, sum;scanf("%d %d", &a, &b);sum = a + b; // 计算两数之和printf("Sum is: %d\n", sum);return 0;}```若要计算两数之差,请在空白处填入正确的代码。
2008年9月全国计算机二级笔试C语言程序设计真题及答案
2008年9月全国计算机二级笔试C语言程序设计真题及答案2008年9月全国计算机二级笔试C语言程序设计真题及答案一、选择题((1)~(10)、(21)~(40)每题2 分,(11)~(20)每题1 分,70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是()。
A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA(2)下列叙述中正确的是()。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
A)O(n) B)O(n2) C)O(log2n) D)O(n log2n)(4)下列叙述中正确的是()。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是()。
A)控制流 B)事件驱动 C)模块调用 D)数据流(6)在软件开发中,需求分析阶段可以使用的工具是()。
A)N-S 图 B)DFD 图 C)PAD 图 D)程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是()。
A)一致性 B)分类性 C)多态性 D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A)一对一 B)一对多 C)多对一 D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。
计算机二级c语言试题及答案解析
计算机二级c语言试题及答案解析一、选择题(每题2分,共20分)1. 在C语言中,以下哪个选项是合法的整型常量?A. 0x12B. 0123C. 0x123.456D. 0123456答案:A解析:在C语言中,十六进制常量以0x或0X开头,后跟十六进制数字。
选项A表示十六进制数,是合法的整型常量。
选项B表示八进制数,选项C表示浮点数,选项D是无效的表示。
2. 下列哪个选项是C语言中的关键字?A. switchB. caseC. defaultD. all of the above答案:D解析:在C语言中,switch、case和default都是关键字。
switch用于条件分支,case用于指定分支条件,default用于指定默认分支。
3. 在C语言中,以下哪个选项是合法的字符常量?A. 'A'B. "A"C. '\t'D. 'AB'答案:C解析:在C语言中,字符常量用单引号括起来,可以是单个字符或转义字符。
选项A是合法的字符常量,但选项B是字符串常量。
选项C 是合法的转义字符,表示水平制表符。
选项D是两个字符,不是合法的字符常量。
4. 在C语言中,以下哪个选项是合法的数组声明?A. int a[];B. int b[10];C. int c[10] = {0};D. all of the above答案:D解析:在C语言中,A选项声明了一个未指定大小的整型数组,B选项声明了一个大小为10的整型数组,C选项声明了一个大小为10的整型数组并初始化所有元素为0。
所有选项都是合法的数组声明。
5. 在C语言中,以下哪个选项是合法的函数声明?A. int func(int x);B. int func(int);C. int func();D. int func(int, int);答案:D解析:在C语言中,函数声明需要指定返回类型、函数名和参数列表。
计算机二级证考试c语言试题及答案
计算机二级证考试c语言试题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. C语言中,用于定义一个变量为静态局部变量的关键字是?A. staticB. externC. registerD. auto答案:A3. 下列哪个选项不是C语言中合法的整数常量?A. 2023B. 0x1AC. 0123D. 2.0答案:D4. 在C语言中,哪个运算符用于计算两个整数的差值?A. %B. /C. -D. +答案:C5. 下列哪个选项不是C语言中的控制语句?A. ifB. forC. switchD. case答案:D6. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A7. C语言中,以下哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:D8. 在C语言中,以下哪个选项不是合法的数组声明?A. int arr[5];B. int arr[] = {1, 2, 3};C. int arr[5] = {1, 2, 3};D. int arr[] = {1, 2, 3, 4, 5, 6};答案:D9. C语言中,以下哪个函数用于计算数组中元素的个数?A. sizeofB. countC. lengthD. size答案:A10. 在C语言中,以下哪个关键字用于定义一个指针?A. pointerB. refC. ptrD. *答案:D二、填空题(每题2分,共20分)1. C语言中,用于定义一个字符型变量的关键字是________。
答案:char2. 在C语言中,用于定义一个浮点型变量的关键字是________。
答案:float3. C语言中,用于定义一个布尔型变量的关键字是________。
全国计算机等级考试二级C语言真题2008年9月
全国计算机等级考试二级C语言真题2008年9月(总分:100.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:40,分数:70.00)1.—个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈则元素出栈的顺序______。
(分数:2.00)A.12345ABCDEB.EDCBA54321 √C.ABCDE12345D.54321EDCBA解析:[知识点] 栈结构的存储方式 [评析] 栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。
一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。
这表明栈的运算规则是“先进后出”(或称“后进先出”)。
在栈顶进行插入运算,称为进栈(或入栈),在栈顶进行删除运算,称为退栈(或出栈)。
本题中,依次进栈,即依次插入元素1、2,3、4、5、A、B、C、D、E,依次出栈,即依次删除元素,根据栈“先进后出”的规则,应该以倒序出栈。
即元素出栈顺序为EDCBA54321。
2.下列叙述中正确的是______。
(分数:2.00)A.循环队列中有队头和卧尾两个指针,因此,循环队列是非线牲结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定√解析:[知识点] 循环队列 [评析] 所谓循环队列,就是将队列存储空间的最后一个位置绕到第1个位置,形成逻辑上的环状空间,供队列循环使用。
所以循环队列还是属于线性结构,所以选项A是错误的。
循环队列的头指针front指向队列的第一个元素的前一位置,队尾指针rear指向队列的最后一个元素,循环队列的动态变化需要头尾指针共同反映,所以选项B、C是错误的。
循环队列的长度是:(sq.rear-sq.front+maxsize)%maxsize,所以循环队列的长度是由队头和队尾指针共同决定的,所以选项D正确。
二级全国c语言机试题及答案
二级全国c语言机试题及答案二级全国C语言机试题及答案1. 以下哪个选项是C语言中正确的字符串定义?A. char str[5] = "hello";B. char str[] = "hello";C. char str[6] = "hello";D. char str[5] = {'h', 'e', 'l', 'l', 'o'};答案:B2. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A3. 以下哪个选项是C语言中正确的函数定义?A. int function(int a, int b) { return a + b; }B. int function(int a, int b) { return a - b; }C. int function(int a, int b) { return a * b; }D. All of the above答案:D4. 以下哪个选项是C语言中正确的数组初始化方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[5] = {1, 2, 3};C. int arr[5] = {};D. All of the above答案:D5. 在C语言中,以下哪个选项是正确的指针声明?A. int *p;B. int *p = 0;C. int *p = NULL;D. All of the above答案:D6. 以下哪个选项是C语言中正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D7. 在C语言中,以下哪个选项是正确的条件语句?A. if (a > b)B. if (a > b) { ... }C. if (a > b) { ... } else { ... }D. All of the above答案:D8. 以下哪个选项是C语言中正确的循环语句?A. for (int i = 0; i < 10; i++)B. while (condition)C. do { ... } while (condition);D. All of the above答案:D9. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. #define SQUARE(x) x * xC. #define MAX(a, b) ((a) > (b) ? (a) : (b))D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的递归函数定义?A. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}B. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n);}C. int factorial(int n) {if (n == 0) return 1;else return n * factorial(n - 1);}D. All of the above答案:A。
全国计算机等级考试二级C语言机试真题2008年9月
全国计算机等级考试二级C语言机试真题2008年9月(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.N个有序整数数列已放在一维数组中,给定的下列程序中,函数fun()的功能是:利用折半查找法查找整数m在数组中的位置。
若找到,则返回其下标值;反之,则返回“Not be found!”。
折半查找法的基本算法是:每次查找前先确定数组中待确定的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。
如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中,直到low>high,查找结束。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]#include <stdio.h>#define N 10int fun(int a[],int m)int low=0, high=N-1, mid;while(low<=high)mid= (1) ;if(m<a[mid])high= (2) ;eiseif(m>a[mid])low=mid+1;elsereturn(mid);(3) (-1);main()int i, a[N]=(-3, 4, 7, 9, 13, 24, 67, 89, 100, 180), k, m;printf("a数组中的数据如下: ");for(i=0; i<N; i++);printf("%d", a[i]);printf("Enter m: ");scanf("%d", &m);k=fun(a, m);if(k>=0)printf("m=%d, index=%d/n", m, k));elseprintf("Not be found/n");(分数:30.00)填空项1:__________________ (正确答案:[1] (low+high)/2[2] mid-1[3] return)解析:[解析] 填空1:根据题目的意思,这里应该是确定折半查找的中间位置,所以很明显应该填(low+high)/2。
2008年9月全国计算机等级考试二级c语言笔试试题(含参考答案)
2008年9月全国计算机等级考试二级C笔试试卷一、选择题1、一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后在依次出栈,则元素出栈的顺序是A)12345ABCDE B)EDCBA54321C)ABCDE12345 D)54321EDCBA2、下列叙述正确的是A)循环队列有队头和队尾两个指针,因此,循环队列是非线形结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定3、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A)O(n) B) O(n2) C)O(log2n) D)O(log2n)4、下列叙述中正确的是A)顺序结构存储的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间5、数据流图中带有箭头的线段表示的是A)控制流 B)事件驱动 C)模块调用D)数据流6、在软件开发中,需求分析阶段可以使用的工具是A)N—S图 B)DFD图 C)PAD图 D)程序流程图7、在面向对象的方法中,不属于〞对象〞基本特点的是A)一致性 B)分类性 C)多态性 D)标识唯一性8、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是A)一对一B)一对多 C)多对一 D)多对多9、在数据管理技术发展的三个阶段中,数据共享最好的是A)人工管理阶段 B)文件系统阶段C)数据库系统阶段 D)三个阶段相同10、有三个关系R、S和T如下:R S TA Bm 1n 2B C1 33 5A B Cm 1 3由关系R和S通过运算得到关系T,则所使用的运算为A)笛卡尔积 B)交 C)并 D)自然连接11、以下叙述中正确的是A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束 D)C语句必须在一行内写完12、计算机能直接执行的程序是A)源程序 B)目标程序 C)汇编程序 D)可执行程序13、以下选项中不能作为C语言合法常量的是A)´cd´B) 0.1c+6 C)〞\a〞 D)´\011´14、以下选项中正确的定义语句是A)double a;b; B) double a=b=7C)double a=7,b=7; D)double,a,b;15、以下不能正确表示代数式2ab/cd 的C语言表达式是A)2*a*b/c/d B)a*b/c/d*2C)a/c/d*b*2 D)2*a*b/c*d16、C源程序中不能表示的数制是A)二进制 B)八进制 C)十进制 D)十六进制17、若有表达式(w)?(-x):(++y),则其中与w等价的表达式是A)w==1 B)w==0 C)w!=1 D)w!=018、执行以下程序段后,w的值为int w=´A´,x=14,y=15;W=((x||y)&&(w<´a´));A) -1 B) NULL C)1 D) 019、若变量已正确定义为int 型,要通过语句scanf(〞%d,%d,%d〞,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格符)A)uuu1,2,3<回车> B)1u2u3<回车>C)1,uuu2,uuu3<回车> D)1,2,3<回车>20、有以下程序段int a,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c,c=a;printf(〞a=%d b=%d c=%d\n〞,a,b,c);程序的输出结果是A) a=10 b=50 c=10 B) a=10 b=50 c=30C)a=10 b=30 c=10 D)a=50 b=30 c=5021、若有以下定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是A)m[-i] B)m[2*2] C)m[m[0]] D)m[m[i]]22、下面的函数调用语句中func函数的实参个数是func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));A) 3 B) 4 C)5 D) 823、若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是A) *p B) x[5] C)*(p+1) D) *x24、若有定义语句:char s[10]=〞\0\0〞;,则strlen(s)的值是A) 7 B) 8 C) 9 D) 1025、以下叙述中错误的是A)用户自定义的函数中可以没有return语句B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户自定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式26、以下关于宏的叙述中正确的是A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间27、有以下程序#include <stdio.h>main(){ int i,j;for (i=3;i>=1;i--){for(j=1;j<=2;j++) printf(〞%d〞,i+j);pintf(〞\n〞);}}程序运行的结果是A) 2 3 4 B) 4 3 2 C)2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 328、有以下程序#include <stdio.h>main(){ int x=1,y=2,z=3;if(x>y)if(y>z) printf(〞%d〞,++z);else printf(〞%d〞,++y);printf(〞%d\n〞,x++);}程序运行的结果是A) 331 B)41 C)2 D)129、有以下程序#include <stdio.h>main(){ int i=5;do{ if(i%3==1)if(i%5==2){ printf(〞%d〞,i); break;}i++;} while(i!=0);printf(〞\n〞);}程序运行的结果是A) *7 B)*3*5 C)*5 D)*2*630、有以下程序#include <stdio.h>int fun(int a,int b){ if(b==0) return a;else return(fun(-a,-b));}main(){printf(〞%d\n〞,fun(4,2));}程序运行的结果是A) 1 B) 2 C) 3 D)431、有以下程序#include <stdio.h>#include <stdio.h>{ int *p;p=(int*)malloc(sizeof(int));*p=n; return *p;}main(){ int a;a=fun(10); printf(〞%d\n〞,a+fun(10));}程序运行的结果是A)0 B) 10 C)20 D)出错32、有以下程序#include (stdio.h)void fun(int a, int b){ int t;t=a; a=b; b=t;}main(){ int c[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2) fun(c[i],c[i+1]);for (i=0;i<10;i++) printf(〞%d,〞,c[i]);printf(〞\n〞);}程序运行的结果是A)1,2,3,4,5,6,7,8,9,0 B)2,1,4,3,6,5,8,7,0,9C)0,9,8,7,6,5,4,3,2,1 D)0,1,2,3,4,5,6,7,8,933、有以下程序#include <stdio.h>struct st{int x,y;} data[2]={1,10,2,20};main(){struct st *p=data;printf(〞%d,〞,p->y); printf(〞%d\n〞,(++p)->x);}程序运行的结果是A) 10,1 B)20,1 C)10,2 D) 20,234、有以下程序#include <stdio.h>void fun(int a[],int n){ int i,t;for(i=1;i<n/2;i++) {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){ int k[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf(〞%d〞,k[i]);printf(〞\n〞);}程序运行的结果是A) B) C) D)35、有以下程序#include <stdio.h>#define N 4void fun(int a[][N],int b[]){ int i;for(i=0;i<N;i++) b[i]=a[i][i];}main(){int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;fun(x,y);for(i=0;i<N;i++) printf(〞%d,〞,y[i]);printf(〞\n〞);}程序运行的结果是A)1,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10,36、有以下程序#include <stdio.h>int fun(int (*s)[4],int n,int k){ int m,i;m=s[0][k];for(i=1;i<n;i++) if(s[i][k]>m)m=s[i][k];return m;}main(){int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}}; printf(〞%d\n〞,fun(a,4,0));}程序运行的结果是A) 4 B) 34 C) 31 D)3237、有以下程序#include <stdio.h>main(){ struct STU{ char name[9]; char sex; double score[2];};struct STU a={〞Zhao〞,´m´,85.0,90.0},b={〞Qian〞,´f´,95.0,92.0}; b=a;printf(〞%s,%c,%2.0f,%2.0f\n〞,,b.sex,b.score[0],b.score[1]); }程序运行的结果是A)Qian,f,95,92 B)Qian,m,85,90C)Zhao,f,95,92 D)Zhao,m,85,9038、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是A) (*p).next=(*q).next; free(p);B) p=q->next; free(q);C) p=q; free(q);D)p->next=q->next; free(q);39、有以下程序#include <stdio.h>main(){char a=4;printf(〞%d\n,a=a<<1〞);}程序的运行结果是A) 40 B) 16 C) 8 D) 440、有以下程序#include <stdio.h>main(){ FILE *pf;char *s1=〞China〞,*s2=〞Beijing〞;pf=fopen(〞abc.dat〞,〞wb+〞);fwrite(s2,7,1,pf);rewind(pf);fwrite(s1,5,1,pf);fclose(pf);}以下程序执行后abc.dat文件的内容是A) China B) ChinangC) ChinaBeijing D)BeijingChina二、填空题1、对下列二叉树进行中序遍历的结果是( ).2、按照软件测试的一般步骤,集成测试应在()测试之后进行。
2008年全国高等学校计算机考试二级(C语言)试卷
一、单项选择题(本体共30小题,每小题1分,共30分)下面每题给出4个答案,用A、B、C、D标出,其中只有一个是正确的,将你选择的结果涂黑答题纸对应题号的方格。
1、完整的计算机系统包括A、硬件系统和软件系统B、主机、键盘、显示器C、系统软件和应用软件D、计算机及其外部设备2、微型计算机中,PROM的中文名字是A、随即存储器B、只读存储器C、可编程只读存储器D、高速缓冲存储器3、计算机储存中,一个字节包含二进制位数是A、4B、8C、16D、324、在微型计算机中,1MB准确等于A、1024×1024字B、1024×1034个字节C、1000×1000个字节D、1000×1000个字5、十进制证书170可化为二进制数是A、11001010B、11010001C、10101011D、101010106、在windows缺省状态下,进行全角/半角切换的组合捷径是A、<Alt>+空格键B、<Ctrl>+圆点键C、<Alt>+空格键D、<Shift>+空格键7、windows中,下列不能用‚资源管理器‛对选定的文件或文件夹进行更名操作的是A、快速双击要更名的文件或文件夹B、右键单击要更名的文件或文件夹,选择快捷菜单中的‚重命名‛菜单命令C、单机‚文件‛菜单中的‚重命名‛菜单命令D、间隔双击要更名的文件或文件夹名称部分,并键入新名字8、如果windows的资源管理底部没有状态栏,那么要增加状态栏的操作时单击A、‚编辑‛菜单中的‚状态栏‛命令B、‚工具‛菜单中的‚状态栏‛命令C、‚查看‛菜单中的‚状态栏‛命令D、‚文件‛菜单中的‚状态栏‛命令9、用户在操作系‚命令提示符‛环境下的操作方式是A、使用鼠标B、使用图标C、使用命令D、使用窗口10、启动记事本的操作是A、开始—程序—附件—记事本B、我的电脑—控制面板—记事本C、资源管理器—记事本D、我的电脑—控制面板—辅助选项—记事本11、在windows中,回收站是A、内存中的一块区域B、硬盘上的一块区域C、软盘上的一块区域D、高速缓存中的一块区域12、Word程序启动后就自动打开文档的名字为A、NonameB、UnititledC、文件1D、文档113、将Word文档中一部分选定的文字移动到指定的位置上去,进行的第一步骤是A、单击‚编辑‛菜单下的‚复制‛命令B、单击‚编辑‛菜单下的‚清楚‛命令C、单击‚编辑‛菜单下的‚剪切‛命令D、单击‚编辑‛菜单下的‚粘贴‛命令14、以下关于Word分栏功能的描述中正确的是A、各栏的宽度可以不同B、各栏之间的间隔距离是固定的C、各栏的宽度必须相同D、最多可以设置4栏15、如果要在Word文档中创建表格,应使用的菜单是A、格式B、表格C、工具D、插入16、使单元格中显示0,2,应在该单元格中输入A、4/20B、=4/20C、‛4/20‛D、=‛4/20‛17、某区域由A1,A2,A3,B1,B2,B3六个单元格组成。
全国计算机等级考试二级C语言笔试试题及答案
全国计算机等级考试二级C语言笔试试题及答案一、选择题(每小题2分,共70分)(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是A)10B)8C)6D)4(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是 A)编译程序B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是A)提高耦合性降低内聚性有利他哦高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R, S如下:由关系R通过运算得到关系S,则所使用的运算为A)选择C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域(11)对C++编译器区分重载函数无任何意义的信息是A)参数类型B)参数个数C)返回值类型D)常成员函数关键字coast(12)有如下类定义和变量定义:class A{publie:A(){data=0;}~A(){}int GetData () coast { return data;}void SetData(int n) {data=n;}private:int data;};ccnst A a;A b;下列函数调用中错误的是A)a .GetData();B)a .SetData(10);C)b .GetData();D)b .SetData(10);(13)有如下类定义和变量定义:class Parents{public:int publicuata;private:int privateData;};class ChildA:public Parents{/*类体略*/};class ChildB:private Parents{/*类体略*/);ChildA a;ChildBb;下列语句中正确的是A)cout<<a.publicData <<endl ;B)cout<<a.privateData <<endl ;C)cout<<b.publicData <<endl ;D)cout<<b.privateData <<endl ;(14)运算符重载时不需要保持的性质是A)操作数个数B)操作数类型C)优先级D)结合性(15)下列关于函数模板的描述中,错误的是A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D)模板参数表不能为空(16)要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是 A)ifstream fin=ifstream.open(“file.dat”);B)ifstream*fir.=new ifstream(“file.dat”);C)ifstream fin; fin.open(“file.dat”);D)ifstream *fin=new ifstream();fin一>open(“file.dat”);(17)下列描述中,不属于面向对象思想主要特征的是A)封装性B)跨平台性C)继承性D)多态性(18)有如下程序段:Tnt i=4;int j=l;int main(){int i=8,j=i;cout<<i<<j<<endl;}运行时的输出结果是A)44B)41C)88D)81(19)有如下程序段:int i=5;while(int i=0){cout《'*';i--;}运行时输出“*”的个数是A)0B)1C)5D)无穷(20)己知有数组定义char a[3][4];下列表达式中错误的是A)a[2]=“WIN”B)strcpy(a[2],“WIN”)C)a [2][3]='W'D)a[0][1]=a[0][1](21)已知函数fun的原型为int fun(int,int,int);下列重载函数原型中错误的是A)char fun(int,int);B)double fun(int,int,double);C)int fun(int,char*);D)float fun (int, int, int);(22)建立一个类对象时,系统自动调用A)析构函数B)构造函数C)静态函数D)友元函数(23)通过派生类的对象可直接访问其A)公有继承基类的公有成员C)私有继承基类的公有成员D)私有继承基类的私有成员(24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为A)a .orerator++(1)B)operator++(a)C)operator++(a,l)D)a.operator++()(25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是A)()B)[ ]C)< >D){ }(26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为 A)ios_base::inB)ios_base::in|ios_base::outC)ios_base::outD)ios_base::in&ios_base::out(27)有如下程序:#include<iostream>#include<cstring>using namespace std;class XCD{char* a;int b;public:XCD(char* aa, int bb){a=new char[strlen(aa)+1];strcpty(a,aa);b=bb;}Char* Geta (){return a;)int Getb(){ return b;}};int main(){char *pl=“abcd”,*p2=“weirong”;int dl=6, d2=8;XCD x(pl,dl),Y(p2,d2);cout<<strien (x .Geta())+y. Getb()+endl;return 0;}运行时的输出结果是A)12B)16C)14D)11(28)有如下程序:#include<iostream>#include<cstring>using namespace std;class XCF{int a;XCF(int aa=0):a (aa){cout<<“1”;}XCF(XCF& x){a=x .a; cout<<“2”;)~XCF(){cout<<a;}int Geta(){return a;}};int main(){XCF dl(5),d7 (dl);XCF *pd=new XCF(8);cout<<pd一>Geta();delete pd;return 0;}运行时的输出结果是A)121SS88B)12188SSC)12185D)128512(29)已知类MyClass声明如下:class MyClass{int n;public;MyClass(int k):n(k){}int getValue()const{return n;}};在下列数组定义中正确的是A)MyClass x1[2];B)MyClass x2[2]={new MyClass(1),new MyClass(2)};C)MyClass *x3[2];D)MyClass *x4[2]={MyClass(1),MyClass(2)};(30)有如下程序:#include<iostream>using namespace std;class AA{lilt k;protected:int n;void setK(int k){ this->k=k;}public:void setN(int n){ this->n=n;}};class BB: public }{/*类体略*/};int main(){BB x_ ; //1x .n=1; //2x.setN (2); //3x.k=3; //4x .setK(4);return 0;}在标注号码的四条语句中正确的是A)1B)2C)3D)4(31)有如下类定义:class XX{int xx;public:XX():xx(0){cout<<' A';}XX(int n):xx ( n){tout<<' B';}};Class YY:public XX{Int yy;public:YY():yy ( 0){cout+yy;}YY(int n):XX(n+1),yy(n){cout<<yy;}YY (int m, int n):XX (m),yy(n){cout<<yy;} };下列选项中,输出结果为A0的语句是A)YY y1(0,0);B)YY y2(1);C)YY y3(0);D)YY y4;(32)有如下程序:#include<iostream>Using namespace std;class A{public:virtual void f(){cout+1;}void g(){cout<<2;}};class B:public A{public:virtual void f(){cout<<3;}void g(){ecut<<4;}};void show(A &a){a.f();a.g();}int main(){B b;show(b);return 0;}运行时的输出结果是A)12B)34C)14D)32(33)有如下程序:#include<iostream>using namespace std;class Pair{int m;int n;public:boot operator >(pair p)const; //须在类体外给出定义};int main(){Pair Al(3,4),p2(4,3);p3(4,5);Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2);return 0;}运算符函数。
2008年9月全国计算机等级考试二级C语言笔试试卷及解析
答案:C
详细解答:该知识点是考查了二分查找。二分查找:对于长度为n的线性表, 在最坏情况进行 log2n 次。 4)下列叙述中正确的是
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续 的。
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构。
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表。
2008 年 9 月全国计算机等级考试二级笔试试卷 C 语言程序设计
(考试时间 90 分钟,满分 100 分)
1)栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次放入栈 ,然后再依次出栈,则元素的顺序是:
A) 12345ABCDE B) EDCBA54321
C) ABCDE12345 D) 54321EDCBA 答案:B
详细解答:该知识点是考查了栈的先进后出,是我们公共基础的重点考点,在 公共基础的 10 页纸上多次强调。栈和队列是每年必考的题目。
2)下列叙述中正确的是
A)循环队列有对头和对尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况
C)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况
由关系 R 和 S 通过运算得到关系 T,则所使用的运算为 A)笛卡尔积 B)交 C)并 D)自然连接 答案:D 详细解答:该知识点是考查了关系的运算,是我们公共基础的常考的题目。考 试中一般比较多的是考到了笛卡尔积、交。这个地方考了自然连接的运算。 11)以下叙述中正确的是( ) A) C 语言的基本组成单位是语句 B) C 程序中的每一行只能写一条语句 C) 简单 C 语
D)循环队列中的元素的个数是有队头和队尾指针共同决定的。
计算机二级c语言考试习题及答案汇总一篇
计算机二级c语言考试习题及答案汇总一篇计算机二级c语言考试习题及答案 11). 下列叙述中正确的是( )。
A.调用printf( )函数时,必须要有输出项B.使用put )函数时,必须在之前包含头文件stdio.hC.在C语言中,整数可以以二进制、八进制或十六进制的形式输出D.调节get )函数读入字符时,可以从键盘上输入字符所对应的ASCII码正确答案:B答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar 函数是从标准输入设备读取一个字符。
2). 以下结构体类型说明和变量定义中正确的是( )A.typedef struct { int n; char c; } REC; REC t1,t2;B.struct REC ; { int n; char c; }; REC t1,t2;C.typedef struct REC; { int n=0; char c=′A′; } t1,t2;D.struct { int n; char c; } REC; REC t1,t2;正确答案:A答案解析:定义结构体类型的一般形式为:struct 结构体名{成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。
3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( )A.一对一B.一对多C.多对一D.多对多正确答案:B答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。
4). 待排序的关键码序列为(15,20,9,30,67.65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A)12345ABCDE B)EDCBA54321C)ABCDE12345 D)54321EDCBA(2)下列叙述中正确的是A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反应队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反应队列中元素的动态变化情况D)循环队列中元素的个数是由队头和队尾指针共同决定(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A)O(N) B)O(n2) C)O(log2n) D)O(n log2n)(4)下列叙述中正确的是A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是A )控制流B )事件驱动C )模块调用D )数据流 (6)在软件开发中,需求分析阶段可以使用的工具是A )N-S 图B )DFD 图C )PAD 图 D )程序流程图 (7)在面向对象方法中,不属于“对象”基本特点的是A )一致性B )分类性C )多态性D )标识唯一性 (8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是A )一对一B )一对多C )多对一D )多对多 (9)在数据管理技术发展的三个阶段中,数据共享最好的是 A )人工管理阶段 B )文件系统阶段 C )数据库系统阶段 D )三个阶段相同 (10)有三个关系R 、S 和T 如下:R S T由关系R 和S 通过运算得到关系T ,则所使用的运算为A )笛卡尔积B )交C )并D )自然连接 (11)以下叙述中正确的是A )C 程序的基本组成单位是语句B )C 程序中每一行只能写一条语句 C )简单C 语句必须以分号结束D )C 语句必须在一行内写完 (12)计算机能直接执行的程序是A )源程序B )目标程序C )汇编程序D )可执行程序 (13)以下选项中不能作为C 语言合法常量的是A )’cd ’B )0.1e+6C )”\a ”D )”\011” (14)以下选项中正确的定义语句是A )double a;b;B )double a=b=7;C )double a=7,b=7;D )double ,a,b; (15) 以下不能正确表示代数式cdab2的C 语言表达式是A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d(16)C源程序中不能表示的数制是A)二进制B) 八进制C) 十进制D) 十六进制(17) 若有表达式(w)?(--x):(++y),则其中与w等价的表达式是A)w= =1 B)w= =0 C)w!=1 D)w!=0(18) 执行以下程序段后,w的值为int w=’A’,x=14,y=15;w=((x||y)&&(w<’a’));A)-1 B)NULL C)1 D)0(19)若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d”,&a,&b,&c);给a赋值1,给b 赋值2, 给c赋值3, 以下输入形式中错误的是(u代表一个空格符)A)uuu1,2,3<回车>B)1u2u3<回车>C)1,uuu2, uuu3<回车> D)1,2,3<回车>(20) 有以下程序段int a,b,c;a=10; b=50; c=30;if(a>b)a=b,b=c;c=a;printf(“a=%d b=%d c=%d \n”,a,b,c);程序的输出结果是A) a=10 b=50 c=10 B) a=10 b=50 c=30C) a=10 b=30 c=10 D) a=50 b=30 c=50(21)若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是 A) m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]] (22)下面的函数调用语句中func函数的实参个数是func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));A)3 B)4 C)5 D)8(23)若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是A)*p B)x[5] C)*(p+1) D)*x(24)若有定义语句:char s[10]= “1234567\0\0”;,则strlen(s)的值是A)7 B)8 C)9 D)10(25)以下叙述中错误的是A) 用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式(26)以下关于宏的叙述中正确的是A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间(27)有以下程序#include <stdio.h>main(){int i,j;for(i=3;i>=1;i--){ for(j=1;j<=2;j++) printf("%d",i+j);printf("\n ") ;}}程序的运行结果是A) 2 3 4 B)4 3 2 C)2 3 D)4 53 4 5 5 4 3 3 4 3 44 5 2 3 (28) 有以下程序#include <stdio.h>main(){int x=1,y=2,z=3;if(x>y)if(y<z) printf("%d",++z);else printf("%d",++y);printf("%d\n", x++ );}程序的运行结果是A)331 B)41 C)2 D)1(29)有以下程序#include <stdio.h>main(){ int i=5;do{ if(i%3==1)if(i%5==2){ printf(“*%d”,i); break; }i++;} while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C)*5 D)*2*6 (30)有以下程序#include <stdio.h>int fun(int a,int b){ if(b==0) return a;else return(fun(--a,--b));}main(){ printf("%d\n", fun(4,2));}程序的运行结果是A)1 B)2 C)3 D)4(31) 有以下程序#include <stdio.h>#include <stdlib.h>int fun(int n){ int *p;p=(int*)malloc(sizeof(int));*p=n; return *p;}main(){ int a;a = fun(10); printf("%d\n",a+fun(10));}程序的运行结果是A)0 B)10 C)20 D)出错(32)有以下程序#include <stdio.h>void fun( int a, int b){ int t;t=a; a=b; b=t;}main(){ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;for(i=0;i<10;i+=2) fun(c[i], c[i+1]);for(i=0;i<10;i++) printf("%d," ,c[i]);printf("\n");}程序的运行结果是A)1,2,3,4,5,6,7,8,9,0 B)2,1,4,3,6,5,8,7,0,9C)0,9,8,7,6,5,4,3,2,1 D)0,1,2,3,4,5,6,7,8,9(33) 有以下程序#include <stdio.h>struct st{ int x, y;} data[2]={1,10,2,20};main(){ struct st *p=data;printf("%d,",p->y); printf("%d\n",(++p)->x);}程序的运行结果是A)10,1 B)20,1 C)10,2 D)20,2(34) 有以下程序#include <stdio.h>void fun(int a[], int n){ int i,t;for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}}main(){ int k[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++) printf("%d",k[i]);printf("\n");}程序的运行结果是A)345678 B)876543 C)1098765 D)321678 (35) 有以下程序#include <stdio.h>#define N 4void fun(int a[][N], int b[]){ int i;for(i=0;i<N;i++) b[i] = a[i][i];}main(){ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;fun(x,y);for(i=0;i<N;i++) printf("%d,",y[i]);printf("\n");}程序的运行结果是A)1,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10, (36) 有以下程序#include <stdio.h>int fun(int (*s)[4],int n, int k){ int m,i;m=s[0][k];for(i=1;i<n;i++) if(s[i][k]>m)m= s[i][k];return m;}main(){ int a[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的运行结果是A)4 B)34 C)31 D)32 (37) 有以下程序#include <stdio.h>main(){struct STU { char name[9]; char sex; double score[2];};struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n", , b.sex, b.score[0], b.score[1]);}程序的运行结果是A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90(38) 假定已建立以下链表结构,且指针p和q已指向如图所示的结点:headp q则以下选项中可将q所指向结点从链表中删除并释放该结点的语句组是A)(*p).next=(*q).next; free(p); B)p=q->next; free(q);C)p=q; free(q); D)p->next=q->next; free(q);(39) 有以下程序#include <stdio.h>main(){ char a=4;printf(“%d\n”,a=a<<1);}程序的运行结果是A) 40 B) 16 C) 8 D) 4(40)有以下程序#include <stdio.h>main(){ FILE *pf;char *s1="China", *s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是A) China B) Chinang C) ChinaBeijing D) BeijingChina二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。