华为笔试题(附答案)

loading 分享 2026-8-25 下载文档

中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

总之,static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中。 答案:栈;静态区;堆

// C/C++程序编译后的内存分为五部分:堆区、栈区、全局区(静态区)、常量区和代码区。

3、设有以下说明和定义:

typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max;

则语句 printf(\的执行结果是:______ (sizeof()函数的用法)

答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节,所以它的大小是20,data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是 20 + 32 = 52。当然,在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

4、队列和栈有什么区别?

答案:队列先进先出,栈后进先出

6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。 答案:

slnodetype *Delete(slnodetype *Head, int key) if(Head->number==key)

{ Head=Pointer->next; free(Pointer); break; } Back = Pointer; Pointer=Pointer->next; if(Pointer->number==key)

{ Back->next=Pointer->next; free(Pointer); break; } void delete(Node* p) { if(Head = Node)

while(p) }

7、请找出下面代码中的所有错误,说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

1、#include\

2、main() 3、{

4、 char*src=\5、 char* dest=NULL; 6、 int len=strlen(src); 7、 dest=(char*)malloc(len); 8、 char* d=dest; 9、 char* s=src[len]; 10、 while(len--!=0) 11、 d++=s--;

12、 printf(\13、 return 0; 14、}

答案:还要加上#include

int main()

{ char* src = \int len = strlen(src);

char* dest = (char*)malloc((len+1)*sizeof(char)); //要为\\0分配一个空间 char* d = dest;

char* s = &src[len-1]; //指向最后一个字符 while( len-- != 0 ) *d++=*s--;

*d = 0; //尾部要加\\0 printf(\

free(dest);// 使用完,应当释放空间,以免造成内存汇泄露 return 0; }

华为笔试题(3)

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分) 1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( 正确 ) 2、int (*ptr) (),则ptr是一维数组的名字。( 错误 int (*ptr) ();定义一个指向函数的指针变量 )

3、指针在任何情况下都可进行>, <,>=, <=,==运算。( 错误 )

4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( 错,不能用实形 ) 二、填空题(共30分)

1、在windows下,写出运行结果, char str[ ]= "Hello"; char *p=str; int n=10;

sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) void func(char str[100]){ } sizeof(str)=( )

答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析”

2、void getmemory(char **p, int num) { *p=(char *) malloc(num);} void test(void) { char *str=NULL; getmemory(&str,100); strcpy(str,"hello"); printf(str); }

运行test函数有什么结果?

答案:输出hello,但是发生内存泄漏。 3、设int arr[]={6,7,8,9,10};

int *ptr=arr; *(ptr++)+=123;

printf("%d,%d",*ptr,*(++ptr));

答案:8, 8。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从右到左,这里先*(++ptr) 后*pt,于是结果为8,8

三、编程题(第一小题20,第二小题30分)

1、 不使用库函数,编写函数int strcmp(char *source, char *dest),相等返回0,不等返回-1; 答案:一、

int strcmp(char *source, char *dest) { assert((source!=NULL)&&(dest!=NULL));

int i,j;

for(i=0; source==dest; i++)

{ if(source=='\\0' && dest=='\\0') return 0; else return -1;


华为笔试题(附答案).doc 将本文的Word文档下载到电脑
搜索更多关于: 华为笔试题(附答案) 的文档
相关推荐
相关阅读