[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc

上传人:李朗 文档编号:492497 上传时间:2018-11-30 格式:DOC 页数:35 大小:117KB
下载 相关 举报
[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc_第1页
第1页 / 共35页
[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc_第2页
第2页 / 共35页
[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc_第3页
第3页 / 共35页
[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc_第4页
第4页 / 共35页
[计算机类试卷]2005年9月国家二级(C语言)笔试真题试卷及答案与解析.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、2005 年 9月国家二级( C语言)笔试真题试卷及答案与解析 1 下列叙述中正确的是 _。 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C)程序经调试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 2 下列数据结构中,能用二分法进行查找的是 _。 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 3 下列关于栈的描述正确的是 _。 ( A)在栈中能插入元素而不能删除元素 ( B)在栈中只 能删除元素而不能插入元素 ( C)栈是特殊的线性表,只能在一端插入或删除元素 ( D)栈是特殊的线性表,只能在一端插入元素

2、,而在另一端删除元素 4 下列叙述中正确的是 _。 ( A)一个逻辑数据结构只能有一种存储结构 ( B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 5 下列描述中正确的是 _。 ( A)软件工程只是解决软件项目的 管理问题 ( B)软件工程主要解决软件产品的生产率问题 ( C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 ( D)软件工程只是解决软件开发中的技术问题 6 在软件设计中,不属于过程设计工具的是 _。 ( A) PDL

3、(过程设计语言 ) ( B) PAD图 ( C) N-S图 ( D) DFD图 7 下列叙述中正确的是 _。 ( A)软件交付使用后还需要进行维护 ( B)软件一旦交付使用就不需要再进行维护 ( C)软件交付使用后其生命周期就结束 ( D)软件维护是指修复程序 中被破坏的指令 8 数据库设计的根本目标是要解决 ( A)数据共享问题 ( B)数据安全问题 ( C)大量数据存储问题 ( D)简化数据维护 9 设有如下关系表 _。 则下列操作中,正确的是 _。 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 10 数据库系统的核心是 _ 。 ( A)数据模型 (

4、B)数据库管理系统 ( C)数据库 ( D)数据库管理员 11 以下叙述中错误的是 _。 ( A)用户所定义的标识符允许使用 关键字 ( B)用户所定义的标识符应尽量做到 “见名知意 ” ( C)用户所定义的标识符必须以字母或下划线开头 ( D)用户定义的标识符中,大、小写字母代表不同标识 12 以下叙述中错误的是 _。 ( A) C语句必须以分号结束 ( B)复合语句在语法上被看作一条语句 ( C)空语句出现在任何位置都不会影响程序运行 ( D)赋值表达式末尾加分号就构成赋值语句 13 以下叙述中正确的是 _。 ( A)调用 printf函数时,必须要有输出项 ( B)使用 putchar函

5、数时,必须在之前包含 头文件 stdio.h ( C)在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出 ( D)调用 getchar函数读入字符时,可以从键盘上输入字符所对应的 ASCII码 14 以下关于函数的叙述中正确的是 _。 ( A)每个函数都可以被其他函数调用 (包括 main函数 ) ( B)每个函数都可以被单独编译 ( C)每个函数都可以单独运行 ( D)在一个函数内部可以定义另一个函数 15 若有语句 char *line5;,以下叙述中正确的是 _。 ( A)定义 line是一个数组, 每个数组元素是一个基类型为 char的指针变量 ( B)定义 line是一个指

6、针变量,该变量可以指向一个长度为 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语言中,随机文件以二进制代码形式存储数据 (

7、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 以下不能正确计算代数式 1/3sin2(1/2)值的 C语言表达式是 _。 ( 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),

8、 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,程序在编译时出错。 main() /* Beginning */ int r; float s; scanf(“%d“, printf(“%dn“, y); 程序运行后的输出结果是 _。 ( A) 10 ( B) 11 ( C) 14 ( D) 15 38 有以下程序: void sort(int a, int n) i

9、nt i, j,t; for(i=0; i n; i+) for(j=i+1; n;j+) if(ai aj) t=ai; ai=aj; aj=t; main() int aa10=1, 2, 3, 4,5,6, 7, 8, 9, 10, i; sort(aa+2, 5); for(i=0; i 10; i+)printf(“%d, “, aa i); printf(“n“); 程序运行后的输出结果是 _ 。 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 1,2,7,6,3,4,5,8,9,10, ( C) 1,2,7,6,5,4,3,8,9,10, ( D) 1,2,9,8

10、,7,6,5,4,3,10, 39 有以下程序: void sum(int a) a0=a-1+a1; main() int a10=1,2,3,4,5,6,7,8,9,10; sum(c10=t; void swap2(int *c0,iht *c1) int t; t=*c0; *c0=*c1; *c1=t; main() int a2=3, 5, b2=3, 5; swapl(a,a+1); swap2(j n;j+) if strcmp(pi, pj) 0t=pi pi=pj; pj=t; main() char* p5=(“abc“,“aabdfg“,“abbd“,“dcdbe“,“

11、cd“; f(p, 5); printf(“%dn“,strlen(p1); 程序运行后的输出结果是 _。 ( A) 2 ( B) 3 ( C) 6 ( D) 4 43 有以下程序: #include string.h void f(char *s,char *t) char k; k=*s; +s=*t; *t=k; S+; t-; if(*s) f(s, t); main() char.str10=“abcdefg“, *p; p=str+strlen(str) /2+1; f(p, p-2); printf(“%sn“, str); 程序运行后的输出结果是 _。 ( A) abcdefg

12、 ( B) gfedcba ( C) gbcdefa ( D) abedcfg 44 有以下程序: float f1(float n) return n*n; float f2(float n) return 2*n; main() float(*p1)(float), (*p2)(float), (*t)(float), y1, y2; p1: f1; p2=f2; y1=p2(p1(2.0); t=p1; p1=p2; p2=t; y2=p2(p1(2.0); printf(“%3.0f, %3.0fn“,y1,y2); 程序运行后的输出结果是 _。 ( A) 8, 16 ( B) 8,

13、8 ( C) 16, 16 ( D) 4, 8 45 有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; else static int a=5; t+=a+; return t+a+; main() int s=a, i; for(i=0; i 3; i+) s+=f(i); printf(“%dn“,s); 程序运行后的输出结果是 _。 ( A) 26 ( B) 28 ( C) 29 ( D) 24 46 有以下程序: #include strino.h struct STU

14、int num; float TotalScore; ; void f(struct STU p) struct STU s2=20044, 550, 20045, 537; p num=s1 num; p TotalScore=s1 TotalScore; main() struct STU s2=20041, 703, 20042, 580; f(s0); printf(“%d%3.0tn“, s0 num,s0 TotalScore); 程序运行后的输出结果是 _。 ( A) 20045 537 ( B) 20044 550 ( C) 20042 580 ( D) 20041 703 4

15、7 有以下程序: #include string.h struct STU (char name10; int num; ; void f(char *name, int num) struct STU s2=“SunDan“,20044 “Penghua“,20045; num=s0 num; strcpy(name,s0 name); main() struct STU s2=“YangSall“,20041,“LiSiGao“,20042, *p; p= int sum=0; s0 next=s+1; s1 next=s+2; s2 next=s; p=s; q=p- next; r=q

16、- next; sum+=q- next- num; sum+=r- next- next- num; printf(“%dn“,sum); 67 以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。 main() int i, j,x; for(j=4;j【 】 ;j-) for(i=1; i =4; i+) x=(j-1)*4 +【 】; printf(“%4d“,x); printf(“n“); 68 以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a

17、所指二维数组中的第 0行放到 b所指二维数组的最后一列中, b所指二维数组中的其他数据不变。 #define N 4 void rotate(int aN, int bN int i,j; for(i=0; i N; i+) biN-1=【 】;【 】 =aN-1i; 2005 年 9月国家二级( C语言)笔试真题试卷答案与解析 1 【正确答案】 C 【试题解析】 程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测试。 2 【正确答案】 A 【试题解析】 二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列 (即从小到大, (即从小到大,但允许相邻元素值

18、相等 )。 3 【正确答案】 C 【试题解析】 栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和删除只在线性表的一端进行。 4 【正确答案】 D 【试题解析】 一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。 5 【正确答案】 C 【试题解析】 软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。 6 【正确答案】 D 【试题解析】 软件设计工具包括:程序

19、流程图、 N-S、 PAD、 H1PO,判 定表,PDL(伪码 )。而 DFD(数据流图 )属于结构化分析工具。 7 【正确答案】 A 【试题解析】 软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。 8 【正确答案】 A 【试题解析】 由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要 的存储空间,更为重要的是可以避免数据的不一致性。因此,数

20、据库设计的根本目标是要解决数据共享问题。 9 【正确答案】 B 【试题解析】 从图中可以看出,关系 T是关系 R和关系 S 的简单合并,而合并的符号为 u,所以答案为 T=RUS。 10 【正确答案】 B 【试题解析】 数据库管理系统 DBMS是数据库系统的核心。 DBMS 是负责数据库的建立、使用和维护的软件。 DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过 DBMS。另外, DBMS 还承担着数据库的安全保护工作,按照 DBA所规定的要求,保证数据库的完整性和安全性。 11 【正确答案】 A 【试题解析】 C语言规定标识

21、符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到 “见名知意 ”,且不允许使用关键字作标识符。 12 【正确答案】 C 【试题解析】 “空语句出现在任何位置都不会影响程序运行 ”这句话是错误的,例如在 for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。 13 【正确答案】 B 【试题解析】 在使用标准输入输出库函数 (除了 Printf 和 scanf)前,必须要用预编译命令 “#include”将头文件 “stdio.h”包括到用户源文件中。 14 【正

22、确答案】 B 【试题解析】 C语言中函数是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义;函数可以分别编写、分别编译,提高调度效率,但函数不能单独运行:函数间可以互相调用,但不能调用 main 函数。 15 【正确答案】 A 【试题解析】 由于运算 符 优先级比 *高,所以 “char*line5; ”相当于“char*(line5; ”,表示 line是一个数组,每个数组元素是一个基类型为 char的指针变量。 16 【正确答案】 C 【试题解析】 typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用 typedef进行定义的话,则 struct NOD

23、E为结构体类型,现在用typedef 定义后,相当于用 OLD代表了 struct NODE这一结构体类型,故 OLD为结构体类型。 17 【正确答案】 C 【试题解析】 FILE 是由系统定义的一个结构体类型,并用该类型来定义若干个FILE 类型的变量,以便存放若干个文件。所以用 FILE 定义的变量必须是数组或指针,所以选项 C中的 “FILE fp; ”改为 “FILE*fp; ”就对了。 18 【正确答案】 D 【试题解析】 本题选项 A、 B、 C中表达式用作 if 语句表达式时,其值一致,即判断 k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项 D的表达式 “!k%2=1

24、”相当于 “!(k%2)=1,若 k 的值为奇数,则此表达式的值为假。 19 【正确答案】 A 【试题解 析】 如果算远算符 “/”中参与运算的变量都是整型变量,则 “/”表示整除运算,所以 “1/3”的值应为 0,故选项 A的表达式值为 0,而事实上代数式“1/3sin2(1/2)”的值并不为 0,所以选项 A不能正确计算题目所要求的代数式。 20 【正确答案】 B 【试题解析】 语句 “int n1=n2=10; ”中,由于变量 n2未定义,所以此赋值语句错误:由于赋值语句中不能存在运算表达式,所以选项 C中的赋值语句错误;选项 D中指数表示错误, C语言规定, e后面的指数必须为整数;选

25、项 B 中的 “32”是 ASCII码的表示 形式,这是 C语言中字符型数据和整型数据通用的表现,即一个字符数据可以以字符形式出现,也可以以整数形式出现。 21 【正确答案】 D 【试题解析】 本题并未对变量 “II”作任何定义,所以编译时会出出非法字符的错误信息。 22 【正确答案】 C 【试题解析】 强制类型转换的一般形式为: (类型名 ) (表达式 ),而选项C中只给表达式加了括号,并没有绐类型名也加上括号,所以选项 C的表达式错误。 23 【正确答案】 A 【试题解析】 逻辑运算符的优先级由高到低运算次序如下: !(非 ) ”得 n=3,然后执行 default;当 k=2时,执行 “

26、case2: case3: n+=k”得 n=5,然后执行 default;当 k=1时,执行 “case1: n+=k; case2: case3: n+=k;”使得 n加两次 k,得到n=7。 37 【正确答案】 C 【试题解析】 本题通过语句 “p=”用于将指针变量 p指向 e字符所在的存储单元, p-2指向了 c字符所在的存储单元,在函数 f中将这两个存储单元的内容交换,并使得 f 函数中指向 c字符的指针变量 s加 1。指向 c字符的指针变量 t减 1,然后继续将 s和 t指向的存储单元的内容进行交换,直到 s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdef

27、g”的倒序形式 “gfedcba”。 44 【正确答案】 A 【试题解析】 题中 “(*p1)(float)”定义了一个指向函数的指针变量 p1,此函数的返回值是 float类型。在 main 函数中,使得 p1指向了函数 f1, P2 指向了函数缀。语句 “y1=p2(p1(2.0);”先调用了 p1函数,将其返回值 4.000000传递给了 f2的形参n,并使其函数返回值 8.000000赋值给 y1。然后在 main 函数中交换了 p1、 p2指针变量的指向,使 p1指向了函数侵, p2指向了函数 f1,并先调用函数 f2,得到返回值 4.000000,使其传递给 f1函数的形参 n,并

28、带回返回值 16.000000赋值给y2。在输出 y1、 y2时,各浮点数占 3列,小数位数为 0,即输出了 8, 16。 45 【正确答案】 C 【试题解析】 解本题耍弄清楚这样几点: 1、定义 “int a=2; ”中的全局变量 a,其作用范围是从定义此变量的位置开始到本源文件结束; 2、 “static int a=3; ”中的静态局部变量 a的作用范围是其所在的函数 f,并对其只赋一次初值,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值; 3、复合语句 “static int a=4; t+=a+; ”和 “static int a=5; t+=a+; ”中定义的两

29、个变量 a属于复合语句中定义的变量,作用范围只在其本身所在的复合语句内。对于本程序来讲,第三行定义的静态局部变量并不会对四、五两行的复合语句产生作用,这是因为复合语句中也定义了与其同名的静态局部变量。 46 【正确答案 】 D 【试题解析】 本题定义了结构体类型的变量 P作为形参,并将结构体变量 s0中的值传递给了形参变量 p,在函数 f 中,又对 p 中的内容作了改变,但这种改变对工函数中 s0的值并不产生影响,所以主函数中输出 s0的数据依然是在主函数中初始化时的数据。 47 【正确答案】 A 【试题解析】 本题主函数中定义了结构体类型的指针变量 p,并使其指向了结构体类型的数组 s1,并通过调用函数 f 改变了指针变量 p所指向的结构体中成员变量 name的值,但并未改变其 num的值。这是因为函数 f中的形参 name是一个字符型指针变量,它指向了主函数中指针变量 p所指向的结构体的成员变量 name,所以对函数 f中的形参 *name的改变也就是刘主函数中 p- name的改变,而函数f 中对形参 num的改变并不会影响主函数中 p- num的值,因为此时传递给 num的是一个值,而不是地址。 48 【正确答案】 B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1