2013年(8)
分类: C/C++
2013-09-05 09:53:50
2011年应届毕业生计算机类相关专业测试题
答题说明:以下试题可以答在卷上也可以答在白纸上(但需要注明)
一、 简答题
1. 面向对象编程的三个基本特征是什么?
封装,继承,多态
2. 请写出printf函数的原型声明。
int printf(const char * string , ...);
3. 在c语言中static 都有什么用途?
当用于变量时1.当变量位于所有函数的外边时,限定变量为全局变量,且链接为内部链接,其他文件不能用此变量2.当变量位于函数内部时,变量作用域为局部,但是在程序运行时,一直存在,而不是仅在包含此变量的函数运行时,才存在。此变量不在存在栈中,而是在内存的固定位置。
当用于修饰函数时,此函数不能被别的文件访问。
4. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”?
extern c 指定程序用c编译器 编译变量和函数 防止c++源程序 和c源程
二、 问答题
1. TCP和UDP分别是什么?有什么区别?
tcp 传输控制协议 udp 用户数据包协议 区别 tcp是面向连接的可靠地运输层协议 udp 是无连接的简单不可靠的运输层协议
2. 简述window编程中句柄的概念,以及有什么好处。
3. 请写出冯诺依曼计算机的组成结构和基本作用。
控制器 运算器 存储器 输入设备 输出设备 控制器根据不同的计算结果,执行不同的工作流程。运算器处理数据。存储器存储记忆数据。输入设备和人进行交互,结束终端数据。输出设备把结果显示出来。
4. 下面程序运行结果是什么?并对结果进行分析。
#include
#include
#include
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100);
strcpy(str, "hello");
printf("%s\n",str);
}
int main()
{
Test();
return 0;
}
结果是段错误 原因在调用GetMemory(str,100)时,没有返回指针值,指针p是一个局部变量,当调用GetMemory()函数结束,p的空间也就释放了。
此时指针str的值依然是NULL,调用strcpy()函数时,把字符串”hello“的值,复制到指针NULL指向的地方(即使没有分配任何内存空间),显然会出现段错误。
5. 在关系型数据库中,存在学生表A,分数表B。A的字段(s_id,a_name),其中s_id为主键,B的字段(s_id, score),其中s_id为外键。现在要打印输出成绩为88的人员名单,请编写相应的SQL语句(可用多种方式)。
select * from A where A.s_id in ( select B.s_id
from B `where B.score=88 )
三、 编程题
已知head指向一个单向链表,链表中每个节点包含数据域和指针域,请编写程序,将该链表逆置。若原链表为:
逆置后为:
链表节点定义:
struct node
{
int val;
struct node *pnext;
};
/*将head所指的链表逆置*/
void invert_list(struct node *head)
{
}
//node.h文件声明结构体
struct node
{
int val;
struct node *pnext;
}
void invert_list(struct node *head)
//node_define.c 函数的实现
void invert_list(struct node *head)
{
struct node * pleft;
struct node * pright;
struct node * ptem;
int i=0,num=0;
ptem=head;
if(head->pnext->pnext)
{
while(head->pnext->pnext)
{
num++;
head=head->pnext;
}
num++;
}
}
else
if(head->pnext)
num=1;
pleft=ptem;
pright=head;
for(;i<=n/2;i++)
{
ptem=pleft->pnext;
pleft->pnext=pright->pnext;
pright->pnext=ptem;
ptem=pleft->pnext->pnext;
pleft->next->next=pright->pnext->pnext;
pleft=pleft->pnext;
while(pright!=head->pnext)
head=head->pnext;
pright=head;
}
}