手机版

华为C语言笔试题(5)

发布时间:2021-06-05   来源:未知    
字号:

华为 C 笔试

侮辱我的智商)
1。大意如下:38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。(我给一个最傻瓜的答案,因为我发现一起笔试的有且恰好有38个人,不知道**什么意思?)
2。大意如下:公司职员知道老板的年龄,不知道他女儿的年龄,老板3个女儿的年龄相加为13,相乘为老板年龄,且只有一个女儿的年龄大于5岁,求这4个的年龄?(网上有一大堆答案!)
3。原题是2002年以前的一道大学生数学建模竞赛的题,是说一个学生冒雨从宿舍去食堂吃饭,200米的距离内,问是走着少淋雨还是跑着少?(该题简化了大部分的假设,只剩下一点点问题要你解决,做着没劲!)




华为最新笔试题及其分析
1.printf的输出问题
printf("%d",total);//this is right
printf(total);//this is wrong
printf("hello");//but this is right
2.整数类型的长度
char 1个子节,8位
unsigned short [int]
[signed] short int
short 2个字节,16位

[signed] int
unsigned int
int 型在vc里是4个子节,32位,也可能是16位,2个字节
long [int]
unsigned long [int]
long型都是32位,4个字节
float 32 ,4
double 64,8
long double 128,16
char 8,一个字节,存放的实际上是字符的ascii码
3、找出错误并改正
char *my_cpy(char* src, int len){
char dest[1024];
memcpy(dest, src, len);
return dest;
}
上面的函数是否有问题,如果有指出其所在,如果没有,给出函数功能描述。
答案:
1。数组应该初始化
2。memcpy不判断是否越界,所以调用前应该判断是否越界
3。不应该返回rest,因为这个数组是在函数内部申请的,所以函数结束之后就会消失,指针也会变成“野指针”,所以指向非法地址
最后一个比较隐蔽
char *memcpy( char *dest, const char *src,int len )
{
char* pDest = (char*)dest;
char* pSrc = (char*)src;
int pos;
for(pos=0;pos<len;pos++)
{
pDest[pos] = pSrc[pos];
}
return (char*)pDest;
}
存在地问题就是没有判断指针是否非法assert(dest !=NULL || src != NULL); 条件为 FLASE 显示
不调用其他函数,写一个memcpy的函数,函数原型为
void *memcpy(void *dest, void *src, size_t length);
-----------利用好断言---------
/* memcpy ─── 拷贝不重叠的内存块 */
void memcpy(void* pvTo, void* pvFrom, size_t size)
{
void* pbTo = (byte*)pvTo;
void* pbFrom = (byte*)pvFrom;
ASSERT(pvTo != NULL && pvFrom != NULL);
/* 内存块重叠吗?如果重叠,就使用memmove */
ASSERT(pbTo>=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;
while(*strDest++=*strSrc++)
NULL; //NULL可以省略,但更有利于编

华为C语言笔试题(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)