今天參加了中國人民銀行的會計(jì)類考試,試題類型大致如下:
1.完成下列程序
..
......
............
....................
..............................
..........................................
........................................................
#include
#define N 8
int main()
{
int i;
int j;
int k;
---------------------------------------------------------
││││││
---------------------------------------------------------
return 0;
}
答:
#define N 8
int main()
{
int i;
int j;
int k;
for(i=0;i{
for(j=0;j{
printf("");
for(k=0;kprintf(".");
}
printf("\n");
}
return 0;
}
2.完成程序,實(shí)現(xiàn)對數(shù)組的降序排序
#include
void sort( );
int main()
{
int array[]={45,56,76,234,1,34,23,2,3}; //數(shù)字任意給出
sort( );
return 0;
}
void sort( )
{
---------------------------------------------------------
zd.54yjs.cn
││││││
---------------------------------------------------------
}
答:使用選擇排序法,我為sort函數(shù)多加了兩個形參,至少第一個是必須的,否則無法傳入待排序數(shù)組。不知道這樣做是否符合題意。
void sort(int array,int num)
{
int temp;
for(int i=0;ifor(int j=i+1;jif (array{
temp=array;
array=array[j];
array[j]=temp;
}
}
3.菲波納契數(shù)列,1,1,2,3,5……編寫程序求第十項(xiàng)?梢杂眠f歸,也可以用其他方法,但要說明你選擇的理由。
#include
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(10));
return 0;
}
int Pheponatch(int N)
{
--------------------------------
││││
--------------------------------
}
答:使用遞歸,理由是遞歸編程簡單,代碼容易理解,但缺點(diǎn)是效率不高,而且有深度限制,如果深度太深,則堆棧會溢出。
int Pheponatch(int N)
{
if (N==3)
return 2;
else if (N==2||N==1) zd.54yjs.cn
return 1;
else
return Pheponatch(N-1)+Pheponatch(N-2);
}
4.下列程序運(yùn)行時會崩潰,請找出錯誤并改正,并且說明原因。
#include
#include
typedef struct TNode
{
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, 數(shù)字任意給出
return 0;
}
void append(int N)
{
TNode NewNode=(TNode )malloc(sizeof(TNode));
NewNode->value=N;
NewNode->left=NULL; //新增
NewNode->right=NULL; //新增
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode temp;
temp=root;
while((N>=temp->value && temp->left!=NULL)||(Nvalue && temp->right!=NULL))
{
while(N>=temp->value && temp->left!=NULL) zd.54yjs.cn
temp=temp->left;
while(Nvalue && temp->right!=NULL)
temp=temp->right;
}
if(N>=temp->value)
temp->left=NewNode;
else
temp->right=NewNode;
return;
}
}
答:因?yàn)樾鹿?jié)點(diǎn)的左右指針沒有賦NULL值,至使下面的while循環(huán)不能正確結(jié)束而導(dǎo)致內(nèi)存越界,最后崩潰(注意結(jié)束條件是temp->left!= NULL或temp->right!=NULL)。改正就是增加兩條賦值語句。
相關(guān)文章推薦:
硬件巨頭Intel筆試真題
微軟等世界500 強(qiáng)公司的筆試真題
IBM社會招聘筆試題練習(xí)準(zhǔn)備
中金2015 招聘筆試真題
百度公司W(wǎng)eb開發(fā)工程師筆試題