幾道華為經(jīng)典C語言面試題_第1頁
幾道華為經(jīng)典C語言面試題_第2頁
幾道華為經(jīng)典C語言面試題_第3頁
幾道華為經(jīng)典C語言面試題_第4頁
幾道華為經(jīng)典C語言面試題_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、找錯

voidtest1()

{

charstring[10];

char*str1="0123456789";

strcpy(string,str1);

}

這里string數(shù)組越界,因為字符串長度為10,還有一個結束符‘\0’。所以總共有11個字符長度。string數(shù)組大小為10,這里越界了。

PS:使用strcpy函數(shù)的時候一定要注意前面目的數(shù)組的大小一定要大于后面字符串的大小,否則便是訪問越界。

voidtest2()

{

charstring[10],str1[10];

for(i=0;i<10;i++)

{

str1[i]='a';

}

strcpy(string,str1);

}

這里有一個一眼就能看出的問題,那就是變量i沒有定義,這在代碼編譯階段編譯器可以幫你發(fā)現(xiàn),很容易搞定。然而很多問題是自己造成的漏洞,編譯器是幫不上什么忙的。這里最大的問題還是str1沒有結束符,因為strcpy的第二個參數(shù)應該是一個字符串常量。該函數(shù)就是利用判斷第二個參數(shù)的結束符來得到是否拷貝完畢。所以在for循環(huán)后面應加上str1p[9]=‘\0’;

PS:字符數(shù)組和字符串的最明顯的區(qū)別就是字符串會被默認的加上結束符‘\0’。

voidtest3(char*str1)

{

charstring[10];

if(strlen(str1)<=10)

{

strcpy(string,str1);

}

}

這里的問題仍是越界問題。strlen函數(shù)得到字符串除結束符外的長度。如果這里是<=10話,就很明顯越界了。

小結:上面的三個找錯的函數(shù),主要是考查對字符串和字符數(shù)組的概念的掌握以及對strcpy函數(shù)和strlen函數(shù)的理解。

2、找錯

DSNget_SRM_no()

{

staticintSRM_no;

intI;

for(I=0;I<MAX_SRM;I++)

{

SRM_no%=MAX_SRM;

if(MY_SRM.state==IDLE)

{

break;

}

}

if(I>=MAX_SRM)

return(NULL_SRM);

else

returnSRM_no;

}

這里for循環(huán)的判斷語句是后來我加上的,估計在網(wǎng)上流傳的時候被人給弄丟了,根據(jù)對程序的分析,給補上了。估計錯誤應該不是這兒。

5、a[q-p]=?

inta[3];

a[0]=0;a[1]=1;a[2]=2;

int*p,*q;

p=a;

q=&a[2];

很明顯:a[q-p]=a[2]=2;

6、內(nèi)存空間占用問題

定義int**a[3][4],則變量占有的內(nèi)存空間為:16位系統(tǒng)24,32位編譯系統(tǒng)中是48.

PS:公式:3*4*sizeof(int**).

7、程序編寫

編寫一個函數(shù),要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004年12月31日23時59分59秒,則輸出2005年1月1日0時0分0秒。

voidResetTheTime(int*year,int*month,int*date,int*hour,int*minute,int*second)

{

intdayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

if(*year<0

||*month<1||*month>12||

*date<1

||*date>31||*hour<0

||*hour>23||

*minute<0||*minute>59||*second<0||*second>60)

return;

if(*year%400==0||*year%100!=0&&*year%4==0)

dayOfMonth[1]=29;

if(*second>=60)

{

*second=0;

*minute+=1;

if(*minute>=60)

{

*minute=0;

*hour+=1;

if(*hour>=24)

{

*hour=0;

*date+=1;

if(*date>dayOfMonth[*month-1])

{

*date=1;

*month+=1;

if(*month>12)

{

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論