华为慧通面试c语言题及答案,欢迎斧正
Q1:试题如下,请写出程序运行结果P=____
#include <stdio.h>
main()
{
int *p = (int *)100;
p=p+1;
printf("P=%d\n",p);
}
A1:
int *p = (int *)100;
可能会引起程序崩溃
p=p+1;
对指针加一,而非对指针的指向的变量加1
Q2:指出程序出错并写出正确程序..............
main()
{
}
A2:
main()
{
int p = 100;
p=p+1;
printf("P=%d\n",p);
}
Q3:根据以下给出的程序写一个弹出链表的尾结点数据.
struct NODE
{
int *data;
NOde *Link;
}
strut dlink
{
NODE *head; /*始终指向链表的头结点*/
NODE *teirl; /*始终指向链表的尾结点*/
}
函数
int *poplink(dlink *p)
{
}
A3:
int *poplink(dlink *p)
{
assert(p);
NODE last,prror;
last = p->teirl;
assert(last);
prror = p->head;
assert(prror);
int *result;
if (prror == last)
{
result = last->data;
free(last);
p->head = NULL;
p->last = NULL;
}
else
{
for(;prror->link != last; prror=prror->link);
result = last->data;
free(last);
p->last = prror;
}
return result;
}
//1
if(...)
for(...)
...
else
for(...)
...
//2
for(...)
if(...)
...
else
...
...代表语句或语句块
请指出以上两种写法的优点和缺点!
第一中方法有在循环次数比较高的情况下有更高的效率。第二中写法代码显得比较简洁。