拳皇卢卡尔的儿子:全国计算机等级考试二级公共基础知识课后习题及答案1
全国计算机等级考试二级公共基础知识课后习题及答案1
第一章 数据结构与算法
一.选择题
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. 在栈中只能插入数据 B. 在栈中只能删除数据
C. 栈是先进先出的线性表 D. 栈是先进后出的线性表
8.在深度为5的满二叉树中,叶子结点的个数为( )
A. 32 B. 31 C. 16 D. 15
9.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )
A. N+1 B. N C .(N+1)/2 D. N/2
10.设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1 .则T的叶子结点数为
A. 8 B. 7 C . 6 D. 5
二.填空题
1. 对长度为n的有序线性表中进行二分查找,需要的比较次数为( )
2. 设一棵完全二叉树共有700个结点,则在该二叉树中有( )个叶子结点
3. 设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为( )
4. 在最坏情况下,冒泡排序的时间复杂度为( )
5. 在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有( )个元素
第一章参考答案
一.选择题
1.C 2. D 3. A 4. B 5. C 6. D 7. B 8. B 9. B 10. A
二. 填空题
1) log2n 2) 350 3) DEBFCA 4) N(N-1)/2 5) 3
第二章 程序设计基础
一. 选择题
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. 操作是对象的动态属性
二.填空题
1.结构化程序设计的三种基本逻辑结构为顺序、选择和( )
2.源程序文档化要求程序应加注释。注释一般分为序言性注释和( )
3.在面向对象方法中,信息隐蔽是通过对象的( )性来实现的
4.类是一个支持集成的抽象数据类型,而对象是类的( )
5.在面向对象方法中,类之间共享属性和操作的机制称为( )
第二章参考答案
一.选择题
1.B 2. A 3. D 4. B 5. A
二.填空题
1) 重复(或循环) 2) 功能性 3) 封装 4) 实例 5) 继承 转贴
第三章 软件工程基础
一. 选择题
1.在软件生命令周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )
A.概要设计 B.详细设计 C.可行性研究 D.需求分析
2.下面不属于软件工程的3个要素的是( )
A.工具 B.过程 C.方法 D环境
3.检查软件产品是否符合需求定义的过程称为( )
A.确认测试 B.集成测试 C.验证测试 D.验收测试
4.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( ) A.控制流 B.加工 C.数据存储 D.源和潭
5.下面不属于软件设计原则的是
A.抽象 B.模块化 C.自底向上 D.信息隐蔽
6.程序流程图(PFD)中的箭头代表的是( )
A.数据流 B.控制流 C.调用关系 D.组成关系
7.下列工具中为需求分析的常用工具的是( )
A. PAD B. PFD C. N-S D. DFD
8.在结构化方法中,软件功能分解属于下列软件开发中的阶段是( ) A.详细设计 B.需求分析 C.总体设计 D.编程调试
9.软件调试的目的是( )
A. 发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能
10.软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及( )
A.阶段性报告 B.需求评审 C.总结 D.都不正确
二.填空题
1.软件是程序、数据和( )的集合.
2.Jackson方法是一种面向( )的结构化方法
3.软件工程研究的内容主要包括( )技术和软件工程管理
4.数据流图的类型有( )和事务型
5.软件开发环境是全面支持软件开发全过程的( )集合。
第三章参考答案
一.选择题
1.D 2. D 3. A 4. A 5. C 6. B 7. D 8. C 9. B 10. B
二.填空题
1) 文档 2) 数据流 3) 软件开发 4) 变换型 5) 软件工具 转贴
第四章 数据库设计基础
一.选择题
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.按条件f对关系R进行选择,其关系代数表达式是( )
A. R|×|R B. R|×|R C. σf(R) D. πf(R)
7.关系数据管理系统能实现的专门关系运包括( )
A.排序、索引、统计 B.选择、投影、连接
C.关联、更新、排序 D.显示、打印、制表
8.在关系数据库中,用来表示实体之间联系的是( )
A.树结构 B.网结构 C.线性表 D.二维表
9.数据库设计包括两个方面的设计内容,它们是( )
A.概念设计和逻辑设计 B.模式设计和内模式设计
C.内模式设计和物理设计 D.结构特性设计和行为特性设计
10 将E-R图转换到关系模式时,实体与联系都可以表示成( )
A.属性 B.关系 C.键 D.域
二. 填空题
1.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体”项目主管”与实体”项目”的联系属于( )的联系.
2.数据独立性分为逻辑独立性和物理独立性.当数据的存储结构改变时,其逻辑结构可以不变。因此,基于逻辑结构的应用程序不必修改,称为( )
3.数据库系统中实现各种数据管理功能的核心软件称为( )
4.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、( )和自定义完整性.
5.在关系模型中,把数据看成一个二维表,每一个二维表称为一个( )转贴于
第四章参考答案
一.选择题
1.A 2. A 3. B 4. B 5. A 6. C 7. B 8. D 9. A 10. B
三. 填空题
1) 一对多(或1:N) 2) 逻辑独立性 3) 数据库管理系统 4) 参照完整性 5) 关系 转贴于
一、选择题
(1)下列关于栈的叙述正确的是
A)栈是非线性结构 B)栈是一种树状结构 C)栈具有先进先出的特征 D)栈具有后进先出的特征
(2)结构化程序设计所规定的三种基本控制结构是
A)输入、处理、输出 B)树形、网形、环形 C)顺序、选择、循环 D)主程序、子程序、函数
(3)结构化程序设计的一种基本方法是A)筛选法 B)递归法 C)归纳法 D)逐步求精法
(4)如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:A)选择 B)投影 C)连接 D)并
二、填空题
1.对于输入为N个数进行快速排序算法的平均时间复杂度是( )
2.在面向对象方法学中,直接反映了用户对目标系统的要求的模型是( )
3.软件测试方法中,黑盒测试个白盒测试法是常用的方法,其中黑盒测试法主要是用于测试( )
4.关系型数据库管理系统中存储与管理数据的基本形式是( )
C语言程序设计
一、选择题
(1)以下程序的输入结果是
main( )
{ int i=010,j=10,k=x10;
printf("%d,%d,%d ",i,j,k);
}
A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,16
(2)指针s所指字符串的长度
char *s=" "Name Address ";
A)说法不合法 B)19 C)18 D)15
(3)C语言中最简单的数据类型包括
A)整型、实型、逻辑型 B)整型、实型、字符型
C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型
(4)为表示关系x大于等于y大于等于z,应使用C语言表达式
A)(x>=Y)&&(Y>=z) B)(x>=Y)AND(y>=z) C)(x>=Y>=z) D)(x>=Y)&(Y>=z)
(5)下列对C语言字符数组的描述中错误的是
A)字符数组可以存放字符串 B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较
(6)以下说法中正确的是
A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分
(7)以下程序段的输出结果是
int x=3;
do
{ printf("%3d",x-=2); }
while(!(- -x));
A)1 B)30 C)1 -2 D)死循环
(8)设有如下定义:
char *aa[2]={"abcd","ABCD"};
则以下说法中正确的是
A)aa数组元素的值分别是"abcd"和"ABCD"
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符'a'和'A'的地址
(9)设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a, * p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是
A)*((* prt + 1)[2]) B)*(*(p+5)) C)(* prt + 1)+2 D)*(*(a+1)+2)
(10)以下程序的输出结果是
fut( int * *s,int p[2][3])
{ * *s=p[1][1]; }
main( )
{ int a[2][3]={1,3,5,7,9,11},*P;
p=(int * )malloc(sizeof(int));
fut(&p,a);
print("% ",*p);
}
A)1 B)7 C)9 D)11
二、填空题
(1)表示条件:10
(2)下列程序的输出结果是( )
#include
main( )
{ char b[ ]="ABCDEFG";
char *chp=&b[7];
while(- -chp>&b[0])
putchar(*chp);
putchar(" ");
}
(3)下列程序的输出结果是( )
int ast( int x,int Y,int * cp,int * dp)
{ * cp=x+y;
* dp=x-y;
}
main( )
{ int a,b,c,d;
a=4;b=3;
ast(a,b,&c,&d);
print("% d % d n",c,d);
}
(4)阅读程序:
main( )
{ char str1[ ]="how do you do",str2[10];
char *p1=str1,*p2=str2;
scanf("% s",p2);
printf("%s",p2);
printf("%s ",p1);
}
运行上面的程序,输入字符串 HOW DO YOU DO 则程序的输出结果是( )
(5)以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。请填空。
#include
main( )
{ FILE * fp;
char ch,fname [10];
printf("Input the name of file ");
gets(fname);
gets(fname);
if((fp=[5])= =NULL)
{ printf("Cannot open "); exit(0); }
printf("Enter data ");
while((ch=getchar())!='#')
fputc([6],fp);
fclose(fp);
}
三、上机操作题
1.改错题
下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如:若a中的字符串为:aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH.请改正程序中的错误,使它能得到正确结果,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
void fun (char *p, char *q, char *c)
{ int k=1;
while(*p! = *q)
{ if ( *p!< *q) c[k]= *q;
else c[k]= *p;
if(*p) p++;
if(*q) q++;
k++;
}
}
main( )
{ char a[10]="aBCDeFfH",b[10]="ABcd",c[80]={" 0"};
fun (a,b,c);
printf("The string a:");puts (a);
ptintf("The string b:");puts (b);
printf("The result :");puts(c);
2.编程题
请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
# include < conio.h>
# include < stdio.h>
void fun ( int *a, int *n)
{
}
main( )
{ int aa[1000],n,k;
clrscr( );
fun (aa,&n);
for (k=0;k if((k+1)%10= = 0) printf (" ");
else printf("%5d",aa[k]);
}
二级(C语言程序设计)样题参考答案
一、选择题
(1)D (2)C (3)D (4)B
二、填空题
(1)[1]O(Nlog2 N)
(2)[2]功能模型
(3)[3]软件外部功能
(4)[4]二维表
C语言程序设计
一、选择题
(1)A (2)D (3)B (4)A (5)C (6)C (7)C (8)D (9)D (10)C
二、填空题
(1)[1] (x>10&&x<100)//x<0
或(10或x<0//(x>10&&x<100)
或0>x//(10(并且括号有无都可以)
(2)[2]GFEDCB
(3)[3] 7 1
(4)[4]HOW how do you do (说明:HOW和how之间有无空格均可)
(5)[5]fopen(fname,"w")
(说明:"w"内以w开头的字符串均可)
[6] ch
· (1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为
A)GEDHFBCA B)DGEBHFCA
C)ABCDEFGH D)ACBFEDHG 正确答案: B
(2)树是结点的集合,它的根结点数目是
A)有且只有1 B)1或多于1
C)0或1 D)至少2 正确答案: A
(3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2
D)任意顺序 正确答案: B
(4)在设计程序时,应采纳的原则之一是 正确答案: D
A)不限制goto语句的使用 B)减少或取消注解行
C)程序越短越好 D)程序结构应有助于读者理解
(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)对象成分 B)变量成分 C)语句成分
D)传输成分
正确答案: D
· 一 、选择题
(1)下列数据结构中,按先进后出原则组织数据的是
A)线性链表 B)栈 C)循环链表
D)顺序表 正确答案: B
(2)具有3个结点的二叉树有
A)2种形态 B)4种形态
C)7种形态 D)5种形态
正确答案: D
(3)设有下列二叉树:
对此二叉树前序遍历的结果为
A)ZBTYCPXA B)ATBZXCYP
C)ZBTACYXP D)ATBZXCPY
正确答案: B
(4)结构化程序设计主要强调的是 正确答案: D
A)程序的规模 B)程序的效率
C)程序设计语言的先进性 D)程序易读性
(5)程序的3种基本控制结构是
A)过程、子过程和分程序
B)顺序、选择和重复
C)递归、堆栈和队列
D)调用、返回和转移
正确答案: B
(6)下列叙述中,不属于测试的特征的是
A)测试的挑剔性 B)完全测试的不可能性
C)测试的可靠性 D)测试的经济性
正确答案: C
(7)需求分析中开发人员要从用户那里了解
A)软件做什么 B)用户使用界面
C)输入的信息 D)软件的规模
正确答案: A
(8)下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A)选择 B)连接 C)投影 D)并
正确答案: B
(9)下列叙述中,正确的是
A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系
B)用E-R图只能表示实体集之间一对一的联系
C)用E-R图只能表示实体集之间一对多的联系
D)用E-R图表示的概念数据模型只能转换为关系数据模型
正确答案: C
(10)"年龄在18~25之间"这种约束是属于数据库当中的
A)原子性措施 B)一致性措施
C)完整性措施 D)安全性措施
正确答案: C
· (11)以下说法错误的是
A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B)计算机只能处理由0和1的代码构成的二进制指令或数据
C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D)每一种高级语言都有它对应的编译程序
正确答案: C
(12)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入
B)高效性 C)有穷性 D)确定性
正确答案: B
(13)已知int a=6; 则执行a+=a-=a*a;语句后,a的值为
A)36 B)0 C)-24 D)-60
正确答案: D
(14)下面各选项中,均是C语言标识符的选项组是
A)forchinato B)long_123short56_do
C)voidunion_342 D)text.txt _023_3ew
正确答案: B
(15)下列表达式中,结果为5的是
A)6*5%6 B)5*-2+15
C)5+75%10 D)6+-2/3
正确答案: B
(16)下列常量中,为不合法的实型常量表示的是
A).0032 B)0.0
C)0.3242E8 D).E3
正确答案: D
(17)关于C语言的主函数描述正确的是
A)C程序可以有多个main函数
B)C程序必有一个而且只能有一个main函数
C)C程序可以没有main函数
D)C程序的执行不一定在main函数开始执行
正确答案: B
(18)已知int a=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是
A)-1 B)0 C)1 D)语句错误
正确答案: B
(19)已知int a,b;double c;则以下语句中错误的函数调用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
正确答案: D
(20)已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为 正确答案: C
A)1 B)2 C)3 D)4
(30)阅读下面程序,则程序执行后的结果为
#include "stdio.h"
main()
{int a=4,b=6,c=7;
double d,fun(int,int,int);
d=fun(a,b,c);
printf("%lf\n",d);}
double fun(int a,int b,int c)
{double s;
s=a%b*c;
return s;}
A)27 B)27.000000
C)28 D)28.000000
正确答案: D
(31)下列不合法的指针变量的定义是
A)int *_k; B)char *_245;
C)int *p; D)double *5_is
正确答案: D
(32)下列关于指针变量赋空值的说法错误的是
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
正确答案: A
(33)阅读下面程序,则执行后输出的结果为
#include "stdio.h"
void fun(int *a,int *b)
{int m;
m=(*a+*b)*(*a+*b);
m+=(*a-*b)*(*a-*b);
printf("%d\n",m);}
main()
{ int a=5,b=6,*x=&a,*y=&b;
fun(x,y);}
A)120 B)121 C)122
D)123 正确答案: C
(34)阅读下面程序,则输出结果是
#include "stdio.h"
void fun(int *a,int *b)
{int c=20,d=25;
*a=c/3;
*b=d/5;}
main()
{ int a=3,b=5;
fun(&a,&b);
printf("%d,%d\n",a,b);}
A)6,5 B)5,6 C)20,25 D)3,5
正确答案: A
(35)以下对一维数组c进行正确的定义初始化的语句是
A)int c[10]=0; B)int c[10]={0}*10;
C)int c[1]={0,0,0,0,0,0,0};
D)int c[10]={0}; 正确答案: D
(36)以下二维数组c的定义形式是
A)int c[3][] B)float c[3,4]
C)double c[3][4] D)float c(3)(4)
正确答案: C
(37)阅读下列程序,则执行后输出的结果是
#include "stdio.h"
int k=1;
main()
{fun(k);
printf("%d\n",k);}
fun(int k)
{ k++;
k=k*6;} 正确答案: A
A)1 B)2 C)6 D)12
(38)已知#define M 2;的宏定义,执行语句k=M*5;后,k的值是
A)10 B)5 C)2 D)以上答案都不对
正确答案: D
(39)已知:int c[3][4];则对数组元素引用正确的是
A)c[1][4] B)c[1.5][0]
C)c[1+0][0] D)以上表达都错误
正确答案: C
(40)现有如下程序段
#include "stdio.h"
void fun(int *a,int *b,int *c)
{*c=*a+*b;}
main()
{int a[2]={12,23},c;
fun(a,a+1,&c);
printf("%d\n",c);}
则程序的输出结果为
A)23 B)12
C)0 D)35
正确答案: D
(41)若有以下语句,则正确的描述是
char a[]="toyou";
char b[]={′t′,′o′,′y′,′o′,′u′};
A)a数组和b数组的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)a数组等价于b数组
正确答案: C
(42)已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china赋给数组a的正确语句是
A)a="I love china"; B)strcpy(b,a);
C)a=b; D)strcpy(a,b); 正确答案: D
(44)阅读下面程序,则执行后的结果为
#include "stdio.h"
main()
{ char *str="abcdefghijklmnopq";
while(*str++!=′e′);
printf("%c\n",*str);}
A)f B)a C)e
D)q 正确答案: A
(45)现有如下程序段
#include "stdio.h"
int fun(int k,int *m)
{if(k%3)*m=k*k;
else *m=k/3;}
main()
{ int (*p)(int,int *),m;
p=fun;
(*p)(78,&m);
printf("%d\n",m);}
则程序段的输出结果为
A)24 B)25 C)26
D)27 正确答案: C
(46)阅读下列程序,则执行后的输出结果为
#include "stdio.h"
fun(int x)
{if(x/2>0)fun(x/2);
printf("%d",x%2);}
main()
{ fun(20);
putchar(′\n′);}
A)11100 B)10100 C)10101
D)10110 正确答案: B
(47)阅读如下程序段,则执行后程序的输出结果是
#include
main
{structa{int x; int y;}num[2]={{20,5},{6,7}};
printf("%d\n",num[0].x/num[0].y*num[1].y);}
A)0 B)28 C)20 D)5 正确答案: B
(48)阅读程序段,则执行后的输出结果为
#include "stdio.h"
typedef union{ long x[2];
int y[4];
char z[8];} atx;
typedef struct aa{ long x[2];
int y[4];
char z[8]; } stx;
main()
{printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}
A)union=8,struct aa=8
B)union=8,struct aa=24
C)union=24,struct aa=8
D)union=24,struct aa=24
正确答案: B
(49)阅读下列程序段
#include "stdio.h"
typedef struct aa
{ int a;
struct aa *next; } M;
void set(M *k,int i,int *b)
{ int j,d=0;
for(j=1;j
{ k[j-1].next=&k[j];
k[j-1].a=b[d++]; }
k[j].a=b[d]; }
main()
{ M k[5],*p;
int d[5]={23,34,45,56,67};
set(k,5,d);
p=k+1;
printf("%d\n",table); }
则下面的表达式在table处,能使程序执行后,打印输出数据45的是
A)p->next->a B)++p->a
C)(*p).a++ D)p++->a
正确答案: A
(50)阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)
#include "stdio.h"
void main()
{FILE *fp;
int a[10],*p=a;
fp=fopen("a123.txt","w");
while( strlen(gets(p))>0 )
{ fputs(a,fp);
fputs("\n",fp);}
fclose(fp);}
A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中
B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中
C)从键盘输入若干行字符,第一行写入文本文件a123.txt中
D)从键盘输入若干行字符,依次写入文本文件a123.txt中
正确答案: D
二 、填空题
(1)排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。 正确答案: 1.(交换排序)
(2)当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。 正确答案: 1.(上溢)(3) 【3】 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。 正确答案: 1.(封装)
(4)为了便于对照检查,测试用例应由输入数据和预期的 【4】 两部分组成。 正确答案: 1.(输出结果)
(5) 【5】 是从二维表列的方向进行的运算。
正确答案: 1.(关系运算)
(6)定义int a=5,b=20;若执行语句printf("%d\n",++a*--b/5%13);后,输出的结果为 【6】 。 正确答案: 1.(9)
(7)执行程序时的输入为123456789,则程序的运行结果为 【7】 。
#include "stdio.h"
main()
{ int a,b;
scanf("%2d%*2d%1d",&a,&b);
printf("%d\n",a-b);}
正确答案: 1.(7)
(8)阅读下面程序,则在执行时候的输出为 【8】 。
#include "stdio.h"
main()
{int x=1,y=2,z=0;
if(x=2)z=x,x=y,y=z;
printf("%d,%d\n",x,y);}
正确答案: 1.(2,2)
(9)语句printf("%d\n",′H′-′0′+64);的执行结果为 【9】 。
正确答案: 1.(88)
(10)阅读下面程序,则程序的执行结果为 【10】 。
#include "stdio.h"
main()
{ int a=10;
fun(a);
printf("%d\n",a);}
fun(int x)
{ x=50;}
正确答案: 1.(10)
(11)以下程序的输出结果是 【11】 。
int fun(int x,int y,int *p,int *q)
{ *p=x*y;
*q=x/y;}
main()
{int a,b,c,d;
a=4;b=3;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);}
正确答案: 1.(12,1)
(12)下面程序是求出数组arr的两条对角线上元素之和,请填空。
#include "stdio.h"
main()
{int arr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if( 【12】 )a=a+arr[i][j];
for(i=0;i<3;i++)
for( 【13】 ;j>=0;j--)
if( 【14】 )
b=b+ arr[i][j];
printf("%d,%d\n",a,b);}
正确答案: 1.(i==j ) 2.(j=2) 3.(i+j==2)
(13)下面程序的功能是:对字符串从小到大进行排序并输出,请填空。
#include "string.h"
#include "stdio.h"
sort(char *a[],int n)
{ int i,j;
char *p;
for(j=1;j<=n-1;j++)
for(i=0; 【15】 ;i++)
if( 【16】 >0)
{ p=a[i];
a[i]=a[i+1];
a[i+1]=p;}}
main()
{ int i;
char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort( 【17】 );
for(i=0;i<6;i++)
printf("%s\n",book[i]);}
正确答案: 1.(i
(14)下面的函数是完成1~n的累加,完成函数。
a(int k)
{if(k<=0)printf("error\n");
if(k==1) 【18】 ;
else 【19】 ;}
正确答案: 1.(return 1) 2.(return(a(k-1)+k))(15)阅读下列程序,则程序实现的功能是 【20】 。
#include "stdio.h"
struct node
{ char data;
struct node *next; } *head;
fun(struct node *q)
{ if(head == NULL)
{q->next=NULL;
head=q;}
else
{ q->next=head;
head=q;}}
main()
{char ch;
struct node *p;
head = NULL;
while((ch=getchar())!=′\n′)
{p=(struct node *)malloc(sizeof(struct node));
p->data=ch;
fun(p); }
p=head;
while(p!=NULL)
{printf("%c",p->data);
p=p->next; }}
正确答案: 1.(从键盘输入一行字符串,调用函数建立反序的链表,然后输出整个链表)
(1)最简单的交换排序方法是
A)快速排序 B)选择排序
C)堆排序 D)冒泡排序
正确答案: D
(2)栈通常采用的两种存储结构是
A)线性存储结构和链表存储结构
B)散列方式和索引方式
C)链表存储结构和数组
D)线性存储结构和非线性存储结构
正确答案: A
(3)线性表的顺序存储结构和线性表的链式存储结构分别是
A)顺序存取的存储结构、顺序存取的存储结构
B)随机存取的存储结构、顺序存取的存储结构
C)随机存取的存储结构、随机存取的存储结构
D)任意存取的存储结构、任意存取的存储结构 正确答案: B
(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
A)黑箱测试法 B)白箱测试法
C)错误推测法 D)安装测试法
正确答案: A
(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
A)模块之间的调用关系
B)程序的组成成分 C)控制程序的执行顺序 D)数据的流向
正确答案: A
(6)下列选项中,不属于模块间耦合的是
A)数据耦合 B)同构耦合
C)异构耦合 D)公用耦合
正确答案: C
(7)一个关系中属性个数为1时,称此关系为
A)对应关系 B)单一关系
C)一元关系 D)二元关系
正确答案: C
(8)为用户与数据库系统提供接口的语言是
A)高级语言
B)数据描述语言(DDL)
C)数据操纵语言(DML)
D)汇编语言
正确答案: C
(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
A)可重用性差
B)安全性差
C)非持久性
D)冗余性
正确答案: D
(10)需求分析阶段的任务是确定
A)软件开发方法
B)软件开发工具
C)软件开发费用
D)软件系统功能
正确答案: D
3.社会主义初级阶段基本经济制度的确立,在社会主义所有制理论上实现了哪些重大的突破和创新?
答:(1)以公有制为主体.多种所有制经济共同发展,是我国社会主义初级阶段的一项基本经济制度。社会主义初级阶段基本经济制度的确立,体现了党在所有制理论上的与时俱进
(2)社会主义初级阶段,确立什么样的基本经济制度的根本问题是如确认识非公有制经济在我国经济中的地位和作用,非公有制经济是我国社会主义市场经济的重要组成部分。这标志着我们党对社会主义初级阶段基本经济制度的认识提升到了一个新的高度。
(3)从我国社会主义初级阶段的实际和生产力发展水平出发,思考所有制结构问题。社会主义建设实践的经验与教训使我们深刻认识到,判断一种所有制是否有它存在的合理性,是否具有优越性,不能从概念出发,而必须从我国的具体国情出发。
(4)依据马克思历史唯物主义原理。建立怎样的所有制结构,从根本上说要看它是否适应当时当地生产力发展的要求,是否符合本国的具体国情,而不能简单地以公有化程度的高低作为标准。社会主义初级阶段基本经济制度的提出,表明我们党在改革开放的过程中,始终坚持马克思主义的基本理论和方法,坚持从中国的实际出发解决问题,
4.如何认识公有制的性质与实现形式之间的关系?
答:(1)公有制经济的性质和实现形式是两个不同层次的问题。公有制经济的性质体现在所有权的归属上,坚持公有制的性质,根本的是坚持国家和集体对生产资料的所有权。所有制作为生产关系的基础,有公有制与私有制.社会主义与资本主义的区别。
(2)所有制的实现形式是采取怎样的经营方式和组织形式问题,它不具有“公’’与“私”.“社,,与“资,的区分。实现形式要解决的是发展生产力的组织形式和经营方式问题,
(3)同样的所有制可以采取不同的实现形式,而不同的所有制可以采取相同的实现形式
(4)巩固和发展公有制经济,努力寻找能够极大促进生产力发展的公有制实现形式。公有制的实现形式可以而且应当多样化,一切反映社会化生产规律的经营方式和组织形式都可以大胆利用。
5.结合现阶段个人收入分配制度和按劳分配的理论,对现实经济生活中个人收入出现差距的现象进行分析。
答:(1).承认和允许人们在收入方面存在差别,并且在一定时期内收入差距的扩大,有其客观必然性。
主要是:①因为劳动者的个人禀赋和家庭负担的不同,实行按劳分配原则必然产生收入和富裕程度的不同。
②实行多种所有制经济和多种分配方式,拥有不同生产要素的不同社会成员也必然会产生收入的差距和富裕程度的不同。
③发展社会主义市场经济,在价值规律和竞争的作用下优胜劣汰,使具有不同竞争能力的人在富裕程度上必然出现差距。
④城乡之间.地区之间.脑力劳动与体力劳动之间,以及不同经济领域和部门之间客观上存在的差别,也必然引起收入的差别和富裕程度的不同。后三个方面不仅是产生收入差距的经济条件,而且必然在一定时期内导致收入差距的扩大。这些造成社会成员收入和富裕程度产生和扩大差距的因素,在社会主义初级阶段都会长期存在着
(2).共同富裕的目标只能是一个逐步实现的过程。从我国生产力发展的实际出发,如果不谈“先富”.只谈“共富”,不仅不可能为实现“共富”逐步创造物质基础,相反地只能回到平均主义的老路上去,导致共同的贫穷。当然,如果不谈“共富”.只谈“先富”,就可能导致两极分化,偏离社会主义的目标。只有实行邓小平提出的这个“先富”与“共富”大政策,才能逐步创造条件,最终达到共同富裕
(3).要深化分配制度改革注重社会公平,防止两极分化。(4).规范收入分配秩序,就是要通过完善分配政策使社会主义初级阶段不可避免存在的收入差距保持在合法和适度的范围。所谓合法,就是来自诚实劳动和守法经营而产生的收入差距;所谓适度,就是使收入差距保持在合理的范围之内,不使因收入差距扩大而形成的社会矛盾发展到尖锐对立的地步