文档介绍:c语言面试题集(完整版)
试题1:C语言面试题一——华为篇
?(请至少说明两种)
1)限制变量的作用域
2)设置变量的存储域(堆,主动分配内存也是堆)
?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
在特定时间内完成特定的任务,实时性与可靠性
?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在栈
?
左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1
?
没有回收垃圾资源
?
constructor (构造函数)
?(其它排序算法的时间复杂度)
O(n^2)
x 与“零值”比较的if语句。
if(x>&&x<-)
?该协议的主要层次结构?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层
?
ARP (Address Resolution Protocol)(地址解析協議)
?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做
#include <>
#define NULL 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
int data;
struct stu *next;
};
TYPE *line(int n)
{
int sum=1;
struct stu *head,*pf,*pb;
int i;
for(i=0;i<n;i++)
{
pb=(TYPE*) malloc(LEN);
pb->data=sum;
if (i==0)
pf=head=pb;
else
pf->next=pb;
if (i==(n-1))
pb->next=head;
else pb->next=NULL;
pf=pb;
sum++;
}
return(head);
}
main()
{
int M,N,x,i;
struct stu *p,*q;
printf("please scanf M and N (M<N)");
scanf("%d %d",&M,&N);
p=line(N);
x=N;
while(x)
{
for(i=1;i<M-1;i++)
{
p=p->next;
}
q=p->next;
printf("%d\n",q->data) ;
p->next = p->next->next;
p=p->next;
free(q) ;
x--;
}
getch();
}
()的参数类型是:
switch的参数不能为实型。(只能是int char)
试题2:
1.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?
第一题的答案应该是4^3-1=63
规律是n^3-1(当n为偶数0,2,4)
n^3+1(当n为奇数1,3,5)
答案:63
?要求给出算法和思路!
设2个栈为A,B, 一开始均为空.
入队:
将新元素push入栈A;
出队:
(1)判断栈B是否为空;
(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
(3)将栈B的栈顶元素pop出;
这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。
()吗,这个函数的原型是什么?
函数名: atol
功能: 把字符串转换成长整型数
用法: long atol(const char *nptr);
程序例:
#include <>
#include <>
int main(void)