浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案

上傳人:奇異 文檔編號(hào):21523775 上傳時(shí)間:2021-05-03 格式:DOCX 頁數(shù):84 大?。?7.96KB
收藏 版權(quán)申訴 舉報(bào) 下載
浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案_第1頁
第1頁 / 共84頁
浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案_第2頁
第2頁 / 共84頁
浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案_第3頁
第3頁 / 共84頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《浙大計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案(84頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 浙江大學(xué)計(jì)算機(jī)復(fù)試上機(jī) 2005-2007 (由林子整理 ) 2005 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (1/5) 第一題: A+B(10 分) [ 結(jié)題 ] 題目要求:讀入兩個(gè)小于 100 的正整數(shù) A和 B,計(jì)算 A+B。 需要注意的是: A和 B的每一位數(shù)字由對(duì)應(yīng)的英文單詞給出。 輸入格式:測(cè)試輸入包含若干測(cè)試用例, 每個(gè)測(cè)試用例占一行,格式為 "A + B =" ,相鄰兩字符串有一個(gè)空格間隔。當(dāng) A和 B 同時(shí)為 0 時(shí)輸入

2、結(jié)束,相應(yīng)的結(jié)果不要輸出。 輸出格式:對(duì)每個(gè)測(cè)試用例輸出 1 行,即 A+B的值。 輸入樣例: one + two = three four + five six = zero seven + eight nine = zero + zero = 輸出樣例: 3 90 96 #include <> #include <> #include <>

3、 #include <> int main(void) { const char data[12][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "+", "="}; unsigned a, b;  /*  轉(zhuǎn)換后的表達(dá)式參數(shù)  , 如 a+b(123+456) 

4、 */ unsigned i, j, k; /* 臨時(shí)變量,作為下標(biāo) */ char str[100]; /* 輸入字符串,足夠大容量 */ char temp[6];  /*  臨時(shí)字符串,用于檢索數(shù)字,如 "one"->1 */ char result[30];  /*  轉(zhuǎn)換后的表達(dá)式參數(shù),如 "123+456=" */ do{ a =

5、 b = i = j = k = 0; /* 初始化變量 */ memset(str, 0, sizeof(str)); memset(temp, 0, sizeof(temp)); memset(result, 0, sizeof(result)); gets(str); /* 獲取輸入字符串,不能使用 scanf ,因?yàn)? 有空格 */ for(i=0, k=0; i

6、&&i

7、 result[k++] = j + 0; result[k++] = +; result[k++] = =; break;  /*  找到匹配數(shù)字就不必再搜索了  */ } } result[k] = 0; /*  字符串結(jié)束標(biāo)記,  result  形式 "123+456=" */ sscanf(result,"

8、%d+%d=",&a,&b);  /*  用  sscanf  來獲 得  a,b  的值  */ if( a==0 && b==0 ) break; /* A,B 同時(shí)為零則退出 程序 */ else printf("%d\n", a + b); /* 打印輸出 A + B 的 數(shù)值 */ }while(1); return 0; }

9、 2005 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (2/5) 第二題:誰是開門關(guān)門的人( 10 分) 題目要求:每天第一個(gè)到機(jī)房的人要把門打開,最后一個(gè)離開的人要把門關(guān)好。現(xiàn)有一堆雜亂的機(jī)房簽到、簽離記錄,請(qǐng)根據(jù)記錄找出當(dāng)天開門和關(guān)門的人。 輸入格式:測(cè)試輸入的第一行給出記錄的總天數(shù) N ( > 0 ) 。 下面列出了 N天的記錄。 每天的記錄在第一行給出記錄的條目數(shù) M ( > 0 ) ,下面是

10、 M 行,每行的格式為 證件號(hào)碼 簽到時(shí)間 簽離時(shí)間 其中時(shí)間按“小時(shí) : 分鐘 : 秒鐘”(各占 2 位)給出,證件號(hào)碼是長度不超過 15 的字符串。 輸出格式:對(duì)每一天的記錄輸出 1 行,即當(dāng)天開門和關(guān)門人的證件號(hào)碼,中間用 1 空格分隔。 注意:在裁判的標(biāo)準(zhǔn)測(cè)試輸入中,所有記錄保證完整,每個(gè)人的簽到時(shí)間在簽離時(shí)間之前, 且沒有多人同時(shí)簽到或者簽離的情況。 輸入樣例: 3 1 ME25321 00:00:00 23:59

11、:59 2 EE301218 08:05:35 20:56:35 MA301134 12:35:45 21:40:42 3 CS301111 15:30:28 17:00:10 SC3021234 08:00:00 11:25:25 CS301133 21:45:00 21:58:40 輸出樣例: ME25321 ME25321 EE301218 MA301134 SC3021234

12、 CS301133 #include <> #include <> #include <> typedef struct { char id[16]; /* 證件號(hào)碼長度不超過 15 位 */ char cometime[9]; /* 時(shí)間格式 00:00:00 */ char leavetime[9]; /* 時(shí)間格式 00:00:00 */ }Record; int main() {

13、 int N, M, i; /* 記錄的總天數(shù) N,每天記錄的條目數(shù) M */ Record *pTimeList;/* 記錄該天出入人員的證件號(hào)碼、 進(jìn)入 時(shí)間、離開時(shí)間 */ int first, last; /* 記錄每天開門的人和關(guān)門的人 */ scanf("%d",& N); /* 讀入記錄的總天數(shù) */ while(N--) { scanf("%d", & M); /* 讀入該天的進(jìn)出人員數(shù) */ pTimeList = (Re

14、cord *)malloc(M*sizeof(Record)); for(i=0,first=0,last=0; i

15、st[i]etime ) > 0 ) first = i; if( strcmp( pTimeList[last].leavetime, pTimeList[i].leavetime) < 0) last = i; } } /* for i */ printf("%s %s\n", pTimeList[first].id, pTimeList[last].id); free(pTimeList); } /* for N */

16、 } 2005 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (3/5) 第三題:分?jǐn)?shù)統(tǒng)計(jì)( 12 分) 題目要求:今天的上機(jī)考試雖然有實(shí)時(shí)的 Ranklist ,但上面的排名只是根據(jù)完成的題數(shù)排序,沒有考慮每題的分值,所以并不是最后的排名。給定錄取分?jǐn)?shù)線,請(qǐng)你寫程序找出最后通過分?jǐn)?shù)線的考生,并將他們的成績按降序打印。 輸入格式:測(cè)試輸入包含若干場考試的信息。每場考試信息的 第 1 行給出考生人數(shù) N ( 0 < N < 100

17、0 ) 、考題數(shù) M ( 0 < M < = 10) 、分?jǐn)?shù)線(正整數(shù)) G;第 2 行排序給出第 1 題至第 M題 的正整數(shù)分值;以下 N行,每行給出一名考生的準(zhǔn)考證號(hào)(長度不超過 20 的字符串)、該生解決的題目總數(shù) m、以及這 m道題的題號(hào)(題目號(hào)由 1 到 M)。 當(dāng)讀入的考生人數(shù)為 0 時(shí),輸入結(jié)束,該場考試不予處理。 輸出格式:對(duì)每場考試,首先在第 1 行輸出不低于分?jǐn)?shù)線的考生人數(shù) n,隨后 n 行按分?jǐn)?shù)從高到低輸出上線考生的考號(hào)與分?jǐn)?shù),其間用 1 空格分隔。若有多名考生分?jǐn)?shù)相同,則按他們考號(hào)的升序輸出。

18、 輸入樣例: 4 5 25 10 10 12 13 15 CS004 3 5 1 3 CS003 5 2 4 1 3 5 CS002 2 1 2 CS001 3 2 3 5 1 2 40 10 30 CS001 1 2 2 3 20 10 10 10 CS000000000000000001 0 CS000000000000000002 2 1 2 0

19、 輸出樣例: 3 CS003 60 CS001 37 CS004 37 0 1 CS000000000000000002 20 #include <> #include <> #include <> typedef struct { char id[21]; /* 準(zhǔn)考證號(hào) (<=20 字符 ) */ int score

20、; /* 該考生總分 */ }StuInfo; int main() { int N, M, G, n; /* 考生人數(shù),題目數(shù),分?jǐn)?shù)線, 上線考生數(shù)量 */ int *pMarkList; /* 第 1 題至第 M題的正整數(shù)分值 */ StuInfo *pStuinfo; /* 考生信息 */ int i,j,k,a,b,c,m; /* 臨時(shí)變量 */ StuInfo tmp; /* 用于排序 */ while

21、( scanf("%d", &N ) && N!=0 ) /* 讀入考生人 數(shù) N */ { scanf("%d%d", &M, &G); /* 讀入題目 數(shù)量和分?jǐn)?shù)線 */ pMarkList = (int *)malloc(M*sizeof(int)); /* M 道題目的分?jǐn)?shù) */ pStuinfo = (StuInfo *)malloc(N*sizeof(StuInfo)); /* N 個(gè)考生 */ for(i=0; i

22、 讀入 M題每題分?jǐn)?shù) */ scanf("%d", & (pMarkList[i]) ); for(i=0, n=0; i

23、 { scanf("%d", & a ); /* 讀入答對(duì)題的題號(hào) */ pStuinfo[n].score += pMarkList[ a-1 ]; /* 因?yàn)轭}號(hào)是從 1 開始的;計(jì)算該考生的 總分 */ } if(pStuinfo[n].score >= G) /* 如果考生上線則記錄下來 */ n++; /* 否則不予記錄,便于排序 */ } for(i=0; i

24、,對(duì)上 線考生先按分?jǐn)?shù)排序,降序 */ { for(k=i, j=i+1; j pStuinfo[k].score) k = j; tmp = pStuinfo[k]; pStuinfo[k] = pStuinfo[i]; pStuinfo[i] = tmp; } for(i=0; i

25、考證號(hào)排序 */ { /* 統(tǒng)計(jì)相同分?jǐn)?shù)考生人數(shù) k */ for(k=1,j=i+1; j

26、 { for(c=a, b=a+1; b<=i+k; b++) if(strcmp(pStui nfo[c].id, pStuinfo[b].id) > 0) c = b; tmp = pStuinfo[a]; pStuinfo[a] = pStuinfo[c]; pStuinfo[c] = tmp; } } printf("%d\n",n); /* 排序完畢,按照要求 輸出,上線人數(shù) */

27、 for(i=0; i

28、/5) 第四題:最大連續(xù)子序列( 13 分) 題目要求:給定 K 個(gè)整數(shù)的序列 { N1, N2, ..., NK } ,其任意 連續(xù)子序列可表示為 { Ni, Ni+1, ...,Nj } ,其中 1 <= i <= j <= K。最大連續(xù)子序列是所有連續(xù)子序列中元素和最大的一個(gè), 例如給定序列 { -2, 11, -4, 13, -5, -2 } ,其最大連續(xù)子序 列為 { 11, -4, 13 } ,最大和為 20。在今年的數(shù)據(jù)結(jié)構(gòu)考卷中, 要求編寫程序得到

29、最大和,現(xiàn)在增加一個(gè)要求,即還需要輸出該子序列的第一個(gè)和最后一個(gè)元素。 輸入格式:測(cè)試輸入包含若干測(cè)試用例, 每個(gè)測(cè)試用例占 2 行, 第 1 行給出正整數(shù) K( < 10000) ,第 2 行給出 K個(gè)整數(shù),中間用空格分隔。當(dāng) K 為 0 時(shí),輸入結(jié)束,該用例不被處理。 輸出格式:對(duì)每個(gè)測(cè)試用例,在 1 行里輸出最大和、最大連續(xù)子序列的第一個(gè)和最后一個(gè)元素,中間用空格分隔。如果最大連續(xù)子序列不唯一,則輸出序號(hào) i 和 j 最小的那個(gè)(如輸入樣例的第 2、3 組)。若所有 K 個(gè)元素都是負(fù)數(shù),則定義其最大和 為 0,輸出整個(gè)序列的首尾元素

30、。輸入樣例: 6 -2 11 -4 13 -5 -2 10 -10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3 -1 -5 -2 3 -1 0 -2 0 輸出樣例: 20 11 13 10 1 4 10 3 5

31、 10 10 10 0 -1 -2 0 0 0 #include <> #include <> #include <> int main() { long int K, last; /* 輸入數(shù)據(jù)個(gè)數(shù) K<1000;最大子序 列最后一個(gè)元素的下標(biāo) last */ long int ThisSum, MaxSum, TmpMaxSum, index, *pList; while( scanf("%d

32、", &K) && K ) { ThisSum = 0; MaxSum = TmpMaxSum = last = LONG_MIN; pList = (long int *)malloc( K * sizeof(long int) ); for(index = 0; index < K; index++) { scanf( "%d", & (pList[index]) ); ThisSum += pList[index]; i

33、f(ThisSum > MaxSum) /* 輸入含有正數(shù)時(shí),忽略最大 子序列中首尾 0 的影響 */ { MaxSum = ThisSum;/* 更新 MaxSum */ if( MaxSum > TmpMaxSum ) /* 最大值更新時(shí),更新 最大子序列最后的數(shù)字 */ { /* 保證最大子序列起始位置在輸入串的最前面 */ TmpMaxSum = MaxSum; last = index; } }

34、 if( ThisSum < 0 ) ThisSum = 0; } /* trace back to find first number of the max subsequence */ for( TmpMaxSum= 0, index = last; index >= 0; index-- ) { TmpMaxSum += pList[index]; if(TmpMaxSum == MaxSum) break; } if( Max

35、Sum< 0 ) /* K個(gè)數(shù)字都是負(fù)數(shù),定義最大和為 0, 輸出首尾元素 */ printf("%ld %ld %ld\n", 0, pList[0], pList[K-1]); else printf("%ld %ld %ld\n", MaxSum, pList[index], pList[last] ); free(pList); } return 0; } 20

36、05 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (5/5) 第五題:暢通工程( 15 分) 題目要求:某省調(diào)查城鎮(zhèn)交通狀況, 得到現(xiàn)有城鎮(zhèn)道路統(tǒng)計(jì)表,表中列出了每條道路直接連通的城鎮(zhèn)。省政府“暢通工程”的目標(biāo)是使全省任何兩個(gè)城鎮(zhèn)間都可以實(shí)現(xiàn)交通(但不一定有直接的道路相連,只要互相間接通過道路可達(dá)即可)。問最少還需要建設(shè)多少條道路 輸入格式:測(cè)試輸入包含若干測(cè)試用例。每個(gè)測(cè)試用例的第 1 行給出兩個(gè)正整數(shù),分別是城鎮(zhèn)數(shù)目 N ( < 1000 ) 和道路數(shù)目M;隨后的 M行對(duì)應(yīng) M條道路,

37、每行給出一對(duì)正整數(shù), 分別是該 條道路直接連通的兩個(gè)城鎮(zhèn)的編號(hào)。為簡單起見,城鎮(zhèn)從 1 到 N編號(hào)。當(dāng) N為 0 時(shí),輸入結(jié)束,該用例不被處理。 輸出格式:對(duì)每個(gè)測(cè)試用例,在 1 行里輸出最少還需要建設(shè)的 道路數(shù)目。 輸入樣例: 4 2 1 3 4 3 3 3 1 2 2 3 5 2 1 2 3 5 999 0 0

38、 輸出樣例: 1 0 2 998 #include #include using namespace std; int n, visited[1024]; vector > connect(1024,vector(1024)); int dfs(int a) { int i;

39、 visited[a]=1; for(i=1;i<=n;i++) if (connect[a][i]==1 && visited[i]==0) dfs(i); return(0); } int main(int argc, char* argv[]) { int i,j,a,b,count = -1; int numtown,numroad; while(cin>>numtown && numtown!=0

40、){ cin>>numroad; n = numtown; for(i=1;i<=numtown;i++) for(j=1;j<=numtown;j++) connect[i][j] = 0; for(i=1;i<=numtown;i++) visited[i] = 0; for(i=1;i<=numroad;i++) { cin>>a>>b; connect[a][b] = connect

41、[b][a] = 1; } for(j=1;j<=numtown;j++) connect[i][j] = 0; for(i=1;i<=numtown;i++) visited[i] = 0; for(i=1;i<=numroad;i++) { cin>>a>>b; connect[a][b] = connect[b][a] = 1; } for(i=1;i<=numtown;i++)

42、 if (visited[i]==0) { dfs(i); count++; } cout<

43、果 A和 B 的末尾 K(不超過 8)位數(shù)字相同,請(qǐng)直接輸出 -1 。 輸入格式:測(cè)試輸入包含若干測(cè)試用例, 每個(gè)測(cè)試用例占一行,格式為 "A B K",相鄰兩數(shù)字有一個(gè)空格間隔。當(dāng) A 和 B同時(shí)為 0 時(shí)輸入結(jié)束,相應(yīng)的結(jié)果不要輸出。 輸出格式:對(duì)每個(gè)測(cè)試用例輸出 1 行,即 A+B的值或者是 -1 。 輸入樣例: 1 2 1 11 21 1 108 8 2 36 64 3 0 0 1 輸出樣例:

44、 3 -1 -1 100 #include <> #include <> int main(void) { unsigned int a, b, k; unsigned char ch1[50], ch2[50]; do{ scanf("%d %d %d", &a, &b, &k); if( a==0&&b==0 || k>8 ) break; sp

45、rintf(ch1, "%d", a); sprintf(ch2, "%d", b); strrev(ch1);strrev(ch2); if(strlen(ch1)

46、intf("%d\n",a+b); }while(1); return 0; } 2006 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (2/5) 2007-03-31 21:44:14 大 中 小 第二題:統(tǒng)計(jì)同成績學(xué)生人數(shù)( 12 分) 題目要求:讀入 N名學(xué)生的成績,將獲得某一給定分?jǐn)?shù)的學(xué)生人數(shù)

47、輸出。 輸入格式:測(cè)試輸入包含若干測(cè)試用例,每個(gè)測(cè)試用例的格式 為 第 1 行: N 第 2 行: N名學(xué)生的成績,相鄰兩數(shù)字用一個(gè)空格間隔。 第 3 行:給定分?jǐn)?shù) 當(dāng)讀到 N=0時(shí)輸入結(jié)束。其中 N不超過 1000,成績分?jǐn)?shù)為(包含) 0 到 100 之間的一個(gè)整數(shù)。 輸出格式:對(duì)每個(gè)測(cè)試用例, 將獲得給定分?jǐn)?shù)的學(xué)生人數(shù)輸出。 輸入樣例: 3 80 60 90 60 2

48、 85 66 0 5 60 75 90 55 75 75 0 輸出樣例: 1 0 2 #include <> #include <> int main(void) { unsigned N, score, num, i; unsigned pList[1000]; do

49、 { scanf("%d",&N); if(N==0) break; for(i=0;i

50、 2006 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (3/5) 第三 :火星 A+B (7 分)( ZOJ ACM 2529) 目要求: 入兩個(gè)不超 25 位的火星正整數(shù) A和 B, 算 A+B。需要注意的是:在火星上,整數(shù)不是 一 制的,第 n 位的 制就是第 n 個(gè)素?cái)?shù)。例如:地球上的 10 制數(shù) 2,在火星上 “ 1,0 ”,因 火星個(gè)位數(shù)是 2 制的;地球上的 10 制數(shù)38,在火星上 “ 1,1,1,0 ”,因 火星個(gè)位數(shù)是 2 制的,十位數(shù)是 3 制的,百位數(shù)是 5

51、 制的,千位數(shù)是 7 制的?? 入格式: 入包含若干 用例, 每個(gè) 用例占一行,包含兩個(gè)火星正整數(shù) A和 B,火星整數(shù)的相 兩位數(shù)用逗號(hào)分隔, A和 B之 有一個(gè)空格 隔。當(dāng) A或 B為 0 入 束,相 的 果不要 出。 出格式: 每個(gè) 用例 出 1 行,即火星表示法的 A+B的 。 入 例: 1,0 2,1 4,2,0 1,2,0 1 10,6,4,2,1 0 0 輸出樣例:

52、 1,0,1 1,1,1,0 1,0,0,0,0,0 =========================我的代碼 ============================= 測(cè)試用例和輸出結(jié)果: 1,0 2,1 1,0,1 4,2,0 1,2,0 1,1,1,0 1 10,6,4,2,1 1,0,0,0,0,0 0,1,0,1 0,0,1,1 1,2,0

53、 0,0,0,0,1 1,0,0 1,0,1 0,0,0,1 0,0,0,0,0,1 1,0 96,88,82,78,72,70,66,60,58,52,46,42,40,36,30,28,22,18, 16,12,10,6,4,2,1 96,88,82, 78,72,70,66,60,58,52,46,42,40,36,30,28,22,18,16,12,10, 6,4,2,1 1,96,88,82,78,72,70,66,60,58,52,46,

54、42,40,36,30,28,22,1 8,16,12,10,6,4,2,0 0,0,0 0,1,0 Press any key to continue #include <> #include <> #include <> #define N 25 int IsPrime(int n) { int i; if(n<2) return 0; for(i=2; i

55、 if(n%i==0) return 0; return 1; } int main(void) { char op1[300], op2[300], *p; int i, j, index, num, num1, num2, cnt, breakflag; int PrimeList[N+1], op1List[N], op2List[N], OutputList[N+1]; for(i = 0, j = 0; i < N+1; j++) /* 計(jì)

56、算每一位的進(jìn) 制 */ if(IsPrime(j)) PrimeList[i++] = j; do { if(scanf("%s%s", op1, op2) == EOF) break; for(i=0; i

57、rtok(op1,","); while(p) /* 求出第一個(gè)輸入火星數(shù)的數(shù)組 */ { if( ( op1List[num1++] = atoi(p) ) != 0) breakflag = 0; p = strtok(NULL,","); } if(breakflag) break; /* 第一個(gè)輸入為 0,退出循環(huán); 如果放到 ZOJ2529,刪除本行 */ num2 = 0; breakflag = 1; p = str

58、tok(op2,","); while(p) /* 求出第二個(gè)輸入火星數(shù)的數(shù)組 */ { if( ( op2List[num2++] = atoi(p) ) != 0) breakflag =0; p = strtok(NULL,","); } if(breakflag) break; /* 第二個(gè)輸入為 0,退出循環(huán); 如果放到 ZOJ2529,刪除本行 */ num1--,num2--; /* preset num1 and num2

59、 start from zero */ if(num1 < num2) /* 把輸入的兩個(gè)火星數(shù)數(shù)按位序?qū)R, 兩個(gè) if 操作只執(zhí)行一個(gè) */ for(i = num1; i >= 0; --i) { op1List[i + num2 - num1] = op1List[i]; op1List[i] = 0; } if(num1 > num2) for(i = num2; i >= 0; --i) { o

60、p2List[ i + num1 - num2] = op2List[i]; op2List[i] = 0; } cnt = (num1 > num2) num1 : num2; /* cnt 為兩個(gè)火星 數(shù)的較大位數(shù),便于確定輸出位數(shù) */ for( index=0, i=cnt; i>=0 ; i--, index++ ) { num = op1List[i] + op2List[i] + OutputList[index]; if( num - Prim

61、eList[index] >= 0 ) { OutputList[index] = num - PrimeList[index]; OutputList[index+1]++; if( index + 1 > cnt ) cnt++; /* 最高位進(jìn)位 */ } else OutputList[index] = num; } while( OutputList[cnt]==0 && cnt ) cnt--; /* omit

62、 leading zeros */ for( ; cnt >=0 ; cnt-- ) printf("%d%c", OutputList[cnt], (cnt==0)\n:,); }while(1); return 0; } 2006 年浙江大學(xué)計(jì)算機(jī)學(xué)院考研復(fù)試上機(jī)試題及參考答案 (4/5) 第 4 題:簡單計(jì)算器( 7 分) 題目要求:讀入一個(gè)只包含 +, -, *, / 的正整數(shù)計(jì)算表達(dá)式,計(jì)算該表達(dá)式的值。

63、輸入格式:測(cè)試輸入包含若干測(cè)試用例, 每個(gè)測(cè)試用例占一行,每行不超過 80 個(gè)字符,整數(shù)和運(yùn)算符之間用一個(gè)空格分隔。 沒有非法表達(dá)式。當(dāng)一行中只有 0 時(shí)輸入結(jié)束,相應(yīng)的結(jié)果不要輸出。 輸出格式:對(duì)每個(gè)測(cè)試用例輸出 1 行,即該表達(dá)式的值,精確到小數(shù)點(diǎn)后 2 位。 輸入樣例: 1 + 2 4 + 2 * 5 - 7 / 11 0 輸出樣例: #include <> #include <> #

64、include <> #include <> #define EmptyStack (-1) typedef float ElementType; typedef struct StackRecord { int Capacity; int TopOfStack; ElementType *Array; }*Stack; Stack CreateStack(int StackSize) {

65、 Stack S S = (Stack)malloc(sizeof(struct StackRecord)); S->Capacity = StackSize; S->TopOfStack = EmptyStack; S->Array = (ElementType*)malloc(sizeof(ElementType)*StackSize); return S; } void DisposeStack(Stack S) {

66、 if(S!=NULL) /* be aware of order ! */ { free(S->Array); free(S); } } /* if stack is empty, return 1 */ int IsEmpty(Stack S) { return S->TopOfStack == EmptyStack; } /* if stack is full, return 1 */ int IsFull(Stack S) { return S->TopOfStack >= S->Capacity; } void Push(ElementType X, Stack S) { if(IsFull(S))

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!