清華06cs考研複試上機題(含解答)

2021-04-06 13:02:02 字數 2241 閱讀 8969

清華大學計算機

06考研上機題

只有系統結構方向參加上機,

3 月

27 日2:

00——4:

00

總述:用檔案

input.txt

輸入,用檔案

output.txt

輸出。程式設計環境只能用vc,沒有msdn,不能上網,不能查資料。題目1

:求n

的階乘。(

25分,

5組資料)

input.txt

4output.txt

24input.txt

15output.txt

1307674368000

解答:(

自己編寫的)

#include

#define maxn 3000

int longnum[maxn+1];

void mul(int b)

while(carry)

}void main()

}總結

:由於乘出來的數很大

,必須用陣列操作

,據說最後一組的測試資料為

1000,

所以陣列長度最少得

2567

位。題目

2:(最大和連續子串)給定一串串行,求其乙個連續子串行,使其和最大

,輸出這個和(

35分,

7組測試資料)

input.txt

4-1 -2 -3 -4

output.txt

-1input.txt

51 2 3 4 5

output.txt

15input.txt

623 34 -23 45 6 -7

output.txt

85解答:

program2.cpp

#include

#define minnum -32768

void main()

ofstream fout("output.txt");

fout<

fout.close();

}總結

:此題難點在必須使演算法複雜度為

o(n)

,如果用窮舉法,複雜度為

o(n2

).只能通過兩組資料後五組全為超時。題目3

:給出兒

bitree

的前序遍歷,和中序遍歷,輸出後序遍歷。

(40分,

8組測試資料)

input.txt

abcbac

output.txt

bcainput.txt

abcd

bdac

output.txt

no answer

解答:program3.cpp

#include

#define maxn 100

char a[maxn];

class binode

char data;

binode * lchild;

binode * rchild; };

int findinarray(int low,int high,int point)

int createtree(binode * & root,int low,int high,int & point)

int ret;

if((ret=findinarray(low,high,point))==-1)

return 0;

root=new binode(a[point]);

point++;

if(createtree(root->lchild,low,ret-1,point)&&createtree(root->rchild,ret+1,high,point))

return 1;

return 0; }

void postorder(binode * root,ofstream & fout) }

void main()

fin.close();

binode * root;

int point=0;

ofstream fout("output.txt");

if(createtree(root,count/2,count-1,point))

else

fout<<"no answer";

fout.close(); }

總結:考查遞迴程式設計

清華考研複試上機 進製轉換

將m進製的數x轉換為n進製的數輸出。輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出x的n進製表示的數。輸入時字母部分為大寫,輸出時為小寫,並且有大資料。示例1 16 10 f 15思路 這個題難就難在有 ...

清華考研複試上機 N的階乘

輸入乙個正整數n,輸出n的階乘。正整數n 0 n 1000 輸入可能包括多組資料,對於每一組輸入資料,輸出n的階乘示例1 4 515 24 1201307674368000思路 1000的階乘肯定是超過long long不知道多少位的。所以這道題只能用字串來處理。好在這道題要實現的乘法是乙個大整數乘...

清華考研複試上機 10進製 VS 2進製

對於乙個十進位制數a,將a轉換為二進位制數,然後按位逆序排列,再轉換為十進位制數b,我們乘b為a的二進位制逆序數。例如對於十進位制數173,它的二進位制形式為10101101,逆序排列得到10110101,其十進位制數為181,181即為173的二進位制逆序數。乙個1000位 即10 999 以內的...