全国计算机等级考试二级C语言真题2005年9月

更新时间:2023-12-03 09:39:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

全国计算机等级考试二级C语言真题2005年9月

(总分:86.00,做题时间:90分钟)

一、{{B}}选择题{{/B}}(总题数:50,分数:50.00)

1.下列叙述中正确的是 ______。 (分数:1.00)

A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成 C.程序经调试改错后还应进行再测试 √ D.程序经调试改错后不必进行再测试

解析:[评析]程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测试。 2.下列数据结构中,能用二分法进行查找的是 ______。 (分数:1.00)

A.顺序存储的有序线性表 √ B.线性链表 C.二叉链表 D.有序线性链表

解析:[评析];二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,(即从小到大,但允许相邻元素值相等)。 3.下列关于栈的描述正确的是 ______。 (分数:1.00)

A.在栈中能插入元素而不能删除元素 B.在栈中只能删除元素而不能插入元素

C.栈是特殊的线性表,只能在一端插入或删除元素 √

D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

解析:[评析];栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和删除只在线性表的一端进行。 4.下列叙述中正确的是______。 (分数:1.00)

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 √

解析:[评析]一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。 5.下列描述中正确的是 ______。 (分数:1.00)

A.软件工程只是解决软件项目的管理问题 B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 √ D.软件工程只是解决软件开发中的技术问题

解析:[评析]软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。 6.在软件设计中,不属于过程设计工具的是 ______。 (分数:1.00) A.PDL(过程设计语言) B.PAD图 C.N-S图

D.DFD图 √

解析:[评析]软件设计工具包括:程序流程图、N-S、PAD、H1PO,判定表,PDL(伪码)。而DFD(数据流图)属于结构化分析工具。

7.下列叙述中正确的是 ______。 (分数:1.00)

A.软件交付使用后还需要进行维护 √ B.软件一旦交付使用就不需要再进行维护 C.软件交付使用后其生命周期就结束 D.软件维护是指修复程序中被破坏的指令

解析:[评析]软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。

8.数据库设计的根本目标是要解决 (分数:1.00) A.数据共享问题 √ B.数据安全问题 C.大量数据存储问题 D.简化数据维护

解析:[评析]由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。 9.设有如下关系表 ______。 T=R/S

(分数:1.00) A. B. √ C. D.

解析:[评析] 从图中可以看出,关系T是关系R和关系S的简单合并,而合并的符号为u,所以答案为T=RUS。 10.数据库系统的核心是 ______ 。 (分数:1.00) A.数据模型

B.数据库管理系统 √ C.数据库 D.数据库管理员

解析:[评析]数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。 11.以下叙述中错误的是 ______。 (分数:1.00)

A.用户所定义的标识符允许使用关键字 √ B.用户所定义的标识符应尽量做到“见名知意” C.用户所定义的标识符必须以字母或下划线开头 D.用户定义的标识符中,大、小写字母代表不同标识

解析:[评析]C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用关键字作标识符。

则下列操作中,正确的是 ______。 A) T=R∩S B) T=R∪S C T=R×S D)

12.以下叙述中错误的是 ______。 (分数:1.00)

A.C语句必须以分号结束

B.复合语句在语法上被看作一条语句

C.空语句出现在任何位置都不会影响程序运行 √ D.赋值表达式末尾加分号就构成赋值语句

解析:[评析]“空语句出现在任何位置都不会影响程序运行”这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。 13.以下叙述中正确的是 ______。 (分数:1.00)

A.调用printf函数时,必须要有输出项

B.使用putchar函数时,必须在之前包含头文件stdih √

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

解析:[评析]在使用标准输入输出库函数(除了Printf和scanf)前,必须要用预编译命令“#include”将头文件“stdio.h”包括到用户源文件中。 14.以下关于函数的叙述中正确的是 ______。 (分数:1.00)

A.每个函数都可以被其他函数调用(包括main函数) B.每个函数都可以被单独编译 √ C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

解析:[评析]C语言中函数是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义;函数可以分别编写、分别编译,提高调度效率,但函数不能单独运行:函数间可以互相调用,但不能调用main函数。

15.若有语句char *line[5];,以下叙述中正确的是 ______。 (分数:1.00)

A.定义line是一个数组,每个数组元素是一个基类型为char的指针变量 √ B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C.定义line是一个指针数组,语句中的*号称为间址运算符 D.定义line是一个指向字符型函数的指针

解析:[评析]由于运算符[]优先级比*高,所以“char*line[5];”相当于“char*(line[5];”,表示line是一个数组,每个数组元素是一个基类型为char的指针变量。

16.有以下程序段: typedef struct NODE {int num; struct NODE *next; }OLD; 以下叙述中正确的是 ______。 (分数:1.00)

A.以上的说明形式非法 B.NODE是一个结构体类型 C.OLD是一一个结构体类型 √ D.OLD是一个结构体变量

解析:[评析]typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则struct NODE为结构体类型,现在用typedef定义后,相当于用OLD代表了struct NODE这一结构体类型,故OLD为结构体类型。 17.以下叙述中错误的是______。 (分数:1.00)

A.C语言中对二进制文件的访问速度比文本文件快 B.C语言中,随机文件以二进制代码形式存储数据 C.语句FILE fp:定义了一个名为fp的文件指针 √ D.C语言中的文本文件以ASCII码形式存储数据

解析:[评析]FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。所以用FILE定义的变量必须是数组或指针,所以选项C中的“FILE fp;”改为“FILE*fp;”就对了。

18.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是 ______。 (分数:1.00) A.k%2 B.k%2==1 C.(k%2)!=0 D.!k%2==1 √

解析:[评析]本题选项A、B、C中表达式用作if语句表达式时,其值一致,即判断k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项D的表达式“!k%2=1”相当于“!(k%2)=1,若k的值为奇数,则此表达式的值为假。

19.以下不能正确计算代数式1/3sin(1/2)值的C语言表达式是 ______。 (分数:1.00)

A.1/3*sin(1/2)*sin(1/2) √ B.sin(0.5)*sin(0.5)/3 C.pow(sin(0.5),2)/3 D.1/3.0*pow(sin(1.0.2),2) 解析:

[评析]如果算远算符“/”中参与运算的变量都是整型变量,则“/”表示整除运算,所以“1/3”的值应为0,故选项A的表达式值为0,而事实上代数式“1/3sin(1/2)”的值并不为0,所以选项A不能正确计算题目所要求的代数式。

20.以下能正确定义且赋初值的语句是 ______。 (分数:1.00) A.int n1=n2=10; B.char c=32; √ C.float f=f+1.1; D.double x=12.3E2.5;

解析:[评析]语句“int n1=n2=10;”中,由于变量n2未定义,所以此赋值语句错误:由于赋值语句中不能存在运算表达式,所以选项C中的赋值语句错误;选项D中指数表示错误,C语言规定,e后面的指数必须为整数;选项B中的“32”是 ASCII码的表示形式,这是C语言中字符型数据和整型数据通用的表现,即一个字符数据可以以字符形式出现,也可以以整数形式出现。

21.以下程序的功能是:给r输入数据后计算半径为r的圆面积s,程序在编译时出错。 main() /* Beginning */ {int r;float s; scanf(\; s=*I*r*r; printf(\; } 出错的原因是 ______。 (分数:1.00)

A.注释语句书写位置错误

B.存放圆半径的变量r不应该定义为整型 C.输出语句中格式描述符非法

D.计算圆面积的赋值语句中使用了非法变量 √

解析:[评析]本题并未对变量“II”作任何定义,所以编译时会出出非法字符的错误信息。 22.设有定义int k=1,m=2;float f=7;,则以下选项中错误的表达式是 ______。 (分数:1.00) A.k=k>=k B.-k++ C.k%int( √ D.k>=f>m

解析:[评析]强制类型转换的一般形式为: (类型名) (表达式),而选项C中只给表达式加了括号,并没有绐类型名也加上括号,所以选项C的表达式错误。

2

2

23.设有定义int a=2,b=3,c=4;,则以下选项中值为0的表达式是 ______。 (分数:1.00)

A.(!a==1&&(!b==0) √ B.(a< &&!c||1 C.a&&b

D.a||(b+ &&(c-

解析:[评析]逻辑运算符的优先级由高到低运算次序如下:!(非)→&&(与)→||(或),选项A的表达式中,先对左边括号中“!a”进行运算,值为0,由于“0==1”的值为0,故整个表达式的值为0,本题答案为A。 24.有以下程序段: int k=0,a=1,b=2,c=3; k=a<b?b:a; k=k>c?c:k; 执行该程序段后,k的值是 ______。 (分数:1.00) A.3 B.2 √ C.1 D.0

解析:[评析]三目运算符的一般形式为(表达式1)?(表达式2):(表达式3),当(表达式1)值为真时,(表达式2)的值为整个表达式的值;当(表达式1)值为假时,(表达式3)的值为整个表达式的值。题中执行表达式“k=a<b?b:a”后,k=2,将此值代入后一个表达式“k=k>c?c:k,由于“k>c”值为假,故k的值还等于原来k的值,即2。

25.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句: if(a<B) if(c=D) y=0; else y=1; 该语句所表示的含义是 ______。 (分数:1.00) A. B. C. √ D.

解析:[评析]if语句中包含一个或多个if语句称为if语句的嵌套。在C语言中,从最内层开始,else总是与它上面最近的 (未曾配对的)if配对。故本题中y=1的条件是c≠d,又因为此if语句是前一个if语句的内层嵌套语句,所以在满足内层嵌套的if语句之前,必须先满足外层的if语句中的条件表达式“a<b”,所以选项C是正确的。

26.有以下程序段: int n,t=1,S=0; scanf(\,&n); do{s=s+t;t=t-2;}while(t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是 ______。 (分数:1.00) A.任意正奇数 B.任意负偶数 C.任意正偶数 D.任意负奇数 √

解析:[评析]要使得程序段不陷入死循环,则必须存在终止循环的条件“t=n”,由于t的初始值为1,且每执行一次循环都会使得t的值减2,故执行本程序后t有可能的最大值为-1,然后,依次减2,所以键盘输入的n的值必须是t的值之一,即为任意负奇数。

27.设变量已正确定义,则以下能正确计算f=n!的程序段是 ______。 (分数:1.00) A.F=0:

B.f=1; for(i=1;i<=n;i++) f*=i; for(i=1;i<n;i++) f*=i; C.f=1;

D.f=-1; for(i=n;i>1;i++)f*=i; for(i=n;i>=2;i--)f*=i; √

解析:[评析]n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是“i<n”,即只执行i-1次循环,得到的f值为(n-1)*……*2*1的

本文来源:https://www.bwwdw.com/article/i4xt.html

Top