當前位置:編程學習大全網 - 源碼下載 - 幾個常見的C語言面試題分析

幾個常見的C語言面試題分析

壹次去壹個小公司面試,沒有太重視,當時由於工作甚忙,也沒作準備。他們給我的試卷有大量的題,規定壹個小時必須做完,壹看題量,嚇了壹大跳,題有鏈表,有多維數組,有大量的程序閱讀,幸虧基本功還算紮實,未辱使命,差強完成。等到做到編程題時,才發現自己太長時間沒有寫過程序了,讓壹些瑣碎的改BUG工作和代碼維護浪費了太多的精力。壹直做下去,心裏暗暗吃驚,壹個小時,這個題量如果是在剛畢業時,還是有可能完成的,工作幾年後,壓力漸小,寫程序基本都是拿來主義,對標準庫函數的原理把握和編程能力越來越退化。由於當時時間緊迫,所寫程序也不夠完善,過後又思考了壹下,回到家後趕緊又對這些問題總結了壹下。下面對面試中遇到的編程問題分析了壹下。真是人在社會如江湖呀,學習是壹刻也不能放松的事。稍壹不慎,晚節不保不說,反而會陰溝裏翻船。

1.獲取路徑下的文件名

char * FindFileName(char * s)

{

int len;

char *tmp=NULL;

ASSERT(s != NULL);

for (len=strlen(s); len>0;len--)

{

if((s[len]=='/') ||(s[len]=='//'))

{

tmp = &s[len+1];

break;

}

}

return tmp;

}

2.把整型轉化為字符型

char * i2a(int n, char *s)

{

int i, sign;

ASSERT(s != NULL);

if ((sign = n) < 0)

{

n = -n; //轉為正數,利於取位

}

do

{

s[i++] = n % 10 + '0';

}

while ((n /= 10) > 0)

if (sign < 0)

{

s[i++] = '-';

}

s[i] = '/0';

reverse(s);

}

3.把字符型轉為整型

int a2i(char * s)

{

int i, n, sign;

ASSERT(s != NULL);

for (i = 0; s[i] == ' '; i++)

{

NULL; //如果字串前有空格,跳過所有空格

}

sign = (s[i] == '-') ?: -1 : 1;

if (s[i] == '+' || s[i] == '-')

{

i++; //判斷是正整數串還是負整數串

}

for (n = 0; s[i] > = '0' && s[i] <= '9'; i++)

{

n = 10 * n + (s[i] - '0');

}

return sign*n;

}

4.輸出字符串倒文,不能動態分配內存

char * reverse(char * s)

{

int c, i, j;

ASSERT(s != NULL);

for (i = 0, j = strlen(s) - 1; i < j; i++, j--)

{

c = s[i];

s[i] = s[j];

s[j] = c;

}

return s;

}

5.查找子串是否存在

int strindex(char *str,char *searchstr)

{

int end, i, j;

ASSERT((str != NULL) && (searchstr != NULL));

//計算結束位置

end = strlen(str) - strlen(searchstr);

if ( end > 0 )

{

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

{

for ( j = i; str[j] == searchstr[j-i]; j++ )

{

if ( searchstr[j-i+1] == '/0' ) /* 子字符串字結束 */

{

return i + 1; /* 找到了子字符串 */

}

}

}

}

return -1;

}

  • 上一篇:假期必讀茅盾文學獎評分最高的本書
  • 下一篇:『學了就忘』Linux系統管理 — 3.進程的查看(top命令)
  • copyright 2024編程學習大全網