ACM自己之前寒假的基礎總結

2022-08-21 05:33:11 字數 3064 閱讀 1071

1、const double pi = acos(-1.0);

acos:反余弦函式,需要#include函式庫,acos(-1.0)的意思就是求π的值

2、演算法競賽中,不要讓程式」按任意鍵退出」(例如,呼叫system(「pause」))

3、演算法競賽中不要用標頭檔案#include,包括getch(),clrscr()

5、floor(x),floor函式,功能是「向下取整」,即取不大於x的最大整數

在經過大量計算後,由於誤差影響,整數1變成了0.99999,floor的結果會是0而不是1.為了減小誤差的影響,一般改成四捨五入,即floor(x+0.5)。

6、for(int x = 1; ; x++)

continue是指跳回for迴圈的開始

break是指直接跳出迴圈。

7、factorial:階乘,以後弄階乘可以設這個

8、clock函式(#include)

可以使用公式clock()/clocks_per_sec來計算乙個程序自身的執行時間

,之後得到的值以「秒」為單位。

9、在window下,輸入完畢後先按enter鍵,再按ctrl+z鍵,最後在按下enter鍵,即可結束輸入。

在linux下,輸入完畢後按ctrl+d鍵即可結束輸入。

10、使用檔案最簡單的方法是使用輸入輸出重定向,只需在main函式的入口處加入以下兩條語句:

freopen(「input.txt」,」r」,stdin);

freopen(「output.txt」,」w」,stdout);

上述語句將使得scanf從檔案input.txt讀入,printf寫入檔案output.txt

11、while(scanf(「%d」,&n)==1 && n)

==1:表示判斷輸入的是否為整形數值,如果不是整形,則此條件不成立(例如輸入字母a,則返回值為eof即不為1)

&&n:表示要求n為非零的數值

整句話的意思就是,輸入非零的整形數值時進入迴圈

12、當巢狀的兩個**塊中有同名變數時,內層的變數會遮蔽外層變數,有時會引起十分隱蔽的錯誤。

13、在演算法競賽中,如果不允許使用重定向方式讀寫資料,應使用fopen和fscanf/fprintf進行輸入輸出

14、memcpy函式要包含標頭檔案string.h

從陣列a中複製k個元素到陣列b:memcpy(b,a,sizeof(int)*k)

如果陣列a和b都是浮點型,寫成 memcpy(b,a,sizeof(double)*k)

如果要講陣列a全部複製到陣列b中,可以寫得簡單一些:memcpy(b,a,sizeof(a))

15、memset(a,9,sizeof(a))的作用是把陣列a清零,它也在string.h定義

16、輸出小技巧:為了避免輸出多餘空格,設定了乙個標誌變數first,可以表示當前要輸出的變數是否為第乙個

if(a[i])

if(a);如果a為真就繼續,這裡的真包括非0數字和字元,

if(!a);就是如果a為假就繼續,這個和最後乙個等價

if(a!=0);這個就是如果a不等於0

if(a==0) 如果a等於0

18、scanf(「%s」,s),它會讀入乙個不含空格、tab和回車符的字串,存入字元陣列s,不要在s的前面加上&符號。如果是字串陣列char s[maxn][maxl],可以用scanf(「%s」,s[i])讀取第i個字串,需要注意,scanf(「%s」,s)遇到空白字元會停下來。

19、strlen():統計字串長度,不過記得最後有乙個』\0』也會被統計!

20、getchar()吃掉空格和回車

21、c語言中的數學函式可以定義成「返回型別 函式名(引數列表)」,其中函式體的最後一句應該是「return 表示式;」

double dist( double x1, double y1, double x2, double y2)

22、hypot:math庫,計算三角形的斜邊長    hypot(a,b);

23、swap(a,b)  交換a,b    可以自己定義函式

void swap(int a,int b)

25、while(scanf(「%d%d」,&a,&b) == 2) printf(「%d\n」,a+b);

如果a和b都被成功讀入,那麼scanf的

返回值就是2

如果只有a被成功讀入,

返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為

eof26、

c++中iostream提供了輸入輸出流,algorithm提供了一些常用的演算法

27、c++中提供了乙個新的string型別,用來替代c語言中的字元陣列。string型別往往是更好的選擇,c++中的cin/count可以直接讀寫string型別。

以上是在小白書學習的時候自己學習的一些知識點,在實際做題中,也有一些長進,可看下面這些點

1、使用sort函式的時候,假設陣列是a[1000],裡面有n個數,sort都是這麼用的

sort(a,a+n),不過這個有個侷限性,就是所有排序好的內容都是從小到大,我們可以加乙個cmp解決這個問題

在int main()前面構造乙個函式,int cmp

int cmp(int a,int b)

sort(a,a+n)改成sort(a,a+n,cmp)

這個在實際做題目的時候比較常用

2、輸入輸出二維字元陣列

由於gets和puts我尚未完全掌握,因此我這裡用scanf和printf來寫

char w[100][50];

scanf("%s",w[i]);

printf("%s",w[i]);

scanf後面沒有&,二維陣列後面那個不要寫出來

3、strlen在字元的題目裡面會經常用到用來判斷字元的長度

4、極大的數字存入陣列,因為有些題目會給出位數很大的數字,我們可以先定義乙個(char)字元陣列,將其作為字元存入字元陣列中,之後再定義乙個int 整數陣列,將其-』0』存入整數陣列中

假設存入的字元陣列是a[ ],整數陣列是b[ ],那麼我們可以用

for(int j=0;j

a[j]=b[j]-'0';

將其轉換

ACM 之前的一些總結

對於之前的一些題目的總結。編譯的時候加上 ddebug選項就可以控制freopen c include include include int main 使用const好處在於,可以確定變數的型別,而不是單純的一段 該程式是乙個死迴圈 i不可能直接 10,最好的方法是fabs i 10 1e 5 c...

ACM大二寒假總結 開學計畫

時間總是轉瞬即逝,轉眼間大二寒假就過去了,現在已經到了大二下學期,然而從大一加入acm到現在在acm方面還沒有取得任何令自己滿意的成就,也許是自己努力的程度還不夠或者有時甚至覺得自己少那麼一分天賦,但我並不甘心,正是為此,我仍堅持默默地努力著,我認為不到最後決不能放棄。下面就對這個寒假自己acm的訓...

寒假總結 HTML入門基礎

hn align 對齊方式 標題文字 align屬性值 left 標題文字居左對齊 right 標題文字具有對其 center 標題文字居中對齊 p align 對齊方式 段落文字 align屬性值 left 段落左對齊 right 段落右對齊 center 段落居中對齊 hr 屬性 屬性值 hr ...