一、单选题 1、正64边形的外角和是多少(A )
A 、1*360 B 、1*180 C 、64*360 D 、64*180
2、有一盆衣服(已经洗过了,需要漂洗),请问在漂洗次数固定的情况下如何分配水才能把衣服洗得最干净(C )
A 、从少到多 B 、从多到少 C 、平均分配 D 、随便洗
3、用力拉一根橡皮筋,橡皮筋上有没有点还处在原来的位置没有被拉走(B )
A 、有 B 、没有 C 、有是有、有时没有 D 、一般人拉没有,刘谦拉就有
4、假设一个应用程序需要使用多个提供不同功能但在皆接口上有差异的类,适合使用的设计模式是(D(不确定) )
A 、装饰模式 B 、迭代器模式 C 、工厂模式 D 、适配器模式
5、结构化程序设计主要强调的是(C )
A 、程序的规模 B 、程序的效率 C 、程序的易读性 D 、程序设计语言的先进性
6、SQL Server中,删除一个表的命令是(C )
A 、DELETE B、CLEAR C 、DROP D 、REMOVVE
7、以下关于互斥量说法错误的是:(B )
A 、单线程程序不需要使用互斥量
B 、互斥量可以被两个以上的线程锁定
C 、互斥量的激活是原子操作
D 、互斥量的创建和销毁可以在不同的线程进行
8、在Windows 任务管理器中发现某个进程CPU 占用率长时间处于100%,以下可能导致该现象的原因是(D )
A 、程序处于大量I/O过程中
B 、多线程导致进程死锁
C 、等带另一个程序响应
D 、程序进入死循环
9、假设进程中一个生产者线程,10个消费者线程,为保证进程间不出现死锁,信号量的初值可以设置为(C )
A 、-1 B 、0 C 、1 D 、10
10、使用两个栈共享一片空间时,当(D )时,才产生溢出???
A 、其中一个栈的栈底到达这片内存空间的中心点
B 、其中一个栈的栈顶到达这片内存空间的中心点
C 、两个栈均不空,且一个栈的栈顶到达另一个栈的栈底
D 、两个栈的栈顶在这片内存空间的某一位置相遇
11、在一个单链表HL 中,若要在指针所指节点的后面插入一个有指针second 所指向的节点,则执行(A )
A 、second->next=first->next ; first->next=second;
B 、first->next=second->next;second=first;
C 、second->next=first->next ; second->next=first;
D 、first->next=second->next;second->next=first;
12、以下C 语言编译过程的真确步骤是(反正A 对其他貌似也对。。。)
A 、预处理编译汇编连接
B 、预处理编译优化汇编连接
C 、编译优化汇编运行
D 、编辑预处理编译汇编优化运行
13、在C 语言程序编译时出现如下错误:“error LNK2019:unresoved external symbol"int__cdecl test (int )"(?test@@YAHH@Z) referenced ”可能的原因是(D )
A 、函数未定义B 、变量未声明C 、变量未定义D 、函数未声明
14、下列关于C 语言中的函数叙述错误的是(B )
A 、一个函数中可以有多条return 语句
B 、调用函数必须要在一条独立的语句中完成
C 、函数可以通过return 语句传递函数值
D 、主函数main 可以带有参数
15、在C 语言中,打开可读写的二进制文件myfile 并向该文件追加写入内容,如果myfile 不存在则创建新文件,正确的调用方式为()D
A 、fopen ("myfile","w" )B 、fopen ("myfile" ,"wb" )
C 、fopen ("myfile","r+b")D 、fopen ("myfile" ,"a+b")
解析:”r ”(只读),”w ”(只写),”a ”(追加)”b ”代表二进制文件,
”r+”为读写打开一个文本文件
”w+”新建立一个文件,先向此文件写数据,然后可以读此文件中数据
”a+”原文件不被删除,位置指针移到文件末尾,可以添加,也可以读。
16、在C 语言中,一个short int型数据在内存中占2字节,则short int型数据的取值范围(B )
A 、-256~255 B 、-32768~32767 C 、-65536~65535 D 、-2147483647-2147683648
17、下面是对数组s 的初始化,其中不正确的是(D )
A 、char s[6]={"abcd"}; B、char s[6]={'a','b','c','d'}
C 、char s[6]="" ; D、char s[6]="abcdef"
18、有以下一段程序代码:
void GetMemory(char **p,int num)
{
*p=(char *)malloc (num );
}
void Test(void )
{
char *str=NULL;
GetMemory (&str,100);
strcpy (str ,"hello" );
printf(str);
}
请问运行Test 函数会有什么样的结果(A )
A 、hello B 、无效指针,输出不确定
C 、NUll D 、程序崩溃
19、在32位系统中,有一类:
class A
{
public:
virtual int test();
virtual double test2();
int test3();
protected:
double test4();
private :
int a,b ,c ;
};
请问sizeof (A )=(A 不确定)
A 、12 B、16 C、28 D、32
20、有以下一段程序代码:
class A
{
public:
virtual void func1(){printf("A'sfuncl");}
void func2(){("A'sfunc2")};
}
class B:public A
{
public:
virtual void func1(){printf("B'sfuncl");}
void func2(){("B'sfunc2")};
}
void main()
{
B inst_b;
A *ptr_a->func1();
ptr_a->func1();
ptr_a->func2();
}
程序的输出结果为:(C )
A 、A'sfuncl B'sfunc2 B、B'sfuncl A'sfunc2 C 、B'sfuncl B'sfunc2 D、A'sfuncl A'sfunc2
二、填空题
1
2、满二叉树第i
3
4、设x=3,y=2,。
5private 成员。
6
三、简答题(每题6分,共18分)
1、列举你所知道的排序算法和它们的平均复杂程度。
答:1、冒泡排序(bubble sort)— O(n^2)
2、鸡尾酒排序(Cocktail sort, 双向的冒泡排序) — O(n^2)
3、插入排序(insertion sort)— O(n^2)
4、选择排序(selection sort)— O(n^2)
5、组合排序— O(nlog n)
6、堆排序(heapsort )— O(nlog n)
7、快速排序(quicksort )— O(nlog n)
2、列举析构函数与普通类成员函数的不同点。
答:1、析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( )
2、它不能带任何参数,也没有返回值(包括void 类型)。
3、只能有一个析构函数,不能重载
4、析构函数在对象生存期即将结束的时刻被自动调用
3、在C++语言中使用宏定义经常会引起一些错误(如少打括号引起表达式值与预期不符等),列举一些可以代替宏定义的方法。
四、编程题(共三题20分)
1、斐波那契数列的形式如下:1,1,2,3,5,8,13„„,n ,编写一个函数计算数列中第n 个元素的值。(5分)
(1)、C 语言程序实现
#include
int feibo(int p)
{
if(p>2)
return feibo(p-1)+feibo(p-2);
else
return 1;
}
void main()
{
int i,n;
long int sum=0;
scanf("%d",&n);
sum=feibo(n-1)+feibo(n-2);
printf("%d\n",sum);
}
(2)、C++语言实现
#include
using namespace std;
int fib(int n)
{
cout
if(n
else {return(fib(n-2)+fib(n-1));}
}
int main()
{
int n,answer;
cout
cin>>n;
cout
answer=fib(n);
coutreturn 0;
}
2、不调用任何系统函数,实现一个字符串查找子串的函数,如果包含字串,则返回该字符串的位置值,如果不包含,则返回-1。(7分)
#include
#include
using namespace std;
//查找子串函数
int strstr (char * source,char * find)
{
char source_len;
char find_len;
source_len = strlen(source);
find_len=strlen(find);
for(int i=0; i
{
for(int j=0;j
{
if(source[i+j]==find[j])
{
continue;
}
else
{
break;
}
}
if(j==find_len){return i;}
}
return -1;
}
int main()
{
char *sou="abcded";
char *fi="cde";
int result;
result=strstr(sou,fi);
cout
return 0;
}
3、用算法实现将一个输入的数字颠倒(输入12345->54321),要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡。(8分)
#include
int main(int argc,char **argv)
{
long num,temp;
int i;
temp=0;
scanf("%d",&num);
while(num!=0)
{
i=num%10;
num/=10;
temp=temp*10+i;
}
printf("%ld\n",temp);
return 0;
}
一、单选题 1、正64边形的外角和是多少(A )
A 、1*360 B 、1*180 C 、64*360 D 、64*180
2、有一盆衣服(已经洗过了,需要漂洗),请问在漂洗次数固定的情况下如何分配水才能把衣服洗得最干净(C )
A 、从少到多 B 、从多到少 C 、平均分配 D 、随便洗
3、用力拉一根橡皮筋,橡皮筋上有没有点还处在原来的位置没有被拉走(B )
A 、有 B 、没有 C 、有是有、有时没有 D 、一般人拉没有,刘谦拉就有
4、假设一个应用程序需要使用多个提供不同功能但在皆接口上有差异的类,适合使用的设计模式是(D(不确定) )
A 、装饰模式 B 、迭代器模式 C 、工厂模式 D 、适配器模式
5、结构化程序设计主要强调的是(C )
A 、程序的规模 B 、程序的效率 C 、程序的易读性 D 、程序设计语言的先进性
6、SQL Server中,删除一个表的命令是(C )
A 、DELETE B、CLEAR C 、DROP D 、REMOVVE
7、以下关于互斥量说法错误的是:(B )
A 、单线程程序不需要使用互斥量
B 、互斥量可以被两个以上的线程锁定
C 、互斥量的激活是原子操作
D 、互斥量的创建和销毁可以在不同的线程进行
8、在Windows 任务管理器中发现某个进程CPU 占用率长时间处于100%,以下可能导致该现象的原因是(D )
A 、程序处于大量I/O过程中
B 、多线程导致进程死锁
C 、等带另一个程序响应
D 、程序进入死循环
9、假设进程中一个生产者线程,10个消费者线程,为保证进程间不出现死锁,信号量的初值可以设置为(C )
A 、-1 B 、0 C 、1 D 、10
10、使用两个栈共享一片空间时,当(D )时,才产生溢出???
A 、其中一个栈的栈底到达这片内存空间的中心点
B 、其中一个栈的栈顶到达这片内存空间的中心点
C 、两个栈均不空,且一个栈的栈顶到达另一个栈的栈底
D 、两个栈的栈顶在这片内存空间的某一位置相遇
11、在一个单链表HL 中,若要在指针所指节点的后面插入一个有指针second 所指向的节点,则执行(A )
A 、second->next=first->next ; first->next=second;
B 、first->next=second->next;second=first;
C 、second->next=first->next ; second->next=first;
D 、first->next=second->next;second->next=first;
12、以下C 语言编译过程的真确步骤是(反正A 对其他貌似也对。。。)
A 、预处理编译汇编连接
B 、预处理编译优化汇编连接
C 、编译优化汇编运行
D 、编辑预处理编译汇编优化运行
13、在C 语言程序编译时出现如下错误:“error LNK2019:unresoved external symbol"int__cdecl test (int )"(?test@@YAHH@Z) referenced ”可能的原因是(D )
A 、函数未定义B 、变量未声明C 、变量未定义D 、函数未声明
14、下列关于C 语言中的函数叙述错误的是(B )
A 、一个函数中可以有多条return 语句
B 、调用函数必须要在一条独立的语句中完成
C 、函数可以通过return 语句传递函数值
D 、主函数main 可以带有参数
15、在C 语言中,打开可读写的二进制文件myfile 并向该文件追加写入内容,如果myfile 不存在则创建新文件,正确的调用方式为()D
A 、fopen ("myfile","w" )B 、fopen ("myfile" ,"wb" )
C 、fopen ("myfile","r+b")D 、fopen ("myfile" ,"a+b")
解析:”r ”(只读),”w ”(只写),”a ”(追加)”b ”代表二进制文件,
”r+”为读写打开一个文本文件
”w+”新建立一个文件,先向此文件写数据,然后可以读此文件中数据
”a+”原文件不被删除,位置指针移到文件末尾,可以添加,也可以读。
16、在C 语言中,一个short int型数据在内存中占2字节,则short int型数据的取值范围(B )
A 、-256~255 B 、-32768~32767 C 、-65536~65535 D 、-2147483647-2147683648
17、下面是对数组s 的初始化,其中不正确的是(D )
A 、char s[6]={"abcd"}; B、char s[6]={'a','b','c','d'}
C 、char s[6]="" ; D、char s[6]="abcdef"
18、有以下一段程序代码:
void GetMemory(char **p,int num)
{
*p=(char *)malloc (num );
}
void Test(void )
{
char *str=NULL;
GetMemory (&str,100);
strcpy (str ,"hello" );
printf(str);
}
请问运行Test 函数会有什么样的结果(A )
A 、hello B 、无效指针,输出不确定
C 、NUll D 、程序崩溃
19、在32位系统中,有一类:
class A
{
public:
virtual int test();
virtual double test2();
int test3();
protected:
double test4();
private :
int a,b ,c ;
};
请问sizeof (A )=(A 不确定)
A 、12 B、16 C、28 D、32
20、有以下一段程序代码:
class A
{
public:
virtual void func1(){printf("A'sfuncl");}
void func2(){("A'sfunc2")};
}
class B:public A
{
public:
virtual void func1(){printf("B'sfuncl");}
void func2(){("B'sfunc2")};
}
void main()
{
B inst_b;
A *ptr_a->func1();
ptr_a->func1();
ptr_a->func2();
}
程序的输出结果为:(C )
A 、A'sfuncl B'sfunc2 B、B'sfuncl A'sfunc2 C 、B'sfuncl B'sfunc2 D、A'sfuncl A'sfunc2
二、填空题
1
2、满二叉树第i
3
4、设x=3,y=2,。
5private 成员。
6
三、简答题(每题6分,共18分)
1、列举你所知道的排序算法和它们的平均复杂程度。
答:1、冒泡排序(bubble sort)— O(n^2)
2、鸡尾酒排序(Cocktail sort, 双向的冒泡排序) — O(n^2)
3、插入排序(insertion sort)— O(n^2)
4、选择排序(selection sort)— O(n^2)
5、组合排序— O(nlog n)
6、堆排序(heapsort )— O(nlog n)
7、快速排序(quicksort )— O(nlog n)
2、列举析构函数与普通类成员函数的不同点。
答:1、析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( )
2、它不能带任何参数,也没有返回值(包括void 类型)。
3、只能有一个析构函数,不能重载
4、析构函数在对象生存期即将结束的时刻被自动调用
3、在C++语言中使用宏定义经常会引起一些错误(如少打括号引起表达式值与预期不符等),列举一些可以代替宏定义的方法。
四、编程题(共三题20分)
1、斐波那契数列的形式如下:1,1,2,3,5,8,13„„,n ,编写一个函数计算数列中第n 个元素的值。(5分)
(1)、C 语言程序实现
#include
int feibo(int p)
{
if(p>2)
return feibo(p-1)+feibo(p-2);
else
return 1;
}
void main()
{
int i,n;
long int sum=0;
scanf("%d",&n);
sum=feibo(n-1)+feibo(n-2);
printf("%d\n",sum);
}
(2)、C++语言实现
#include
using namespace std;
int fib(int n)
{
cout
if(n
else {return(fib(n-2)+fib(n-1));}
}
int main()
{
int n,answer;
cout
cin>>n;
cout
answer=fib(n);
coutreturn 0;
}
2、不调用任何系统函数,实现一个字符串查找子串的函数,如果包含字串,则返回该字符串的位置值,如果不包含,则返回-1。(7分)
#include
#include
using namespace std;
//查找子串函数
int strstr (char * source,char * find)
{
char source_len;
char find_len;
source_len = strlen(source);
find_len=strlen(find);
for(int i=0; i
{
for(int j=0;j
{
if(source[i+j]==find[j])
{
continue;
}
else
{
break;
}
}
if(j==find_len){return i;}
}
return -1;
}
int main()
{
char *sou="abcded";
char *fi="cde";
int result;
result=strstr(sou,fi);
cout
return 0;
}
3、用算法实现将一个输入的数字颠倒(输入12345->54321),要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡。(8分)
#include
int main(int argc,char **argv)
{
long num,temp;
int i;
temp=0;
scanf("%d",&num);
while(num!=0)
{
i=num%10;
num/=10;
temp=temp*10+i;
}
printf("%ld\n",temp);
return 0;
}