1.算數(shù)函數(shù)
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括尼瀘西網(wǎng)站建設(shè)、尼瀘西網(wǎng)站制作、尼瀘西網(wǎng)頁制作以及尼瀘西網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,尼瀘西網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到尼瀘西省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1.1產(chǎn)生隨機(jī)數(shù)
rand()
1.2取絕對(duì)值
fabs()
1.3取復(fù)數(shù)的絕對(duì)值
cabs(struct complex i)
1.4浮點(diǎn)數(shù)的絕對(duì)值
fabs()/fabsf()/fabsl()
1.5取余
fmod(double, double)
1.6向上取整
ceil()/ceilf()/ceill()
1.7向下取整
floor()/floorf()/floorl()
1.8求最大值
fmax()/fmaxf()/fmaxl()
1.9求最小值
fmin()/fminf()/fminl()
1.10四舍五入
round()/roundf()/roundl()
2.指數(shù)與對(duì)數(shù)
2.1求 n 的 m 次方的值
pow(n, m)/powf(n, m)/powl(n, m)
2.2求 e 的 x 次方
exp(x)/expf(x)/expl(x)
2.3以 e 為底的對(duì)數(shù)值
log()/logf()/logl()
2.4以10為底的對(duì)數(shù)
log10()/log10f()/log10l()
2.5開平方(根號(hào))
sqrt()
3.三角函數(shù)
3.1正弦值
sin()/sinf()/sinl()
3.2余弦值
cons()/cosf()/cosl()
3.3正切值
tan()/tanf()/tanl()
3.4雙曲線正弦值
sinh()/sinhf()/sinhl()
3.5雙曲線余弦值
cosh()/coshf()/coshl()
3.4雙曲線正切值
tanh()/tanhf()/tanhl()
4.反三角函數(shù)
4.1反正弦值
asin()/asinf()/asinl()
4.2反余弦值
acos()/acosf()/acosl()
4.3反正切值
atan()/atanf()/atanl()
4.4反雙曲線正弦值
asinh()/asinhf()/asinhl()
4.5反雙曲線余弦值
acosh()/acoshf()/acoshl()
4.6反雙曲線正切值
atanh()/atanhf()/atanhl()
我剛?cè)腴T的時(shí)候也是這樣想的,哈哈。
但是隨著你學(xué)的深入,你會(huì)知道指針才是c語言的靈魂。
用函數(shù)交換變量,如果不用指針的話,是無法進(jìn)行的,因?yàn)楹瘮?shù)只能改變形參,而對(duì)于主函數(shù)的實(shí)參,是沒有交換作用的(這里得好好想想,初學(xué)可能會(huì)糊涂的點(diǎn)就在這)
指針的作用很多的,下面是我上課做的一些筆記,你可以看看。
有什么問題再追問我哦~
指針的重要性
表示一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
快速的傳遞數(shù)據(jù),減少內(nèi)存的耗用
使函數(shù)返回一個(gè)以上的值
能直接訪問硬件
能夠方便地處理字符串
是理解面向?qū)ο笳Z言中引用的基礎(chǔ)
總結(jié):指針是c語言的靈魂
因?yàn)槟撤N原因,本人共考過2次筆試,3次上機(jī)。其中筆試在70左右,3次上機(jī)均為滿分,
看著大批的同學(xué)在為三級(jí)發(fā)愁不知道如何準(zhǔn)備和應(yīng)考。我想我應(yīng)該把經(jīng)驗(yàn)和學(xué)習(xí)的方法寫下
來,這些方法保證你能過三級(jí)。但是不保證你能獲得高分并學(xué)到知識(shí),所以請(qǐng)各位計(jì)算機(jī)系
與愛好電腦的高手或自認(rèn)為是高手的同志們就此打住。OK!
以網(wǎng)絡(luò)技術(shù)為例(其他三門的方法相似),我把方法總結(jié)為:細(xì)看書,做筆記,多復(fù)習(xí)。
第一階段:看網(wǎng)絡(luò)技術(shù)教材,詳細(xì)地做筆記(20天).
第一邊看書你要看得特別仔細(xì),把所有你認(rèn)為重要的地方全抄到筆記本上,包括重要的
表格和插圖。第一次看不懂的地方可以跳過去等過兩天再回頭看一遍。每天看新的知識(shí)之前
都將前兩天看的再復(fù)習(xí)一遍,強(qiáng)化記憶。
我把全書的重要程度劃分了一下:第一,七,八章 了解(看看做做筆記就行了);
第二,四章 理解(看懂主要的知識(shí)點(diǎn));第三,五,六章 掌握(看懂所有的知識(shí)點(diǎn));
其中又以以下章節(jié)為重點(diǎn):2.2 進(jìn)程 2.3 存儲(chǔ)管理 2.4 文件管理 2.5 設(shè)備管理
(我當(dāng)時(shí)這一節(jié)的題都掛了) 3.5 雙絞線 VS 同軸電纜 3.6 OSI VS TCP/IP 4.3 以太網(wǎng)
4.5 組網(wǎng)技術(shù) 4.8 網(wǎng)絡(luò)互連 5.3 IP協(xié)議 6.4 加密技術(shù) 其中有些內(nèi)容必須理解并掌握,
要是不理解,背也要背下來。如:OSI協(xié)議和TCP/IP協(xié)議的各層的名字,各種傳輸介質(zhì)和各種
以太網(wǎng)的參數(shù)等。
另外所有教材上沒有的內(nèi)容不用看,因?yàn)榭荚嚦龅念}沒有一道是書本之外的。
=== 要點(diǎn)一:堅(jiān)持就是勝利,每天堅(jiān)持看2個(gè)小時(shí),至少能看15頁。
=== 要點(diǎn)二:該抄就抄,好記性不如壞筆頭。
=== 要點(diǎn)三:注意課后作業(yè)題,那可能就是原題。
這一階段完成后,應(yīng)該能夠理解大部分的知識(shí)點(diǎn)。還要能夠很快的在書中找到某個(gè)知識(shí)
點(diǎn)的位置。
第二階段:復(fù)習(xí)重點(diǎn)章節(jié)(5天)
這一次復(fù)習(xí)的重點(diǎn)在那些需要理解和掌握的內(nèi)容上,如果你看懂了,合上書想一遍,看
不懂就多看兩遍,有些重點(diǎn)一定要記住。而且要把筆記本大聲地讀上兩遍,達(dá)到更加熟練。
=== 要點(diǎn)一:看懂不一定會(huì)記住,一定要在腦海中形成印象,合上書能寫下來。
=== 要點(diǎn)二:名詞術(shù)語要注意。
=== 要點(diǎn)三:縮略語。凡是在書上出現(xiàn)過兩遍的,一定要記下中英文解釋。
例如:CDMA/CD,MFLOPS等。
第三階段:復(fù)習(xí)不重要的章節(jié)和作題(5天)
有人也許要問,既然不重要還復(fù)習(xí)它干什么。錯(cuò)!出題人不能用重點(diǎn)湊成一百分要適當(dāng)?shù)?/p>
加點(diǎn)其他內(nèi)容。于是只有在這些不重要的章節(jié)里面出了,這些題大概占20分左右。得分的方法
是將所有不太重要的章節(jié)再看一遍,越是你認(rèn)為不可能出的,越要把它抄下來,記一記。而且
要特別注意數(shù)字,如ATM的傳輸速率,單模光纖所使用的光的波長(zhǎng)等。(上次最嘔吐的的一道
題是,信號(hào)從發(fā)送站經(jīng)過衛(wèi)星到接收站的傳輸延遲的典型值是多少?我按照同步地球衛(wèi)星到地
球的距離,光的傳輸速度,算到百毫秒的量級(jí),但是算不出具體的值,于是猜了一個(gè)250ms。
答案居然是540ms。暈倒~!)
還有就是模擬題的問題,我認(rèn)為現(xiàn)在市面上的模擬題都太差了,考的全沒有,不考的全有
了,說實(shí)話還不如我出的呢。所以題不用多做,只要把書看好就行,最后幾天可以做幾套,熟
悉一下題型,掌握一下時(shí)間就夠了,多做全是浪費(fèi)。
以上方法我一個(gè)同學(xué)上次照著我說的做了,結(jié)果筆試考分比我還高。所以不管你聰明不聰
明,只要你照我說的做了,一定能通過。
一句話:要是不過你拿我是問。
上機(jī)部分現(xiàn)在只有一到c語言編程題,非常簡(jiǎn)單。但我認(rèn)為最重要的是能夠編譯程序和調(diào)試
程序,也就是說,一道題你能在紙上寫下來還不夠,一定要能夠在機(jī)器上運(yùn)行出結(jié)果才行,因?yàn)?/p>
編譯系統(tǒng)及機(jī)器的不同,有的對(duì)的程序也可能產(chǎn)生大量的錯(cuò)誤。只要你能把錯(cuò)誤找出來就差不多
能過了。
因此我把方法總結(jié)為:多思考,多上機(jī),捉蟲子。(以譚浩強(qiáng)的《c語言設(shè)計(jì)》第二版為例)
第一階段:看書,做筆記。(15天)
有人說那本書那么厚,15天能看完嗎?錯(cuò)!誰說讓你們看完了,你要是只是想過三級(jí)。只用
看前140頁就足夠了。也就是,第一章,了解,第二,三章理解,第五,六,七章掌握,第八,
第十章隨便看一下就行了。因?yàn)閏上機(jī)只要求你填一個(gè)函數(shù),所以函數(shù)那一章不用看太仔細(xì),只
要知道函數(shù)是干什么用的,它們之間是如何調(diào)用的就行了。至于指針,所有的考題全都能用數(shù)組
做出來,用指針只不過是簡(jiǎn)單一點(diǎn),容易出錯(cuò)一點(diǎn)而已,我是強(qiáng)烈建議不用指針。第九章和第十
一章以后一概不用看。
=== 要點(diǎn)一:勤記,把所有重要的東西都記在筆記本上。如轉(zhuǎn)義字符的定義等。
=== 要點(diǎn)二:每天上機(jī)調(diào)試兩個(gè)程序(可以是例題或作業(yè)題)
=== 要點(diǎn)三:堅(jiān)持,再堅(jiān)持。
第二階段:做課后作業(yè)題并上機(jī)調(diào)試。(10天)
現(xiàn)在書你已看完,練習(xí)題也可能做出了一些?,F(xiàn)在就是要把前幾章特別是五六七三章的課后
題一定要自己思考一下,做出來后再上機(jī)調(diào)試,是在做不出來,就看看答案,看懂后,再在機(jī)器
上調(diào)試一下也行。
重要例題:例 4.10 4.12 5.4 5.5 5.6 5.7 5.8 6.6 6.8 6.10 7.2 7.2 7.8 7.9
重要習(xí)題:4.5 4.9 5.5 5.7 5.8 6.1~6.10 7.1~7.14
=== 要點(diǎn)一:做題時(shí)使用N-S流程圖。
=== 要點(diǎn)二:每道題不管多么簡(jiǎn)單,一定要調(diào)試直到正確為止。如習(xí)題2.4(2)我有幾個(gè)同
學(xué)都是能編出來,但是怎么都運(yùn)行不正確。
=== 要點(diǎn)三:每天上機(jī)作五道題以上,最好在TC2.0環(huán)境下。
第三階段:繼續(xù)調(diào)試重要程序,看一本書(5天)
繼續(xù)調(diào)試程序直到熟練,然后看一本書,書名我先不說,可能許多同學(xué)都知道。但我不贊成
看這本書,而且我勸你到最后幾天再看,挑出一部分典型的題看一下,自己做做,看是否正確,
熟悉一下題型,不要完全依賴那本書。那樣可能因?yàn)橐稽c(diǎn)小錯(cuò)誤你找不出來就掛了。我們班的女
生們第一次因?yàn)檫@個(gè)原因掛的可不是少數(shù)。
還是那句話:要是你上機(jī)不過找我是問。
········回顧過去的大學(xué)生活,計(jì)算機(jī)等級(jí)考試最令人難忘。筆者斗膽在這里賣弄一下過去兩年(準(zhǔn)確的說是一年半)里通過全國(guó)計(jì)算機(jī)等級(jí)考試二到四級(jí)的經(jīng)歷,以自己的感受泡制一份全國(guó)計(jì)算機(jī)等級(jí)考試全攻略,希望對(duì)后來的朋友們尤其是剛剛邁入大學(xué)校門的師弟師妹們有所幫助。
考證路上,有兩點(diǎn)需要特別注意。一是一次只能報(bào)考一個(gè)等級(jí)(包括筆試和上機(jī))的考試。一個(gè)級(jí)別中有不同類別,考生只能選擇其中一類。另外,考試單科合格者,成績(jī)只保留到下一個(gè)考試周期。所以不想找麻煩的話就要認(rèn)真準(zhǔn)備,爭(zhēng)取一次OK,否則會(huì)對(duì)信心造成打擊。
一級(jí)考試
對(duì)于一級(jí)考試,其實(shí)沒什么好說的,大部分人不必報(bào)考這一級(jí)別,既浪費(fèi)金錢又浪費(fèi)生命。因而筆者強(qiáng)烈建議不要考這一級(jí)別。如果你不得不參加這一級(jí)別考試的話,筆者在表示同情之余建議你在熟悉常用軟件之余研究一下WPS,在以后的全國(guó)計(jì)算機(jī)等級(jí)考試(一級(jí))中 ,WPS將成為一門單獨(dú)的考試科目。
二級(jí)考試
二級(jí)考試是大部分人都必須參加的。二級(jí)考試的內(nèi)容包括基礎(chǔ)知識(shí)和程序設(shè)計(jì)兩大部分。 基礎(chǔ)知識(shí)主要包括電腦基本知識(shí),DOS基本知識(shí)和基本操作,WINDOWS的基本概念與操作。關(guān)于這部分知識(shí)有點(diǎn)水準(zhǔn)的輔導(dǎo)書就會(huì)有詳細(xì)的介紹,只要把書好好看看就沒什么問題。DOS中的文件、目錄、路徑的概念及使用是必考部分,要留意。(相關(guān)閱讀:如何應(yīng)付新大綱二級(jí)考試的公共基礎(chǔ)知識(shí))
二級(jí)考試的重中之重是程序部分。要對(duì)語言的基礎(chǔ)知識(shí)熟練掌握,尤其要留意基礎(chǔ)概念和基本方法(選擇法、冒泡法等),要能看懂書上給的程序。一般來說,如果能獨(dú)立做出大部分課后題就一切OK了。對(duì)語言的工夫應(yīng)該下在平時(shí),多想,多練,多上機(jī)。自己考慮作一些小程序會(huì)有很大幫助的(別人崇敬的目光就會(huì)讓你覺得很有價(jià)值)。二級(jí)DOS類考試的上機(jī)考試包括三個(gè)部分的內(nèi)容,即DOS操作題,程序修改題和程序編制題。如果你的C語言有一定水準(zhǔn)的話,較難的部分就是程序修改題了,畢竟了解陌生人的思路是一件比較難的事。因此平時(shí)要多讀一些程序,自己編程時(shí)注意要盡量符合規(guī)范,否則很容易吃虧。當(dāng)然多上機(jī)練習(xí)是取得好成績(jī)的不二法門。關(guān)于輔導(dǎo)書大連理工出版社和南開出版社的都相當(dāng)不錯(cuò)。
三級(jí)考試
三級(jí)是一個(gè)比較麻煩的等級(jí)。它共有四個(gè)類別,可以大致分兩種。 三級(jí)PC上機(jī)是考匯編程序,其他三個(gè)類別考C程序。如果不是對(duì)自己特別有信心的話一般不要報(bào)考PC技術(shù)。畢竟學(xué)習(xí)匯編語言也是不小的負(fù)擔(dān) ,而且對(duì)報(bào)考四級(jí)沒什么幫助(四級(jí)不考匯編?。?。對(duì)于其他三種主要看自己的興趣了。相對(duì)來說數(shù)據(jù)庫要難一點(diǎn)(對(duì)數(shù)學(xué)系的除外)。三級(jí)的四個(gè)類別各有側(cè)重,比較麻煩的是對(duì)于四級(jí)來說都太片面了,所以幫助不大。因此基礎(chǔ)比較好的,直考四級(jí)也是可以考慮的。(相關(guān)閱讀:通過計(jì)算機(jī)等級(jí)考試三級(jí)網(wǎng)絡(luò)的經(jīng)驗(yàn))
筆試部分是三級(jí)的難點(diǎn),所要記憶的內(nèi)容比二級(jí)增加很多。要注意對(duì)基本理論和基礎(chǔ)概念的掌握,有利于知識(shí)網(wǎng)絡(luò)的形成,減少記憶負(fù)擔(dān)。
由于三級(jí)剛剛改革不久,各個(gè)出版社出版的輔導(dǎo)書都很難貼近考試。這種情況下多看書就成了最好的選擇。從近兩次考試的情況看,出題也很接近課本(尤其是網(wǎng)絡(luò)技術(shù),有部分教材原話)。三級(jí)上機(jī)考試難度比二級(jí)提高并不大,較復(fù)雜的部分如文件讀寫,函數(shù)調(diào)用等通常題目已給出,因而所考的依然是比較基本和典型的算法。
四級(jí)考試
四級(jí)是最后一級(jí),也是知識(shí)最復(fù)雜的一級(jí)。報(bào)考四級(jí)是需要一點(diǎn)信心和勇氣的,你報(bào)考四級(jí)后身邊幾乎不可避免的出現(xiàn)一片質(zhì)疑聲(當(dāng)我報(bào)四級(jí)時(shí)老師竟然告訴我本校從來沒人通過),這時(shí)候一定要相信自己。(相關(guān)閱讀:幫你全面了解全國(guó)計(jì)算級(jí)等級(jí)考試-四級(jí))
四級(jí)通過的人數(shù)的確是非常少(相對(duì)三級(jí)),但要看到四級(jí)報(bào)考人數(shù)也是最少的。四級(jí)知識(shí)量是巨大的(看看那厚厚的教材就知道了),難點(diǎn)主要是離散數(shù)學(xué)和計(jì)算機(jī)英語。對(duì)于離散數(shù)學(xué),如果有機(jī)會(huì)旁聽一下計(jì)算機(jī)專業(yè)的核心課程《離散數(shù)學(xué)》會(huì)很有幫助的。要記住一定要作一定數(shù)量的習(xí)題!僅僅通過識(shí)記是無法提高水平的。
計(jì)算機(jī)英語沒有想象中的困難,常用的單詞只有幾百個(gè),只要把近5、6年的試題中英語題過一遍就差不多了。手頭最好有一本專業(yè)詞典,大部分單詞在文曲星上查不到 。相對(duì)來說英語題比較簡(jiǎn)單,只要單詞認(rèn)識(shí)就OK了。
筆試中比較新鮮的是論述題。建議買一本歷年試題及參考答案(每年國(guó)家考試中心都出版),仔細(xì)研究一下,掌握答題方法。比較幸運(yùn)的是論述題通常有四道,可以選擇自己最有把握的。由于四級(jí)考試已經(jīng)舉行多年,各出版社出的輔導(dǎo)書都比較扣題。筆者強(qiáng)烈推薦大連理工出版社出版的《全國(guó)計(jì)算機(jī)等級(jí)考試題典(四級(jí))》。這本書貼近考試,解答詳盡,對(duì)順利過級(jí)會(huì)有很大幫助!一定要做歷年試題(5年以內(nèi)),確實(shí)是有一定復(fù)現(xiàn)率的!
四級(jí)上機(jī)考試和三級(jí)差不多,只有一道編程題,注意別緊張,一定要存盤,否則會(huì)變?yōu)?分。當(dāng)時(shí)跟我一個(gè)考場(chǎng)的同學(xué)就有人因?yàn)榛艁y忘記存盤,造成下午的考試沒有通過。(相關(guān)閱讀:全國(guó)計(jì)算機(jī)四級(jí)考試經(jīng)驗(yàn)談)
結(jié)束語:最后,不管面對(duì)任何考試都需要對(duì)自己要信心,相信即使只有一個(gè)人通過,那個(gè)人也一定是自己!這時(shí)你就成功一半了。預(yù)祝每一位考生能夠在9月的考試中取得理想的成績(jī)!
計(jì)算機(jī)考試備忘錄
首先是報(bào)考時(shí)間問題。雖說大學(xué)有四年,但是如果你要考研究生的話(大部分人都會(huì)考的),從大三下學(xué)期就該開始準(zhǔn)備了,所以留給等級(jí)考試的時(shí)間其實(shí)只有兩年半而已(四次機(jī)會(huì))。因此,如果你是大一的新生,應(yīng)該考慮報(bào)考明年四月的考試。因?yàn)槿珖?guó)計(jì)算機(jī)等級(jí)考試是面對(duì)非專業(yè)人士的,所以難度并不太高(當(dāng)然也不很容易,否則聽我嘮叨什么)。如果你的學(xué)校沒有一級(jí)必考之類的變態(tài)規(guī)定話,就應(yīng)該堅(jiān)決跳過一級(jí)從二級(jí)開考(時(shí)間寶貴,不應(yīng)該為沒意義的事浪費(fèi)半年時(shí)光)。平心而論,二級(jí)知識(shí)非?;A(chǔ),只要認(rèn)真準(zhǔn)備(你有整整一個(gè)寒假的時(shí)間準(zhǔn)備)過關(guān)是很容易的(即使你的計(jì)算機(jī)基礎(chǔ)很差)。
雖然三級(jí)證書一樣可以拿到學(xué)位證,并且越級(jí)考試也是被許可的,但筆者不提倡直接報(bào)考三級(jí)(即使你的計(jì)算機(jī)基礎(chǔ)很好)。直接過三級(jí)雖然是一件很酷的事,但這要擔(dān)相當(dāng)?shù)娘L(fēng)險(xiǎn),一旦失誤(這是很可能的事,畢竟三級(jí)是有一定難度的),你就不得不與剛通過二級(jí)的同學(xué)一起考試。除非你的神經(jīng)有下水管道那么粗,不然會(huì)有很大壓力,而且對(duì)信心的打擊不容忽視。如果你對(duì)自己的計(jì)算機(jī)水平很有自信的話,二級(jí)證書到手后跳過三級(jí)直考四級(jí)倒是可以考慮的,那樣風(fēng)險(xiǎn)和效率比較均衡。
另一個(gè)比較重要的問題是計(jì)算機(jī)語言的選擇問題。筆者強(qiáng)烈推薦學(xué)習(xí)C語言。C語言不但本身邏輯清楚,實(shí)用性強(qiáng)而且擴(kuò)展性很強(qiáng),方便以后學(xué)習(xí)C++,C#等語言。如果你有獅子一樣的雄心,更應(yīng)該選擇C語言,要注意到四級(jí)和高級(jí)程序員考試都要求C語言!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@計(jì)算機(jī)三級(jí)考試馬上就要到了,然而很多朋友對(duì)計(jì)算機(jī)上機(jī)考試卻仍舊十分茫然,
參加這次考試的人有很大一部分是上次機(jī)試沒有通過的朋友,甚至還有一些考了兩次機(jī)試都沒有通過的……
這其中不乏一些C語言學(xué)的很不錯(cuò)的高手,大部分人到現(xiàn)在都不明白為什么自己親手編的程序卻是0分……
究竟是什么原因呢?不就是那100道題目嗎?翻來覆去的看也沒有發(fā)現(xiàn)自己的程序有什么錯(cuò)誤啊,看資料,用模擬盤模擬也是滿分啊,可為什么正式考試就是0分呢?
于是很多人甚至把通過上機(jī)考試當(dāng)成一件*運(yùn)氣的事了,甚至有的朋友對(duì)上機(jī)考試感到十分恐懼
然而這其中真正的原因……
大家不妨和我一起看一下考試中心命題組的正確答案~
順便提醒一下大家在考試的時(shí)候要注意的問題,希望對(duì)大家有所幫助。
第一條:審題要仔細(xì)!正式考試的時(shí)候會(huì)遇到很多面熟的題目,這些題目有的似乎和
平常資料中看到的一樣,然而,千萬不要見到面熟的題目而沾沾自喜,因?yàn)橛泻芏嗟?/p>
“陷阱”會(huì)使你審題的時(shí)候就出錯(cuò)~!
我們看一道所有人都做過的的 “數(shù)字題目” 。
考試中心命題組第23題:
已知在文件in.dat中存有N個(gè)實(shí)數(shù),(N200),函數(shù)readdat()是讀取這N個(gè)實(shí)數(shù)并存入數(shù)組xx中。
請(qǐng)編制函數(shù)CalValue(),其功能要求:
1、求出這N個(gè)實(shí)數(shù)的整數(shù)部分平均值aver;
2、分別求出這N個(gè)實(shí)數(shù)中其整數(shù)部分值小于平均值ever的數(shù)的整數(shù)部分值之和sumint與小數(shù)部分之和sumdec
最后調(diào)用函數(shù)WriteDat()把所求的結(jié)果輸出到文件OUT8.dat中。
這一題看起來很眼熟,然而你仔細(xì)看~!
1、aver是整數(shù)部分的平均值~!不是普通的哦!
2、整數(shù)部分值小于平均值ever的數(shù)的整數(shù)部分值之和sumint與小數(shù)部分之和sumdec?。?/p>
呼~,原來這么復(fù)雜~!稍不留心就錯(cuò)了~,結(jié)果就想當(dāng)然的……0分
考試中心命題組第4題
函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章存入到字符
串?dāng)?shù)組xx中;請(qǐng)編制函數(shù)ComWord()分別計(jì)算出10個(gè)不區(qū)分大小寫
的英文單詞的首字母(b,c,f,s,n,r,u,e,o,p)的頻數(shù)并依次存入
整型數(shù)組yy[0]至yy[9]中,最后調(diào)用函數(shù)WriteDat( )把結(jié)果yy
輸出到文件PS1.OUT中。
這題也很眼熟,然而你仔細(xì)看~!
英文單詞的首字母,呵呵,不是平常的字母的個(gè)數(shù),是作為單詞的首字母的個(gè)數(shù)啊,暈~
上面兩道題目并沒有在其他資料上見過,考試的時(shí)候也不一定會(huì)出,
這里僅僅是給大家提個(gè)醒兒,正式考試一定要仔細(xì)審題,嚴(yán)格按照題目的要求去做,
不要受以前做過的題目的影響。
第二條:一定要考慮除零、溢出、類型轉(zhuǎn)換、精度等細(xì)節(jié)問題~!!
雖然我們?cè)谄綍r(shí)學(xué)C語言的時(shí)候老師都提醒過,可是真正到了編程序的時(shí)候,
卻沒有幾個(gè)人會(huì)考慮。這些細(xì)節(jié)問題似乎并不直接影響題目的輸出結(jié)果,
然而,因?yàn)橐绯龊皖愋娃D(zhuǎn)換錯(cuò)誤而造成考試得不到滿分的可是大有人在啊!
我們看下面一道最害人的題目~!!,很多朋友考了這道題目都沒有過。
下面來看看你為什么是0分~!
考試中心命題組64題:
請(qǐng)編制函數(shù)encryptChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,
仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS8.DAT中。
替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),
如果原字符小于等于32或大于130,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。
這道題目所有的人都做過,但幾乎就沒有人做對(duì),包括南開無憂在內(nèi)~!
原因就在于這一句!
無憂:int f; f=(xx[i][k]*11)%256;
南開:char *pf; *pf=*pf*11%256;
表面看來,好象兩個(gè)都對(duì),
請(qǐng)你在TC下運(yùn)行一下下面的代碼,看一下結(jié)果你就知道了是怎么回事了……:
main()
{
char nk='E',*nkp,wuyou='E';
int wy;
nkp=nk;
*nkp=*nkp*11%256;
wy=wuyou*11%256;
printf("%c %c %c %c\n",nk,*nkp,wuyou,wy);
printf("%d %d %d %d\n",nk,*nkp,wuyou,wy);
}
看到結(jié)果了么?是不是很吃驚啊?
≈ ≈ E ≈
-9 -9 69 247
大家看到了,南開的結(jié)果是負(fù)數(shù),連原來的變量nk都變成了負(fù)數(shù),這顯然錯(cuò)了。
無憂的聰明一點(diǎn),知道int比char大,定義了個(gè)int,對(duì)了。
南開錯(cuò)誤原因就是在TC2.0中char型變量只有一個(gè)字節(jié),根本容納不下'E'*11,
所以產(chǎn)生了溢出,上次考這道題目沒過的同學(xué)是不是有所啟發(fā)呢?
這里給出考試中心命題組的答案:
void encryptChar(){
int i,k,ch;
for(i=0;imaxline;i++)
for(k=0;kstrlen(xx[i]);k++){
ch=xx[i][k];
ch=(ch*11)%256;
if(!(ch=32||ch=130))xx[i][k]=ch;
}
}
似乎一個(gè)例子不能說明什么,那就把上面的數(shù)字題目的答案給大家看看:
考試中心命題組23題答案:
int i;
long val;
float dec;
for(i=0;iN;i++){
val=(long)xx[i];
aver+=xx[i]-val;
}
aver/=(double)N;
for(i=0;iN;i++){
val=(long)xx[i];
dec=xx[i]-val;
if(decaver){
sumint+=val;
sumdec+=(xx[i]-val);
}
}
看到了吧,首先,val的定義,不是我們習(xí)慣的int,而是能容納更大數(shù)的 long ,
這樣在求和的時(shí)候就不會(huì)溢出,無憂和南開的答案沒有吧~
再看,算aver平均值的細(xì)節(jié),不是我們平常習(xí)慣的aver/=N,更不是無憂的1.0* sum/N,
而是aver/=(double)N,所以大家在考試的時(shí)候要時(shí)刻注意你的變量類型,特別是在一些求平均值的題目中,千萬要注意,用sum/n的時(shí)候,sum的類型一定不要用整形。
第三條:不要使用快捷鍵!!很多人在使用TC的時(shí)候習(xí)慣于用F9,CTRL+F9或者其他的熱鍵,
首先F9只是編譯了,并沒有運(yùn)行程序,考試一定要運(yùn)行一下你的程序才會(huì)有輸出文件,
否則一定是0分。
熱鍵在考試的時(shí)候是很危險(xiǎn)的,因?yàn)閁CDOS的熱鍵和TC的沖突,CTRL+F9變成了全角半角轉(zhuǎn)換,
如果不小心按了,會(huì)導(dǎo)致你的程序有中文字符,編譯的時(shí)候出錯(cuò),而且很難查找排除錯(cuò)誤~!
所以建議大家在考試的時(shí)候使用ALT+紅色字母 來調(diào)出菜單進(jìn)行編譯調(diào)試等步驟,建議步驟為:
寫完代碼后用ALT+F,S存盤,然后ALT+C,M編譯,然后ALT+R,R運(yùn)行,這樣就萬無一失了。
第四條:不要加載任何輸入法
上機(jī)考試用的DOS環(huán)境內(nèi)存十分有限,如果你加載了任何一個(gè)輸入法,都有可能造成編譯程序的時(shí)候出現(xiàn)out of memory 內(nèi)存不足的情況,到那時(shí)就麻煩了。
程序只要寫的對(duì)就可以,不要畫蛇添足的加注釋,沒有人看的~!
第五條:不要提前交卷!考場(chǎng)一般使用NOVELL網(wǎng)絡(luò),有的時(shí)候存在網(wǎng)絡(luò)狀況不好而連接失敗等問題,
這時(shí),如果你已經(jīng)提前交卷的話就不太好了。另外也可以防止別人有意無意的改動(dòng)你的程序。
第六條:考試時(shí)候的一些技巧。
1、進(jìn)入TC以后如果想查看題干要求,不用退出TC,直接用F12就可以顯示出來。
2、用F12顯示題目之后可以通過CTRL+BACKSPACE把題目定在屏幕上。
3、編譯運(yùn)行之后,可以通過type out.dat或edit out.dat或tc out.dat查看輸出文件。
(千萬不要改動(dòng)!不然影響考試結(jié)果。如果不小心改動(dòng),再重新編譯運(yùn)行一次你的程序就可以了)
4、如果考試的時(shí)候不小心改動(dòng)了代碼的主函數(shù)或其他部分,可以進(jìn)入考生目錄下的warn隱藏目錄,
把里邊的備份文件復(fù)制到考生目錄。步驟:
在考生目錄下輸入cd warn
輸入copy *.c ..輸入cd ..
就可以了
5、如果調(diào)試的時(shí)候不小心死循環(huán)了,可以通過CTRL+C或CTRL+BREAK來終止,如果連按多次都沒反應(yīng),
不要慌,立即找監(jiān)考老師說明情況,可以重新啟動(dòng)機(jī)器繼續(xù)答原題,你的程序還在,時(shí)間也是繼續(xù)剛才的。
所以這也提醒大家,運(yùn)行程序之前一定要先存盤。
根據(jù)你的題目, 我重新給你寫了完整的程序,你可以參考下。
源代碼如下(在vc++ 6.0下編譯通過):
#include stdio.h
#include stdlib.h
#include string.h
#define __DEBUG_PRINT
#define MAX_STR_LEN 30
void count(char *str)
{
int number_count = 0;
int non_number_char_count = 0;
while (*str != '\0')
{
if (*str = '0' *str = '9')
{
number_count++;
}
else
{
if ( (*str 'z' || *str 'a')
(*str 'Z' || *str 'A') )
{
non_number_char_count++;
}
}
str++;
}
printf("The count of number is: %d\n", number_count);
printf("The count of non number and non charactor is: %d\n", non_number_char_count);
return;
}
int main(void)
{
int i = 1;
int str_num = 0;
char **pStr = NULL;
int tmp = 0;
printf("Pls input the string number(=100): ");
scanf("%d", str_num);
pStr = (char **)malloc(str_num * sizeof(char));
printf("pls input each string.\n");
tmp = str_num;
while (tmp--)
{
*pStr = (char *)malloc(MAX_STR_LEN * sizeof(char));
printf("string%d: \n", i++);
scanf("%s", *pStr);
pStr += MAX_STR_LEN;
}
pStr -= MAX_STR_LEN * str_num;
#ifdef __DEBUG_PRINT
i = 1;
tmp = str_num;
printf("The following are your input: \n");
while (tmp--)
{
printf("string%d: %s\n", i++, *pStr);
pStr += MAX_STR_LEN;
}
pStr -= MAX_STR_LEN * str_num;
#endif
printf("The following is the result: \n");
i = 1;
tmp = str_num;
while (tmp--)
{
printf("string%d: \n", i++);
count(*pStr);
free(*pStr);
pStr += MAX_STR_LEN;
}
free(pStr);
return 0;
}
成員表列由若干個(gè)成員組成,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。
對(duì)每個(gè)成員也必須做類型聲明。
其形式為:
類型聲明符 成員名;
例如:
注意, 最后括號(hào)外面的;分號(hào)是不可少的 。
結(jié)構(gòu)定義之后,才可以進(jìn)行變量聲明。
凡聲明為結(jié)構(gòu) stu 的變量都由上述4個(gè)成員組成。
由此可見,結(jié)構(gòu)是一種復(fù)雜的數(shù)據(jù)類型,是數(shù)目固定,類型不同的若干有序變量的集合。
聲明結(jié)構(gòu)變量 有以下三種方法。
使用上面定義的stu為例:
如:
也可以用宏定義使一個(gè)符號(hào)常量來表示一個(gè)結(jié)構(gòu)類型。例如:
例如:
這種形式的聲明的一般形式為:
例如:
這種聲明的一般形式為:
第三種方法與第二種方法的區(qū)別在于第三種方法中省去了結(jié)構(gòu)名,而直接給出結(jié)構(gòu)變量。
在程序中使用結(jié)構(gòu)變量時(shí),往往不把她作為一個(gè)整體來使用。
在ANSI C中除了允許有相同類型的結(jié)構(gòu)變量相互賦值以外,一般對(duì)結(jié)構(gòu)變量的使用,包括 賦值、輸入、輸出、運(yùn)算 等都是通過結(jié)構(gòu)變量的成員來實(shí)現(xiàn)的。
表示結(jié)構(gòu)變量成員的一般形式為:
結(jié)構(gòu)變量名.成員名
例如: boy1.num boy2.sex
如果成員本身又是一個(gè)結(jié)構(gòu),則必須逐級(jí)找到最低級(jí)的成員才能使用。如: boy1.birthday.month
結(jié)構(gòu)變量的賦值就是給各成員賦值。
數(shù)組的元素也可以是結(jié)構(gòu)類型的。
因此可以構(gòu)成結(jié)構(gòu)型數(shù)組。
初始化賦值:
當(dāng)然也可以在定義 stu結(jié)構(gòu) 時(shí)同時(shí)聲明 pstu。
賦值是把結(jié)構(gòu)變量的首地址賦予該指針變量,不能把結(jié)構(gòu)名賦予該指針變量。
如果 boy 是被聲明為 stu類型 的結(jié)構(gòu)變量。
則:
有了結(jié)構(gòu)指針變量,就能更方便地訪問結(jié)構(gòu)變量的各個(gè)成員。
其訪問的一般形式為:
(*結(jié)構(gòu)指針變量).成員名
或
結(jié)構(gòu)指針變量-成員名
例如: (*pstu).num 或 pstu-num
例如:
介紹數(shù)組的時(shí)候,曾介紹過數(shù)組的長(zhǎng)度是預(yù)先定義好的,在整個(gè)程序中固定不變。
C語言中不允許動(dòng)態(tài)數(shù)組類型。
例如:
但是又有此需求,為了解決這個(gè)問題,C語言提供了一些內(nèi)存管理函數(shù),這些內(nèi)存管理函數(shù)可以按需要?jiǎng)討B(tài)地分配內(nèi)存空間,也可把不再使用的空間回收待用,為有效地利用內(nèi)存資源提供了手段。
常用的內(nèi)存管理函數(shù)有3個(gè):
例子:分配一塊區(qū)域,輸入一個(gè)學(xué)生數(shù)據(jù)
上面的例子采用了動(dòng)態(tài)分配的辦法為一個(gè)結(jié)構(gòu)分配內(nèi)存空間。
每一次分配一塊空間可用來存放一個(gè)學(xué)生的數(shù)據(jù),我們可稱之為一個(gè)節(jié)點(diǎn)。
有多少個(gè)學(xué)生就應(yīng)該申請(qǐng)分配多少塊內(nèi)存空間,也就是說要建立多少個(gè)節(jié)點(diǎn)。
當(dāng)然用結(jié)構(gòu)數(shù)組也可以完成上述工作,但如果預(yù)先不能準(zhǔn)確把握學(xué)生人數(shù),也就無法確定數(shù)組大小。
而且當(dāng)學(xué)生留級(jí)、退學(xué)之后也不能把該元素占用的空間從數(shù)組中釋放出來。
用動(dòng)態(tài)存儲(chǔ)的方法可以很好地解決這些問題。
有一個(gè)學(xué)生就分配一個(gè)節(jié)點(diǎn),無須預(yù)先確定學(xué)生的準(zhǔn)確人數(shù),某學(xué)生退學(xué),可刪去該節(jié)點(diǎn),并釋放該節(jié)點(diǎn)占用的存儲(chǔ)空間,從而節(jié)約了寶貴的內(nèi)存資源。
另一方面,用數(shù)組的方法必須占用一塊連續(xù)的內(nèi)存區(qū)域。
而使用動(dòng)態(tài)分配時(shí),每個(gè)節(jié)點(diǎn)之間可以是不連續(xù)的(節(jié)點(diǎn)內(nèi)是連續(xù)的)。
節(jié)點(diǎn)之間的關(guān)系可以用指針實(shí)現(xiàn)。
即在節(jié)點(diǎn)結(jié)構(gòu)中定義一個(gè)成員項(xiàng)來存放下一節(jié)點(diǎn)的首地址,這個(gè)用于存放地址的成員,常把他稱為指針域。
可在第一個(gè)節(jié)點(diǎn)的指針域內(nèi) 存入第二個(gè)節(jié)點(diǎn)的首地址,在第二個(gè)節(jié)點(diǎn)的指針域內(nèi) 又存入第三個(gè)節(jié)點(diǎn)的首地址,如此串聯(lián)下去直到最后一個(gè)節(jié)點(diǎn)。
最后一個(gè)節(jié)點(diǎn)因無后續(xù)節(jié)點(diǎn)連接,其指針域可賦值 0
這種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為“鏈表”。
鏈表的基本操作主要有以下幾種:
例子:建立一個(gè)三個(gè)節(jié)點(diǎn)的鏈表,存放學(xué)生數(shù)據(jù)。為簡(jiǎn)單起見,我們假定學(xué)生數(shù)據(jù)結(jié)構(gòu)中只有學(xué)號(hào)和年齡兩項(xiàng)。可編寫一個(gè)建立鏈表的函數(shù)create。程序如下:
create函數(shù) 用于建立一個(gè)有 n個(gè)節(jié)點(diǎn) 的鏈表,他是一個(gè)指針函數(shù),他返回的指針指向 stu結(jié)構(gòu)。
在create函數(shù)內(nèi)定義了三個(gè) stu結(jié)構(gòu) 的指針變量。
head為頭指針,pf為指向兩相鄰節(jié)點(diǎn)的前一節(jié)點(diǎn)的指針變量。
pb為后一節(jié)點(diǎn)的指針變量。
枚舉是一種 基本數(shù)據(jù)類型 ,而不是一種 構(gòu)造類型 ,因?yàn)樗荒茉俜纸鉃槿魏位绢愋汀?/p>
enum 枚舉名{ 枚舉值表 };
例如: enum weekday { sun,mou,tue,wed,thu,fri,sat };
enum weeakday a,b,c;
或者為:
enum weekday { sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者為:
enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
例子:
說明:
只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:
a=sun;b=mon; 是正確的
a=0;b=1; 是錯(cuò)誤的。
如果一定要把數(shù)值賦予枚舉變量,則必須使用強(qiáng)制類型轉(zhuǎn)換。
如: a=(enum weekday)2;
還應(yīng)該說明的是枚舉元素不是字符常量也不是字符串常量,使用時(shí)不要加單、雙引號(hào)。
例子:
typedef定義的一般形式為:
typedef 原類型名 新類型名
其中原類型名中含有定義部分,新類型名一般用大寫表示,一般用大寫表示,以便于區(qū)別。
有時(shí)也可用 宏定義 來代替 typedef 功能,但是 宏定義 是由 預(yù)處理 完成的,而 typedef 則是 在編譯時(shí) 完成的,后者更為靈活方便。
使用 typedef 定義數(shù)組、指針、結(jié)構(gòu)等類型將帶來很大的方便,不僅使書寫簡(jiǎn)單而且使意義更加明確,因而增強(qiáng)了可讀性。
例如:
又如: