中科院計算所2017推免生機試

2021-07-22 21:53:58 字數 3688 閱讀 4967

9月18號去計算所參加推免生的機試。。。9月19號去計算所參加推免生的面試。。。9月20號墮落在北京的青旅裡,不能出門。。。

首先是不得不承認,計算所的環境很好,真的很好。然後就是機試,6道題目,兩個小時,沒有網路。其實後來自己在看,覺得最起碼有兩個題目是簡單到我這種人都可以做出來的,無奈自己太渣,機試就跪的喲。最後是面試,專案真的太少,以至於老師一直在問我我的社會實踐。。。回來之後,一起住的去面試清華的大牛告訴我,這種事情其實都是有套路,而且之前要想一下老師會問什麼,然後想一下怎麼回答。大牛是真的不一樣的,比如傅利葉級數,我就只會做題,大牛就會想知道這個有什麼用。厲害的人就是厲害,就是會在思維方式上面不一樣。嗯,會在專業上想的比較深入。這樣想來,自己好像理解了會彙編的高老師說的我們沒有思考的能力的意思,像乙隻螻蟻一樣。我一定要改,我改還不行嗎。

然後就是題目了.

1.用鍊錶表示乙個整數集,實現:

a.將乙個整數插入整數集;

b.從整數集中刪除乙個整數;

c.兩個整數集的交集;

d.兩個整數集的並集。

2.將乙個用字串表示的數,表示為整型數

3.a是用任意個(大於等於乙個)數字和字母表示的字串,b是用0個或多個任意數字和字母表示的字串,請程式設計輸出b串在a串中第一次出現的位置,或者輸出不出現。

4.求圓周率,寫出計算公式,並計算出時間複雜度。

5.請根據輸入的點集判斷這些點構成的多邊形是否為凸多邊形。

6.計算輸入的數學表示式的值,數學表示式中包括+、-、*、/、(、)。

上面的題目全憑記憶,和原題意思一樣,表述的比較有誤差。

我只實現了1、2、3、4。下面是**:

第一題:

第一題本質上感覺就是鍊錶的實現。

set.h

#include#includetypedef struct intset set;

typedef struct intset* setlist;

struct intset

;void printlist(setlist s);

setlist insertint(int x, setlist s);

setlist deleteint(int x, setlist s);

setlist extractset(setlist s1, setlist s2);

setlist unionset(setlist s1, setlist s2);

set.cpp

#include"stdafx.h"

#include"set.h"

void printlist(setlist s)

printf("\n"); }}

setlist insertint(int x, setlist s)

else }

return s;

}setlist deleteint(int x, setlist s)

if (p == null)

printf("no number %d in this set!", x);

else

}return s;

}setlist extractset(setlist s1, setlist s2)

} return res;

}setlist unionset(setlist s1, setlist s2)

return s1;

}

1.cpp

// 1.cpp : 定義控制台應用程式的入口

#include "stdafx.h"

#include"set.h"

int _tmain(int argc, _tchar* argv)

printf("please input the number of another set and the set:\n");

scanf("%d", &n);

for (i = 0; i < n; i++)

printf("please input the number you want to insert:\n");

scanf("%d", &i);

h1 = insertint(i, h1);

printf("the inserted list is:\n");

printlist(h1);

printf("please input the number you want to delete:\n");

scanf("%d", &i);

h1 = deleteint(i, h1);

printf("the deleted list is:\n");

printlist(h1);

res = extractset(h1, h2);

printf("the extracted list is:\n");

printlist(res);

h1 = unionset(h1, h2);

printf("the unioned list is:\n");

printlist(h1);

system("pause");

return 0;

}

第二題:

第二題目測是這裡面最簡單的題目了,我唯一調過的題目(一把淚)。

2.cpp

// 2.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#includeint _tmain(int argc, _tchar* argv)

res = res * 10 + i;

} printf("the number is %d", res);

system("pause");

return 0;

}

第三題:

也不難,就是沒調過。

// 3.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#include#includeint _tmain(int argc, _tchar* argv)

}if (*tmp2 == '\0')

else

}else

tmp0++;

} if (*tmp0 == '\0')

system("pause");

return 0;

}

第四題:

第四題,我後來去網路上搜才發現第四題是一道大題啊,圓周率也是可以程式設計實現的。覺得程式設計師真是無所不能。

我的實現方法是最簡單的那一種。隨著迴圈次數的增加,圓周率也越來越精確。

// 4.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#includeint _tmain(int argc, _tchar* argv)

printf("圓周率為:%lf\n",res * 4.0);

system("pause");

return 0;

}

在實現第一和第三題的時候,出現的錯誤,現在想想,覺得挺有趣的,下面附上此問題的解決方法。

有時間要整理一篇關於字串的部落格。

2016中科院推免

最近一直在忙著推免的事情,有一段時間沒寫東西了。很感謝csdn能夠提供乙個平台讓我在這裡寫一些與技術無關的東西,讓我在這裡肆意吐槽而不會把我拉進黑名單。接到了軟體所面試的通知,就過去了。15號下午的機試題目不難,就三題,要求乙個半小時之內完成。第一題很簡單,但是被我做麻煩了。第一題的大概意思就是輸入...

中科院計算所Linux命令上網解決方案

最近,所裡對計費系統進行公升級,系統由原來的億郵系統公升級為srun系統,linux客戶端由原來的命令列方式改為gtk圖形介面,這可苦了我們這些ssh登陸的使用者,最後沒辦法,由於客戶端不開源,只能通過http post方式進行登陸。原理比較簡單,通過curl命令,模擬瀏覽器登陸過程,通過wires...

2018中科院計算所夏令營

中科院計算所的夏令營結束不久,特此記錄一下這段經歷,希望能對後面的小夥伴們有所幫助。計算所的夏令營時間是7月15 20號,15號主要是報道,會給乙個資料袋,裡面是這幾天的餐券和日程安排。16號主要是聽一些講座,就幾個老師講一下自己實驗室做的事情等,但當天基本所有實驗室都會放置一些展板在外面,這是乙個...