《华为笔试题大全.doc》由会员分享,可在线阅读,更多相关《华为笔试题大全.doc(3页珍藏版)》请在金锄头文库上搜索。
1、华为最新笔试题及其分析1.printf的输出问题printf(%d,total);/this is rightprintf(total);/this is wrongprintf(hello);/but this is right2.整数类型的长度char 1个子节,8位unsigned short intsigned short int short 2个字节,16位signed int unsigned int int 型在vc里是4个子节,32位,也可能是16位,2个字节long intunsigned long intlong型都是32位,4个字节float 32 ,4double 64
2、,8long double 128,16char 8,一个字节,存放的实际上是字符的ascii码3、找出错误并改正char *my_cpy(char* src, int len)char dest1024;memcpy(dest, src, len);return dest;上面的函数是否有问题,如果有指出其所在,如果没有,给出函数功能描述。答案:1。数组应该初始化2。memcpy不判断是否越界,所以调用前应该判断是否越界3。不应该返回rest,因为这个数组是在函数内部申请的,所以函数结束之后就会消失,指针也会变成“野指针”,所以指向非法地址最后一个比较隐蔽char *memcpy( char
3、 *dest, const char *src,int len )char* pDest = (char*)dest;char* pSrc = (char*)src;int pos;for(pos=0;pos=pbFrom+size | pbFrom=pbTo+size);while(size-0)*pbTo+ = *pbFrom+;return(pvTo);-常见函数编程: char *strcpy(char *strDest, const char *strSrc) ASSERT(strDest != NULL & strSrc != NULL); char *addr = strDest
4、; while(*strDest+=*strSrc+)NULL; /NULL可以省略,但更有利于编译器发现错误 return addr; void *memcpy(void *dest, const void *src, int count) ASSERT(dest!= NULL & src!= NULL); for(int i=0; i cout; i+) dest = src; int strcmp(const char*str1, const char *str2) while (str1 != NULL & str2 != NULL) if(*str1 *str2) return 1;
5、 else str1+; str2+; if(str1 = NULL & str2 != NULL) return -1; else if(str1 != NULL & str2 = NULL) return 1; else return 0; /way2: more compact int strcmp(const char*str1, const char *str2) int i = strlen( str1 ); int j; for(j=0; j str2j) return 1; /if str2 terminates, then str2j=0, str1jstr2j, return 1; else if(str1j *str2) return 1; else if(*str1 *str2) return -1; else if(*str1 = ) return 0; str1+;str2+;