2011年(455)
分类: C/C++
2011-05-26 15:26:11
2008年9月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)
注意:解答中所提到的教材是新视野教育培训使用的教材《全国计算机等级考试--二级教程》,此教材是由新视野教学组编写,中国地质大学出版社出版。详情可联系长沙新视野0731--4458250
1)栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次放入栈,然后再依次出栈,则元素的顺序是:
A) 12345ABCDE B) EDCBA54321
C) ABCDE12345 D) 54321EDCBA
答案:B
详细解答:该知识点是考查了栈的先进后出,是我们公共基础的重点考点,在公共基础的10页纸上多次强调。栈和队列是每年必考的题目。
此题与对应教材第三分册81页14题。
2)下列叙述中正确的是
A)循环队列有对头和对尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况
C)在循环队列中,只需要队列头指针就能够反映队列中元素的动态变化情况
D)循环队列中的元素的个数是有队头和队尾指针共同决定的。
答案:D
详细解答:该知识点是考查了循环队列的知识点,队列是线性结构。处理队列的话我们是有两个指针的,一个是头指针,一个是尾指针。
此题与对应教材第三分册81页10题。(类似)
3) 在长度为n的有序线性表中进行二分查找,最坏的情况下需要比较的次数是
A)O(n) B)O(n2) C)O(log2n) D)O(nlog2n)
答案:C
详细解答:该知识点是考查了二分查找。二分查找:对于长度为n的线性表,在最坏情况进行 log2n次。
此题与对应教材第三分册83页32题。
4)下列叙述中正确的是
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的。
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构。
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表。
D)链式存储结构比顺序存储结构节省空间。
答案:A
详细解答:该知识点是考查了栈数据结构特点。
此题与对应教材第三分册81页18题。
5)数据流图中带有箭头的线段表示的是
A)控制流 B)事件驱动 C)模块调用 D)数据流
答案:D
详细解答:该知识点是考查了数据流图中的各个知识点。
此题与对应教材第三分册86页11题。
6)在软件开发中,需求分析阶段可以使用的工具是
A)N-S图 B)DFD图 C)PAD图 D)程序流程图 答案:B
此题与对应教材第三分册87页12题。
7)在面向对象方法中,不属于“对象”基本特点的是
A) 一致性 B)分类性 C)多态性 D)标识一致性 答案:A
详细解答:该知识点是考查了对象的基本属性。是我们公共基础的重点考点,
此题与对应长沙新视野考前冲刺07年4月题目4题。
8)一间宿舍可以住多个学生,则实体宿舍和学生之间的联系是
A ) 一对一 B) 一对多 C)多对一 D)多对多 答案:B
此题与对应教材第三分册90页10题。(类似)
9)在数据管理技术发展的三个阶段中,数据共享最好的是
A)人工管理阶段 B)文件系统阶段
C)数据库系统阶段 D)三个阶段相同
答案:C 此题与对应教材第三分册90页7题。
10)有三个关系S、R和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为
A)笛卡尔积 B)交 C)并 D)自然连接
答案:D
详细解答:该知识点是考查了关系的运算,是我们公共基础的常考的题目。考试中一般比较多的是考到了笛卡尔积、交。这个地方考了自然连接的运算。
此题与对应教材第三分册91页21题。
11)以下叙述中正确的是( )
A) C语言的基本组成单位是语句
B) C程序中的每一行只能写一条语句
C) 简单C语句必须以分号结束
D)C语句必须在一行内完成
答案:C
详细解答:本题考查了C语言的基本概念,基本语法,本题所有选项均可在第一分册找到原句
A)选项错误:函数是C语言的基本组成单位(第一分册P55)
B)、D)选项错误: C语言书写格式自由,一行内可以写多个语句,一个语句可以多行书写(第一分册P3)
C)选项正确:分号是语句结束的标志,任何一条语句都必须以分号结束.
把以一个分号结尾的一句话叫做一个C语言的语句(第一分册P2,P3)
12)计算机能直接执行的程序是( )
A)源程序 B)目标程序 C)汇编程序 D)可执行程序 答案:D
详细解答:根据我们上机运行的操作步骤,此题就可以选出答案
用C语言编写的程序,称之为源程序,后缀为.c,通过C语言编译,变为后缀为.obj的文件,然后链接成后缀为.exe的可执行文件,才能交给计算机执行,可见计算机能直接执行的是可执行程序。
汇编语言编写的程序,机器不能直接识别,要翻译成机器语言(可执行语言),才能执行(考生即使不知道该知识点,此题也应该选出答案)
此题与第三分册68页第20题,第23题考查知识点相近。
13)以下选项中不能作为C语言合法常量的是 ( )
A) ‘cd’ B) 0.1e+6 C) “a” D)‘\011’
答案:A
详细解答:本题考查了字符常量,实型常量、字符串常量。字符常量是一对单引号括起来的一个字符,A选项单引号内有两个字符,注意D选项为八进制转移字符(第一分册P48)此题在第三分册第2页,第18题、第20题;第22页第3题,第5题均有体现
14) 以下选项中正确的定义语句是 ( )
A)double a;b; B) double a=b=7; C) double a=7,b=7; D)double ,a,b; 答案:C
详细解答:本题考查变量的定义,以及初始化(定义变量的同时赋值,比如C选项)
A)选项错误:在同一条语句中定义多个变量,变量之间用逗号, eg:double a,b; 如果作为两条语句定义,变量类型不能省略,eg:double a;double b;
B)选项错误:变量b未定义,正确格式为 double a,b;a=b=7;
D)选项错误:变量类型与变量之间不能有逗号,只能是空格 eg: double a,b;
此题对应第三分册第3页,第28题
15) 以下不能正确表示代数式 的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 答案:D
详细解答:本题考查了代数式在C语言中的书写格式
D)选项相当于代数式
此题并不难理解,但如果题目给出变量a,b,c,d的变量类型,就需要大家细心,可以参考第三分册第3页第34题
16) C源程序中不能表示的数制是 ( )
A) 二进制 B) 八进制 C) 十进制
D) 十六进制 答案:A
详细解答:本题考查了整型常量的三种表示形式
整型常量分为十进制整型常量、八进制整型常量、十六进制整型常量,唯独没有二进制整形常量,所以源程序中不能表示二进制
此题对应第三分册第2页,第14题(注意D选项)
17) 若有表达式(w)?(--x):(++y),则其中与w等价的表达式是 ( )
A)w==1 B) w==0 C) w! =1 D) w! =0
答案:D
详细解答:本题考查了逻辑表达式的真假
题目中w为1,表达式w表示真,w为0,表达式w表示假,这类题目的做法,把1,0代入选项,找出与w真假条件相符的即可
比如:D选项, w为1时,1!=0成立,表达式值为真w为0时,0!=0部成立,表达式值为假
此题对应第三分册第10页,第2题,第8题,第12页,第22题
18) 执行以下程序段后,w的值为 ( )
int w=’A’,x=14,y=15;
w=((x||y)&&(w<’a’));
A)-1 B)NULL C) 1 D)0 答案:C
详细解答:本题考查了逻辑表达式的判断
&&两边都为真,表达式才为真;||两边有一个为真就为真.(x||y)值为真,(w<’a’)成立,也为真,整个表达式((x||y)&&(w<’a’))值为1,把1赋值给w, w的值为1
此题没有考察学员容易犯错的--逻辑运算符的短路现象,可以参考第三分册11页,第14题
19) 若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d”,&a,&b,&c);给a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是(ㄩ代表一个空格符)()
A)ㄩㄩㄩ1,2,3<回车> B)1ㄩ2ㄩ3<回车>
C) 1,ㄩㄩㄩ2,ㄩㄩㄩ3<回车> D)1,2,3<回车>
答案:B
详细解答:本题考查了scanf输入函数的格式说明知识
输入函数的输入控制(双引号之间的内容),除 %* 外,如果含有其它字符,则在输入数据时一定要一一对应输入这些字符,此题双引号之间含有逗号,那么输入数据之间必须输入逗号,B选项错误.此类型的题目还要注意逗号不是分隔符,如果双引号之间没有逗号,输入数据时不能用逗号
此题对应第三分册第8页22题
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”,a,b,c);
程序的输出结果是 ( )
A)a=10 b=50 c=10 B)a=10 b=50 c=30 C) a=10 b=30 c=10 D) a=50 b=30 c=50
答案:A
详细解答:本题目学员应该注意逗号表达式语句,及if语句的结构
属于if(a>b)的只有一条语句a=b,b=c;(逗号表达式语句)
咱们强调如果含有多条语句,必须用大括号{ }括起,eg:if(a>b) { a=b,b=c; c=a;}
如果没有用 { }括起,那么只有一条语句,10>50不成立,所以a=b,b=c;不执行;执行后面的语句c=a;此时c的值变为10,所以输出为A选项
此题对应第三分册13页填空题第3题
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]]
答案:C
详细解答:本题考查了数组的下标不能越界,数组长度由{ }中的数据个数默认为5,那含有5个数组元素分别为m[0]、m[1]、m[2]、m[3]、m[4],C)选项为m[5],下标越界
A) 选项对应m[3] B) 选项对应m[4] D)选项对应m[1]
此题知识点在 第一分册72页第一行 明确表明
22) 下面的函数调用语句中func函数的是实参个数是 ( )
func( f2(v1,v2)), (v3,v4,v5),(v6,max(v7,v8)));
A)3 B)4 C) 5 D)8
答案:A
详细解答:函数的参数列表,不同参数之间用逗号隔开, func函数的参数个数为3,分别为f2(v1,v2)),(v3,v4,v5),(v6,max(v7,v8))。大家可以简单的理解为以外层逗号间隔为准,其中每个参数又含有函数和多个参数,超出本题查考的内容
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
答案:B
详细解答:本题考查数组的下标是否越界,以及指针对变量的引用
B)选项x[5],下标越界。一维数组名是地址常量(数组首地址),始终指向第一个数组元素,进行赋值p=x,指针变量p也指向第一个数组元素如下图:
A)选项 *p表示p所指向单元的数据即x[0] 值为1.0
C)选项 *(p+1)表示p+1所指向单元的数据即x[1] 值为2.0
D)选项 *x表示x所指向单元的数据即x[0] 值为1.0
此题目在第三分册40页第九章的的题目中均有体现,比如第3题
24)若有定义语句: char s[10]=”1234567\0\0”; ,则strlen(s)的值是 ( )
A)7 B)8 C) 9 D)10
答案:A
详细解答:本题目考查字符串结束标志’\0’。字符串从第一个字符开始,遇到第一个结束符’\0’为止,注意’\0’不占字符串长度,所以此题选A
此题对应第三分册60页填空题第29题
25) 以下叙述中错误的是 ( )
A)用户定义的函数中可以没有return 语句
B) 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C) 用户定义的函数中若没有return语句,则应当定义函数为void类型
D)函数的return语句中可以没有表达式
答案:B
详细解答:
1、如果函数返回值类型为void,则可以不用return语句,所以A正确;
2、如果函数没有return语句,函数返回值类型必须是void
3、如果函数没有返回值,可以用return语句,此时表达式应该为空,D正确
4、函数可以根据需要返回一个确定的值,程序中可以出现多个return语句,但当程序执行到第一个return语句时,就会结束当前函数的运行,不会执行后面的语句,所以用return语句只能返回一个函数值,B错误
此题对应第一分册56页:return说明部分
26) 以下关于宏的叙述中正确的是 ( )
A)宏名必须用大写字母表示
B) 宏定义必须位于源程序中所有语句之前
C) 宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
答案:C
详细解答:本题考查宏的基本定义
A) 选项错误:宏名一般习惯用大写,但可以用小写
B)选项错误:预处理命令可以出现在任何位置,但习惯上应尽可能地写在源程序的开头.
C) 选项正确:宏定义时形参不能指定类型,即没有数据类型限制
D) 选项错误:宏替换在编译时由预处理程序完成,所以宏替换不占用运行时间;而函数调用是在程序运行中处理的,要临时分配存储单元,占用一系列时间
此题对应第三分册66页第8题,及第一分册99页和100页相关知识
27) 有以下程序
#iinclude
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 5
3 4 5 5 4 3 3 4 3 4
4 5 2 3
答案:D
详细解答:本题考查双层for循环嵌套
i值为3时, j为1,输出4
j为2,输出5
j为3时,不满足条件
退出内层循环,执行后面的语句
换行
i值为 2时, j为1,输出3
j为2,输出4
j为3时,不满足条件
退出内层循环,执行后面的语句
换行
i值为 1时, j为1,输出2
j为2,输出3
j为3时,不满足条件
退出内层循环,执行后面的语句
换行
i值为 0时,不满足判断条件退出整个for循环
此题对应第一分册44页 例4.6
28) 有以下程序
#include
main()
{ int x=1,y=2, z=3;
if(x>y)
if (y
else printf(“%d”,++y);
printf(“%d\n”,x++);
}
程序运行结果是
A)331 B)41 C) 2 D)1
答案:D
详细解答:本题考查if ,if-else结构
首先搞清楚此题目的结构,本题含有一个if结构,属于if的语句是一个if-else结构,if (y
else printf(“%d”,++y); 这是本题的关键
首先判断x>y不成立,那么属于if(x>y)的语句不执行,直接执行后面的语句printf(“%d\n”,x++);输出1(本题还有一个考查点就是++在前在后的问题,如果题目改为++x,输出2)
此题对应第一分册31页 例3.10
29) 有以下程序
#include
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
答案:A
详细解答:此题头考查了break的用法,遇到break退出整个循环
明确循环体中的语句,当i的值满足(i%3= =1) 并且满足(i%5= =2)时,输出*i. 并且break;退出整个循环,如果不满足就i++
本题目题意就是:输出第一个满足(i%3= =1) 并且满足(i%5= =2)的i值
当i自加到7时,满足题目要求,输出*7,然后退出整个循环,执行后面的语句
联想此题还要注意continue的用法
可以参考第三分册18页15题,19页 19题
30) 有以下程序
#include
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
答案:B
详细解答:此题考查了函数的简单递归调用
主函数中调用fun(4,2),fun(4,2)中调用fun(3,1),fun(3,1)中调用fun(2,0)
可以总结为以下结构
main( )
àfun(4,2)
->fun(3,1)
->fun(2,0)
输出2 返回2 返回2 返回2
此题对应参考第三分册66页第7题,第6题
(31) 有如下程序:
#include
#include
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)出错
答案:C
详细解答:该知识点考察的是函数的调用以及引用指针存储单元,也是我们平时上课强调了的知识点。在主函数调用fun函数,实参10单向值传递给形参n,在fun定义了指针变量p并用malloc函数给p分配了存储空间,然后下一条语句把n的值赋给p所指向的存储单元,最后是返回存储单元的值到主函数。所以调用fun(10)的返回值为10,a的值也为10, 选C
此题与对应教材类似第三分册25页6题。
(32)有如下程序:
#include
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;k<10;i+=2) fun(c[i],c[i+1]);for(i=0;k<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,9,
C)0,9,8,7,6,5,4,3,2,1, D)0,1,2,3,4,5,6,7,8,9,
答案:A
详细解答:该知识点考察的是函数实际参数与形式参数的传递过程,是我们上课强调的重点内容。该题没有涉及到指针,实参单向的值传递给形参,形参反过来不能传递给实参。在主函数中把数组元素作为实参进行传递给形参a和b,在fun中交换了形参a和b的值,但形参a和b值的改变并不影响实参。所以数组C中的元素没有改变。选A
此题与对应教材类似第三分册47页9题.
(33)有如下程序:
#include
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
答案:C
详细解答:该知识点考察的是结构体成员的引用,是我们上课强调的重点内容。在主函数中把一维数组名data赋给了指针变量p,则p指向数组元素data[0],且每一个数组元素含有两个成员x和y,所以表达式p->y 是引用data[0]的成员y,即等于10;(++p)->x是先让指针值自增,往下移动指向了data[1],然后引用data[1]的成员x, 即等于2。选C
此题与对应教材类似第三分册71页5题.
(34)有如下程序:
#include
void fun(int a[],int n)
{ int i,t;
for(i=0;i
}
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
答案:D
详细解答:该知识点考察的是一维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为数组名k和整数5,这样对应定义fun函数首部有三种形式(教材P84),这里采用了第二种形式。这样在fun函数对a[i]操作实际上就是对主函数中的k[i]操作,即 k[0]与k[4] 、k[1]与k[3]值交换了,所以选D
此题与对应教材类似第三分册46页7题.
(35)有如下程序:
#include
#define N 4
void fun(int a[][N],int b[])
{ int i;
for(i=0;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
printf("\n");
}程序的运行结果是
A)1,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10,
答案:B
详细解答:该知识点考察的是二维数组名和一维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为二维数组名x和一维数组名y,这样对应定义fun函数首部也有三种形式(教材P84、P86),这里采用了第二种形式。这样在fun函数对a[i][j]、b[i]进行操作实际上就是对主函数中的x[i][j]、y[i]进行操作,即把 x[0][0]、x[1][1]、x[2][2]和x[3][3]分别赋给y[0] 、y[1]、y[2]和y[3],所以选B
此题与对应教材类似第三分册49页17题.
(36)有如下程序:
#include
int fun(int (*s)[4],int n,int k)
{
int m,i;
m=s[0][k];
for(i=0;i
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
答案:C
详细解答:该知识点考察的是二维数组名作为实参进行参数传递,是我们上课强调的重点内容。在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有三种形式(教材P86),这里采用了第一种形式,也就是行指针。这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中的最大那个元素,所以选C
此题与对应教材类似第三分册50页3题.
(37)有如下程序:
#include
main ()
{struct STU {char name[9]; char ***; 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.name,b.***,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
答案:D
详细解答:该知识点考察的是结构体初始化赋值以及成员的引用问题,是我们上课强调的重点内容。在main中分别定义了两个结构体变量a 和b,虽然有语句b=a;但是并不影响结构体b中个成员的值,要改变成员的值必须要正确的引用成员,结构体成员的引用有三种方法(教材P115),因此选D
此题与对应教材类似第三分册72页1题.
(38)假定已建立以下链表结构,且指针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);
答案:D
详细解答:该知识点考察的是用结构体初构成链表的相关问题,是我们上课强调的重点内容。要删除q所指向的结点,只需要把q所指向结点的next成员中的地址赋给p所指向的结点中的next成员,让p跳过q所指向的结点,直接指向下一个结点即可,因此选D
此题与对应教材类似第三分册71页7题.
(39)有如下程序:
#include
main()
{
char a=4;
printf("%d\n",a=a<<1);
}
程序的运行结果是
A)40 B)16 C)8 D)4
答案:C
详细解答:该知识点考察的是位运算,是我们上课强调的重点必考内容。左移n位相当与乘以2n,所以4*21=8 因此选C
此题与对应教材类似第三分册23页13题.
(40)有如下程序:
#include
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);
} 程序的运行结果是
A)China B)Chinang C)ChinaBeijing D)BeijingChina
答案:B
详细解答:该知识点考察的是几个文件指针函数,是我们上课强调的重点内容。此题和我们的教材P133上的一道例题几乎是一样的,首先定义了2个指针字符串,fwrite(s2,7,1,pf)表示把从地址s2开始的7个字符写到pf所指的文件中,即把Beijing 写到了文件中;rewind(pf)表示把文件的位置移动到文件的开头;fwrite(s1,5,1,pf)表示把从地址s1开始的5个字符写到pf所指的文件中,即又把China写到文件中,于是覆盖了s2 所指字符串的前5个字符,所以最后文件中的内容是Chinang 选B
此题与对应教材类似第三分册78页14题.
二、填空题目:
1) 对下列二叉树进行中序遍历的结果是:
详细解答:该知识点考察的是二叉树的遍历,是我们上课强调的重点必考内容。二叉树的中序遍历是先访问左子树,再访问根结点,最后访问右子树。(请回顾前序和后序遍历的原则)把握了这点原则的话很容易得出答案DBXEAYFZC
此题与对应教材类似第三分册82页28题.
2) 按照软件测试的一般步骤,集成测试应在 之后进行。
答案:单元
详细解答:该知识点考察的是软件测试的4个步骤,是我们的总结上强调内容。是软件测试的4个步骤包括单元测试、集成测试、确认测试和系统测试。所以答案为单元测试。
此题与对应教材类似第三分册87页23题.
3)软件工程三要素方法包括工具、方法和过程,其中 支持软件开发的各个环节的控制和管理
答案:过程
详细解答:该知识点考察的是软件工程三要素的具体内容,是我们总结上强调的考试内容。在我们的教材上P26有确切的解释。工具:完成软件工程项目的技术手段;工具:支持软件的开发、管理、文档生成;过程:支持软件开发的各个环节的控制和管理
此题与对应教材类似第三分册86页3题.
4)数据库设计包括概念设计、 和物理设计。
答案:逻辑设计
详细解答:该知识点考察的是数据库设计阶段的内容,是我们总结上强调的重点考试内容。数据库设计包括需求分析阶段、概念设计阶段、逻辑设计阶段和物理设计阶段。但题目强调的是设计包括的内容,所以答案为逻辑设计。
此题与对应教材类似第三分册92页25题.
5) 在二维表中,元组的 不能再分成更小的数据项。
答案:分量
详细解答:该知识点考察的是元组的有关内容,是我们总结上强调的重点内容。一个实体的所有属性值叫元组,而一个元组是由n个元组分量组成的,由此可知元组的分量是不能再分成更小的数据项。
此题与对应教材类似第三分册91页14题.
6) 设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式_______。
答案:a=-b
详细解答:该知识点是考查了复合赋值表达式的运算,原表达式等价于:a=a-(a+b),即a=-b.
此题与对应教材第三分册9页8题。
7) 若整型变量a和b中的值分别为7和9,
要求按以下格式输出a和b的值:
a=7
b=9
请完成输入语句:printf(“【7】”,a,b);
答案:a=%d\nb=%d\n
详细解答:该知识点是考查数据的输入输出格式,属于识记内容,在课堂上多次强调。
此题与对应教材第三分册9页5题。
8)以下程序的输出结果【8】。.
#include
main()
{ int i,j,sum;
for(i=3;i>=1;i--)
{ sum=0;
for(j=1;j<=i;j++) sum+=i*j;
}
printf(“%d\n”,sum);
}
答案:1
详细解答:该知识点是考查了循环的嵌套,由于对于i的每一轮循环,sum都重新初始化为0,所以sum的值是i为1这一轮的值,即i为1,j为时,sum的值是0.
此题与对应教材第三分册20页6题。
9)以下程序的输出结果是【9】。
#include
main()
{ int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
{ switch(j)
{ case 1:
case 2: printf("%d",*p++); break;
case 3: printf("%d",*(--p));
}
}
}
答案: 9911
详细解答:指针p开始指向a[5],①第一轮循环,j值为3,匹配case 3,打印*(--p),即a[4]的值9,指针p指向a[4];②第二轮循环,j值为2,匹配case 2,打印*p++(先用后加),即值为9,p指向a[5],遇break跳出switch语句; ③第三轮循环,j值为1,匹配case 1,无执行语句,由于没有break,继续往下执行case 2,打印*p++,即值为11。当j值为0时,表达式j为假,结束for循环。最后输出9911.
此题与对应教材第三分册21页9题
10) 以下程序的输出结果是【10】。
#include
#define N 5
int fun(int *s,int a,int n)
{ int j;
*s=a;j=n;
while(a!=s[j]) j--;
return j;
}
main()
{ int s[N+1]; int k;
for(k=1;k<=N;k++) s[k]=k+1;
printf("%d\n",fun(s,4,N));
}
答案:3
详细解答:主函数里的for语句给数组s赋初值{0,2,3,4,5,6},调用函数fun(s,4,N)的功能是把s[0]重新赋值为4,然后从数组元素s[5]由后往前,与s[0]比较,直到s[0]与s[j]相等,即(a!=s[j]值为假,结束while循环,返回此时j的值。显然,当j为3时,s[3]的值为4,与s[0]相等,故答案为3.
此题与对应教材第三分册37页13题(返回数组下标)
11)以下程序的输出结果是【11】。
#include
#define N 5
int fun(int x)
{ static int t=0;
return(t+=x);
}
main()
{ int s,i;
for(i=1;i<=5;i++) s=fun(i);
printf("%d\n",s);
}
答案:15
详细解答:此题考查了静态局部变量。当每一次调用函数fun时,静态变量t的值不会消失。主函数5次调用了函数fun,s的值为1+2+3+4+5=15.
此题与对应教材第三分册45页3题
12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。
4
3 7
2 6 9
1 5 8 10
#include
main()
{ int x[4][4],n=0,i,j;
for(j=0;j<4;j++)
for(i=3;i>=j; 【12】)
{n++;x[i][j]= 【13】;}
for(i=0;i<4;i++)
{ for(j=0;j<=i;j++) printf("%3d",x[i][j]);
printf("\n");
}
}
答案:i--;n详细解答: 第二个for语句的作用是按指定的数据给x数组的下三角置数,置数的顺序为从左至右,从下往上。
此题与对应教材第三分册52页6题。
13)以下程序的功能是:通过函数func输入
字符并统计输入字符的个数。输入时用字符@作为输入标志。请填空。
#include
long【14】;
main()
{ long n;
n=func(); printf("n=%ld\n",n);
}
long func()
{ long m;
for(m=0; getchar()!='@'; 【15】);
return m;
}
答案:func();m++
详细解答:函数的定义在调用之后,需先申明申明格式就是函数首部加上一个“;”。 for的循环体语句为空语句,因此字符个数的统计在for之后的圆括号的表达式3中完成,每输入一个不为@的字符,执行空语句之后,m加上1,直到输入字符@为止。