第一篇:軟件工程師應(yīng)聘試題(最終版)
軟件工程師初試試題
姓名:___________日期:_________總分?jǐn)?shù):______(注:請(qǐng)用 C 語(yǔ)言答題,答題時(shí)間:分鐘)
1、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?
2、寫出下面的程序的執(zhí)行結(jié)果。
int main(int argc, char* argv[])
{
char *pStr;
char szData[]=“tozed”;
pStr =(char *)szData;
printf(“%d,%d,%d,%dn”,sizeof(pStr),sizeof(szData),strlen(pStr),strlen(szData));
return 0;
}
3、改錯(cuò),請(qǐng)指出下面程序的錯(cuò)誤。
void main()
{
int x,y;
int *ptr;
char *str;
*ptr=8;
Y = 8358300000;
ptr=y;
if(*ptr = 3)
strcpy(str, “This is a test”);
return 0;
}
4、完成下面的函數(shù),實(shí)現(xiàn)從整數(shù)數(shù)組中最大值的功能:
int find_max(const int *buff, int buff_len)
5、完成下面的函數(shù),實(shí)現(xiàn)字符串復(fù)制功能(不能使用strcpy庫(kù)函數(shù))
Int myStrcpy(char *desc, const char *scr)
6、完成下面的函數(shù),實(shí)現(xiàn)對(duì)整數(shù)數(shù)組的排序功能
Void sort(int *buff, int buff_len)
int sub_max(b,i)/ *子程序定義* /
int *b,i;
{
int temp,j;
temp = *b ++;
for(j = 1;j <= i1;i ++)
for(j = 0;j < ni;j ++)
if(*(ptr+j)>*(ptr+j+1))/* 相臨兩個(gè)元素進(jìn)行比較* /
{
t = *(ptr + j);/ *兩個(gè)元素進(jìn)行交換* /
*(ptr + j)= *(ptr + j + 1);
*(ptr + j + 1)= t;
}
}
已知strcpy函數(shù)的原型是
char* strcpy(char* strDest,const char* strSrc);
1.不調(diào)用庫(kù)函數(shù),實(shí)現(xiàn)strcpy函數(shù)
2.解釋為什么要返回char*;
1.strcpy的實(shí)現(xiàn)代碼
char* strcpy(char* strDest,const char* strSrc)
{
if((strDest == NULL)||(strSrc == NULL))//[1]
throw “Invalid Arguments”;//[2]
char* strDestCopy = strDest;//[3]
while((*strDest++ = *strSrc++)!= '