算法竞赛入门经典——1
想著要學(xué)算法已經(jīng)很長時間了,但一直都是有問題自己想,很少受“正規(guī)軍”編排,網(wǎng)上關(guān)于算法的書倒是不少,其一必推《算法導(dǎo)論》,還有一本《算法競賽入門經(jīng)典》,作者劉汝佳,好了,步入正題,兩天時間從第一章到第三章結(jié)尾,算是對C又進(jìn)行了一遍復(fù)習(xí),說一下新得
?
%3d %-3d %03d
知道它們的區(qū)別嗎,在調(diào)用printf時候,第一個表示輸出格式三位,不足三位左補(bǔ)空格,當(dāng)然如果超過三位則正常輸出應(yīng)該的位數(shù),第二個和第一個區(qū)別則是右補(bǔ),其他都一樣,第三個和第一個也一樣只是這一次補(bǔ)的是代替空格補(bǔ)0了
?
printf需要輸出特殊字符\n,%d怎么辦,看下面
printf("\\n"); printf("%%d");下面介紹一些函數(shù)
計算程序運行時間的
clock()/CLOCKS_PER_SEC這個在time.h 里面,其中CLOCKS_PER_SEC與機(jī)器有關(guān),必須要除,不然得到的值沒有實際意義
輸入輸出重定向
在使用時候,txt文件和C文件放在一起
?
freopen("1.txt","r",stdin); freopen("1.txt","w",stdout);?
這兩個主要是輸入輸出大量數(shù)據(jù),鍵入不方便時候使用在stdio.h里面
兩個數(shù)組之間是不能直接賦值,有函數(shù)memcpy();memset();用法如下:
char a[4]={0,1,2,3},b[4]={4,5,6,7}; memset(a,19,2); printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);這樣輸出數(shù)組a的值為19,19,2,3;看出來了吧,memset是給數(shù)組重新賦值的,三個參數(shù)分別是對象,數(shù)值,個數(shù)和memset類似,memcpy則是復(fù)制一個數(shù)組里面k個元素給另一個,看下面的例子
char a[4]={0,1,2,3},b[4]={4,5,6,7}; memcpy(a,b,2); printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);這樣數(shù)組a值為4,5,2,3:當(dāng)然要是數(shù)組很大又想全部賦值就直接傳入第三個參數(shù)sizeof(b)就OK了,還有一個適應(yīng)于字符串賦值的函數(shù)strcpy(a,b),意思將b中字符串給a,這三個在string.h里面
最后提一下C中“”和‘’的區(qū)別,簡單來說大小,“”用在字符串,‘’用在字符.比如下面這一段
if(c=='A'){printf("%c",'H'); if(c=='A'){printf("%s","H");以上是我覺得新人可能會需要的,其實算法就是解決問題的辦法,更關(guān)鍵的是能夠熟練掌握C,自然可以得心應(yīng)手處理復(fù)雜問題
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的算法竞赛入门经典——1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPI 协议学习
- 下一篇: Pycharm常用高效技巧总结