华为笔试题之十五
tf的输出问题
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,一个字节,存放的实际上是字符的i码
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
pDest[pos] = pSrc[pos];
}
return (char*)pDest;
}
存在地问题就是没有判断指针是否非法assert(dest !=NULL || src != NULL); 条件为FLASE 显示
不调用其他函数,写一个memcpy的函数,函数原型为
void *memcpy(void *dest, void *src, size_tlength);
-----------利用好断言---------
void memcpy(void* pvTo, void* pvFrom, size_t size)
{
void* pbTo = (byte*)pvTo;
void* pbFrom = (byte*)pvFrom;
ASSERT(pvTo != NULL && pvFrom !=NULL);
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可以省略,但更有利于编译器发现错误
}
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;
else if(*str1 > *str2) return 1;
else { str1++; str2++;}
}
if(str1 == NULL && str2 !=NULL)
return -1;
else if(str1 != NULL && str2 ==NULL)
return 1;
else return 0;
}
//way2: morecompact
int strcmp(const char*str1, const char *str2)
{
int i = strlen( str1 );
int j;
for(j=0; j<=i; j++)
{
if(str1[j] > str2[j]) return 1; //if str2terminates, then str2[j]=0, str1[j]>str2[j], return1;
else if(str1[j] < str2[j]) return -1;
else if(str1[j] == ) return 0;
}
}
//way3: optimize again.
int strcmp(const char * str1, const char * str2 )
{
while(1)
{
if(*str1 > *str2) return 1;
else if(*str1 < *str2) return -1;
else if(*str1 == ) return 0;
str1++;str2++;
}
}
-
三菱东京日联银行面试笔试全过程
真是一份迟来的面经啊,其实偶早就打算写的,因为以前总是在网上看前人写的面经,受益良多,现在我也来为大家做点贡献~前天晚上接到正式的电话OFFER,一口答应,下周一就入职了。从偶第一天在前程无忧网上投递它家的那天算起,前后一共经历5个星期,个中种种,一言难尽。一面一笔...
-
Java笔试题推荐
一、100,100,102,106,112,120,1300,2,4,6,8x-8=2x=10n-120=xn=130二、有两个数组A,B,B数组中的元素包含在A数组中,请写一段代码把A数组中B没有的元素放到C数组中。int[]A=newint[]{0,1,2,3,4,5,6,7,8,9};int[]B=newint[]{2,4,6,8};int[]C=newint[th];intcount=0;f...
-
高校在读生MBA联考笔试经验谈
本人有幸通过了今年的MBA联考笔试,并被某名牌高校录取,当然有一定的运气在里边,但对我这样一个基础并不是很好的考生来讲,自己半年来所下的功夫还是我成功的主要原因。我的经验是,无论你基础好坏,都是一句话:精心准备,丝毫不要放松。笔试究竟难在哪儿?单纯从考试大纲或...
-
2017年3月19日山东省事业单位联考笔试部分真题及答案(教育类)
71.根据韦纳的归因理论,下列说法正确的是。A.将成功归因于努力,将使学习更加努力,从而提高其学习动机B.将成功归因于任务太容易,将使学生产生侥幸心理,从而降低其成就动C.将成功归因于运气,将使学生保持自信心,从而提高成就动机D.将成功归因于他人的帮助,将使学生自信...