Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21729
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-05 09:50
文章分类
文章存档

2013年(8)

我的朋友

分类: C/C++

2013-09-05 09:53:50

原文地址:C语言测试 作者:graylocus

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.      TCPUDP分别是什么?有什么区别?

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;

}

 

结果是段错误 原因在调用GetMemorystr100)时,没有返回指针值,指针p是一个局部变量,当调用GetMemory()函数结束,p的空间也就释放了。

此时指针str的值依然是NULL,调用strcpy()函数时,把字符串”hello“的值,复制到指针NULL指向的地方(即使没有分配任何内存空间),显然会出现段错误。

 

5.      在关系型数据库中,存在学生表A,分数表BA的字段(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;

}

}

 

 

阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~