sony往年程式筆試真題
面試筆試3.24W
A、該題用語言描述是指:第i行第一個輸出*,然後輸出i-1個.,重複上i次。 #include
#define N 8
int main()
{
int i;
int j;
int k;
for(i=0;i<=N;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
for(k=1;k
printf(".");
}
printf("n");
}
return 0;
B、降序排列陣列,很常見的,這裡我採用氣泡排序法還有選擇排序法:
氣泡排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j;
int temp;
for(i=0;i
{
for(j=0;j
{
if(array[j]
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
選擇排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j,k;
int temp;
for(i=0;i
{
k=i; //每次一趟結束後就從新的一個值開始,無需從頭來,因為每一次排完後都是最大的了
for(j=i+1;j
if(array[k]
{
k=j;
}
if(k!=i) //如果k不等於i就說明有更大的值,交換二值
{
temp=array;
array=array[k];
array[k]=temp;
}
}
}
C、該題考查同學們對遞迴演算法的認識程度,在這裡我們採用迭代演算法,優點是程式執行效率高,而且不用擔心堆疊溢位,在運算值大的情況下比遞迴演算法可以提高上萬倍的速度,比如同樣計算30,遞迴演算法用時
0.019s,而迭代演算法則只用了0.003s,可見是遞迴演算法的八分之一,值更大時這種越明顯。缺點是程式比較不容易懂。有興趣的可以參見《C和指標》127頁,具體程式如下:
遞迴法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int N)
{
if(N<=2)
return 1;
return Pheponatch(N-1)+Pheponatch(N-2);
}
迭代法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int n)
{
long result;
long previous_result;
long next_older_result;
result=previous_result=1;
while(n>2)
{
n-=1;
next_older_result=previous_result+result; previous_result=result;
result=next_older_result;
}
return result;
}
D、源程式如下,紅筆寫出的是修改的地方:(其實這個程式有好多漏洞,不知為什麼會那這個程式來考)
#include
#include
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 數字任意給出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->right=NULL;
NewNode->left=NULL;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=e && !=NULL) || (N
right
!=NULL
))
{
while(N>=e && !=NULL)
temp=;
while(N
temp=t;
}
if(N>=e)
=NewNode;
else
t=NewNode;
return;
}
}
原因:因為新節點的左右指標沒有賦 NULL 值,至使下面的 while迴圈不能正確結束而導致內
存越界,最後崩潰(注意結束條件是 temp->left!= NULL 或 temp->right!=NULL)。
#define N 8
int main()
{
int i;
int j;
int k;
for(i=0;i<=N;i++)
{
for(j=1;j<=i;j++)
{
printf("*");
for(k=1;k
printf(".");
}
printf("n");
}
return 0;
B、降序排列陣列,很常見的,這裡我採用氣泡排序法還有選擇排序法:
氣泡排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j;
int temp;
for(i=0;i
{
for(j=0;j
{
if(array[j]
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
選擇排序:
#include
void sort(int *array,int num );
int main()
{
int num=9,i;
int array[]={45,56,76,234,1,34,23,2,3};
sort(array,num);
for(i=0;i
printf("%dt",array);
return 0;
}
void sort(int *array,int num)
{
int i,j,k;
int temp;
for(i=0;i
{
k=i; //每次一趟結束後就從新的一個值開始,無需從頭來,因為每一次排完後都是最大的了
for(j=i+1;j
if(array[k]
{
k=j;
}
if(k!=i) //如果k不等於i就說明有更大的值,交換二值
{
temp=array;
array=array[k];
array[k]=temp;
}
}
}
C、該題考查同學們對遞迴演算法的認識程度,在這裡我們採用迭代演算法,優點是程式執行效率高,而且不用擔心堆疊溢位,在運算值大的情況下比遞迴演算法可以提高上萬倍的速度,比如同樣計算30,遞迴演算法用時
0.019s,而迭代演算法則只用了0.003s,可見是遞迴演算法的八分之一,值更大時這種越明顯。缺點是程式比較不容易懂。有興趣的可以參見《C和指標》127頁,具體程式如下:
遞迴法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int N)
{
if(N<=2)
return 1;
return Pheponatch(N-1)+Pheponatch(N-2);
}
迭代法:
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(30));
return 0;
}
int Pheponatch(int n)
{
long result;
long previous_result;
long next_older_result;
result=previous_result=1;
while(n>2)
{
n-=1;
next_older_result=previous_result+result; previous_result=result;
result=next_older_result;
}
return result;
}
D、源程式如下,紅筆寫出的是修改的地方:(其實這個程式有好多漏洞,不知為什麼會那這個程式來考)
#include
#include
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 數字任意給出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->right=NULL;
NewNode->left=NULL;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=e && !=NULL) || (N
right
!=NULL
))
{
while(N>=e && !=NULL)
temp=;
while(N
temp=t;
}
if(N>=e)
=NewNode;
else
t=NewNode;
return;
}
}
原因:因為新節點的左右指標沒有賦 NULL 值,至使下面的 while迴圈不能正確結束而導致內
存越界,最後崩潰(注意結束條件是 temp->left!= NULL 或 temp->right!=NULL)。
-
2005年交通銀行筆試
12月10號上午10點.通知我叫我12:50去的,我下午有事,就自做主張上午衝過去了.大家都在門口等,沒什麼熟面孔,就有個金融班的,還有王潔和她的同學,我知道了應該還有不少復旦的人.還遇見了FJ,跟她說看見她在PWC的名單裡,她樂的跳了起來.(不用這麼開心吧,哈哈)好象...
-
歐司朗筆試因禍得福
歐司朗筆試題目要求一小時搞定,主要包括:英語題目,專業題考什麼是光電效應,LED發光的原因,還有幾道畫圖的。都是電子的基礎題吧,可是我都不會做,唉!誰叫我過去不努力呢!胡亂寫些就過去了。前後不到10分鐘,然後就是問答題,英語回答,英語提問。第一題是中譯英,順便跟自己做下...
-
神州數碼筆經
剛剛神州數碼筆試回來關於這次筆試我可是所謂困難重重啊,差點棄了,但不管怎樣,總算考完了,現在談一下最近決定還是不考研了,準備找工作.關於暑期的實習生招聘,投了豪奪簡歷,神州數碼是第一個給我回的,也就意味著這是我的第一次筆試,所以我特別重視,網上查了好...
-
中糧集團筆試歸來
今天中糧筆試,終於可以不去清華了,不過人大好像也不是很好找。本來中午吃飯後準備休息會,3點考試嗎,2點走正好,臨睡前看了一下筆試通知,這一看不要緊,掃到筆試時間竟然是2點開考!趕緊準備一下就出發了,剛出校門就看到有兩輛公車呼嘯而過,只好等下一輛了(沒有足夠的信心打...