華爲筆試題之十五
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++;
}
}
-
攜程交互設計師筆試及一面經歷分享
1。考前準備:考試的網站是賽碼網,設置考試環境的步驟挺簡單的,後面還有模擬題(不一定是本專業內的題目)讓你熟悉一下各項答題操作。環境一定要提前設好,萬一出問題了很坑。考試的界面右側有計算器!上方有交卷倒計時!不需要自己準備計算器和表!(我就自己備好計算器和表了,...
-
辦公室文祕崗位筆試試卷初級[必備]
在日常學習和工作生活中,我們很多時候都不得不用到試卷,做試卷的意義在於,可以檢驗學習效果,找出自己的差距,提高增強自信心。什麼樣的試卷纔能有效幫助到我們呢?以下是小編整理的辦公室文祕崗位筆試試卷初級,供大家參考借鑑,希望可以幫助到有需要的朋友。考試時間:45分...
-
青島二中今年將增筆試環節
近日,青島二中會考開放日舉辦,今年直升考將第一次增筆試環節,因今年直升生的政策還未發佈,要以市教育局公佈的爲準。另外,二中老師還就“二中杯”邀請賽做競賽指導,吸引了1500多名學生報名。3月26日上午,青島二中舉行會考開放日暨“二中杯”邀請賽競賽指導,吸引了近千...
-
關於北京高中會考首次取消統一筆試的文章
獨立完成一件作品、寫一份產品說明或小論文,參加新課改的高二學生將可拿到高中通用技術課的會考學分。記者昨天瞭解到,高中會考科目,取消統一筆試西城區這一探索在本市尚屬首次。作爲新課改課程的一大亮點,通用技術課的開設旨在增加學生的動手和實踐能力,學生可接觸...