您的位置:首页 > 编程语言 > C语言/C++

华为C/C++笔试题一

2009-05-26 16:05 281 查看
1. static有什么用途?(请至少说明两种)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。(局部静态变量)
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。(外部静态变量)

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。(外部静态函数)

2. 引用与指针有什么区别?

1)引用被创建的同时必须被初始化,指针则可以在任何时候被初始化。
2)不存在指向空值的引用,引用必须与合法的存储单元关联,指针则可以指向NULL。
3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

3. 描述实时系统的基本特性

1)对外部事件的响应必须在一定时间内完成。

2)必须满足—定的峰值负荷要求,即在负载重,甚至超负荷的情况下,某些关键任务一定要得到满足。

3)实时系统的可靠性至关重要。

4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

全局变量存放在内存的全局数据区,局部变量放在堆栈区。

ps:



一个程序将操作系统分配给其运行的内存块分为4个区域:
  (1)代码区,存放程序的代码,即程序中的各个函数代码块。
  (2)全局数据区,存放程序的全局数据和静态数据。
  (3)堆区,存放程序的动态数据。
  (4)栈区,存放程序的局部数据,即各个函数中的数据。

5. 什么是平衡二叉树?

平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。

6. 堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。

7. 什么函数不能声明为虚函数?
constructor函数不能声明为虚函数。

8. 冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。

9. 写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)

10. Internet采用哪种网络协议?该协议的主要层次结构?
Tcp/Ip协议
主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。

11. Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析协议 )

12. IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

13. 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做

ps:#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
int data;
struct Node* next;
}LNode, *LinkList;

LinkList list = NULL;
int n; //人数
int m; //报数号

//n为总人数,k为第一个开始报数的人,m为出列者喊到的数
void JosephRing(int n, int k, int m)
{
LinkList p, r; /* p为当前结点,r为辅助结点,指向p的前驱结点*/

for(int i = 1; i <= n; i++) /*建立循环链表*/
{
p = (LinkList)malloc(sizeof(LNode));
p->data = i;

if(list == NULL)
list = p;
else
r->next = p;

r = p;
}

p->next = list; /*使链表循环起来*/
p = list; /*使p指向头节点*/

/*把当前指针移动到第一个报数的人*/
for(i = 1; i < k; i++)
{
r = p;
p = p->next;
}

/*循环地删除队列结点*/
while(p->next != p)
{
for(i = 1; i < m; i++)
{
r = p;
p = p->next;
}

r->next=p->next;
printf("%4d ",p->data);
free(p);
p=r->next;
}
printf("%4d/n",p->data);
}

void main()
{
printf("please input n:");
scanf("%d", &n);

printf("please input m:");
scanf("%d", &m);

JosephRing(n, 1, m);
}

14. 不能做switch()的参数类型是:
switch的参数不能为实型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: