版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
前其實(shí)寫這篇本書,我也充滿了憂郁,因?yàn)镃語言確實(shí)很重要,但是往往現(xiàn)在的學(xué)生學(xué)習(xí)的方向又很奇怪,追求要全面,也不管到scanf的多種輸入也沒有做解釋,比如用一個(gè)scanf函數(shù)可以輸入幾個(gè)變量的值,可以分別用逗號或者空格或者其他符號分開,本人覺在這里,我不得不感謝AFoolishGirl(Q: ),一個(gè)非常謙虛的一個(gè)小,卻對程序有如此的執(zhí)著,謝謝建議,本并在此表示真誠的感謝。但由于實(shí)際開發(fā)的習(xí)慣和編譯器的支持問題等原因,本書程序格式并未完全遵守C99標(biāo)準(zhǔn),但絕對不影響學(xué)習(xí),畢竟C99標(biāo)準(zhǔn)過去這10多年,主流編譯器也對此不是特感冒。本書采用的代碼格式,雖然完全符合目前國際大企業(yè)寫真的很力,希望大家少一些,多一些建議。謝謝。如果有問題,請發(fā)mail給我。鄙人姓王,名曉飛 此書免費(fèi),謹(jǐn)以此獻(xiàn)給所有愿意為程序而奮斗終生的朋友們,祝學(xué)有所成,為民族的強(qiáng)大,拿出自己的精神,做出自另外,作為一個(gè)程序員,希望都要勤動腦,經(jīng)常上網(wǎng)的同學(xué)都會發(fā)現(xiàn),經(jīng)常在某些聊天工具有一些信息轉(zhuǎn)發(fā),比如提醒什右下角的五星,這是他們在收集讓我們賠款。注意這里我用了灰色字體,因?yàn)閷戇@幾行字的時(shí)候,我的心都是灰色的,第一章程序這東就問我們聽懂了嗎,我們都是搖頭,然后老師就說,聽不懂就對了,聽懂了還要老師干嗎。幾年之后想起這句話,忽然感覺么究竟如何才能學(xué)好C語言呢?相信大家應(yīng)該都看過版的《倚天屠龍記》吧,“動靜之機(jī),陰陽之母,陰不離陽,陽不離陰”“無忌,你有九陽神功護(hù)體,學(xué)什么武功都特別快,太極拳只重其意不重其招,你忘記所有的招式,就練成太極拳那么,接下來,我們究竟應(yīng)該怎么去學(xué)習(xí)程序,我們大家應(yīng)該有一個(gè)大概的方向了吧?雖然這個(gè)方向也許感覺起來還比較朦朧,但是別忘了,朦朧也是一種美。就好比一個(gè)人剛學(xué)畫畫,畫出來的似像似不像,其實(shí)這個(gè)時(shí)候稱不上朦朧,頂多也只能叫糊,等到你能畫的非常清楚,那么你就會發(fā)現(xiàn)自己的水平到達(dá)一定的高度,會發(fā)現(xiàn)自己成為了高手,再看初學(xué)畫畫的,看看他們的畫,會覺得非常幼稚,等你再繼續(xù)畫下去,也許有一天,你會發(fā)現(xiàn)未必都是好的,你會發(fā)現(xiàn)唯美才是最終追求的,語言招式。一談到二進(jìn)制,有些同學(xué)就,也許有些同學(xué)覺得這很容易理解,但是會者不難,難者不會,總會有那么一部分同學(xué),對也只有0到9,沒有十這個(gè)表示,表示十的時(shí)候用了一個(gè)1一個(gè)0,其實(shí)已經(jīng)開始組合了,因?yàn)椴荒苡靡粋€(gè)字來表示十了啊。(注意示,整個(gè)應(yīng)用過程中,始終沒有看見過一位數(shù)表達(dá)10。22對了,就是這么個(gè)意思,二進(jìn)制表示的10,同學(xué)記住了,別再叫十了,叫夭零,你念壹零也行,為啥呀,因?yàn)槟隳钍畷屓苏`解,只有你自己的話,你愛怎么念你怎么念。廢話不多說,10下去是多少?那就是11,11下去呢,加1,我們來看看加法了1~10要是連這點(diǎn)都不知道,我謹(jǐn)代表的寫手,來鄙視你一下。程序在某種程度上來說,它就是生活,不,應(yīng)該用他,強(qiáng)壯威武而《蠟筆小新》第一集,還記得是什么嗎?對了——買東西。按照的文化,真不知道新之助的老媽是怎么搞的,怎么能在招待客人吃飯那天忘了買肉餡和蘿卜。正做飯呢,醬油也用沒了,于是小新隆重登場,拿著寫的紙條,肉餡、醬油、白蘿卜。結(jié)果小新提著籃子就跑了,到了一家店,才有了下面一段:“你好啊”“歡迎光臨,幫買東西???”“我要買餡”“我們這里不賣”“那我買白蘿卜”“也不賣白蘿卜”“那我買醬油”終于哭了,“醬油也沒有啊”于是小新很郁悶,最終了很經(jīng)典的評論:“什么都沒有還開什么店?。 碧幱谶吘壍牟蛔×恕笆裁囱?,我這兒是賣魚這段看起來十分搞笑的片段,說明了什么?仔細(xì)想,原來不熟悉業(yè)務(wù)是可怕啊,小新由于業(yè)務(wù)不熟練,辦事肯定目的不明確,這也是很多企業(yè)不愿意要大學(xué)生的原因,為啥,業(yè)務(wù)不熟練啊。技術(shù),讓干啥都要試著去做,不知道如那么有同學(xué)說了,聽說企業(yè)開發(fā),都是有需求分析的。好了,我們繼續(xù)往下看。小新走呀走,又走到了一家店,是個(gè)可愛的PPMM,“歡迎光臨!”妹妹就是溫柔,說出話來聽起來感覺就是一個(gè)字:舒坦!小新于是開始下面的“我要買餡”“好啊,你要買多少呢?”漂亮妹妹依然很溫柔,結(jié)果小新汗出來了,是啊,買多少呢?于是說“買兩朵好了”姐姐一聽樂了,問“你沒有告訴你要買幾斤嗎?”“幾斤?”小新問,心里想,的什么時(shí)候還有這個(gè)單位???難道肉不是論朵的?忽然醒悟,哦,肉可能就是論斤的,于是恍然大悟。姐姐一看樂壞了,趕緊問,“想起來了沒有,要買幾斤?”“她沒說”看來小新的確是想起來了,但是客戶的需求,那也沒辦法,于是,姐姐無奈的說“這就沒辦法了,小弟弟,啊,打回家問問你好嗎?“嗯”小新都是很配合的男,姐姐一聽,恩,總算有辦法,于是問“是多少?”這下,不知道姐姐也累得不輕,要是表達(dá)清楚了,還好,謝天謝地,沒有表達(dá)清楚,哥哥慘了,費(fèi)了不少力氣,除了肚子更餓了,啥作用都沒有。于是C不用天天防備后面有人用棍子了,溫柔的哥哥也不用跳得死去活來的,只要走過去,對姐姐說一個(gè)字“愛”,姐姐馬上就知道咋回事。說語的出,要啊所說,C語的現(xiàn)終讓程邁了明,序類史具劃代的意程發(fā)文。還真夠難的啊,這女人下一步還想干嗎還不知道呢。剛點(diǎn)火,姐姐又說話了“烤肉”,于是哥哥基本上快明白兒的意思了,用這么麻煩了。為啥呀?語言進(jìn)步了吧,只要說“請我吃飯”,你看他不的請你才怪。而且現(xiàn)在的語言發(fā)展很厲害,一句話,氣問子,“你想吃什么?”子又是一個(gè)字“你猜!”。所以說高級語言有高級語言的不好,為啥呀?效率低啊。哪有老們打獵來的速度,起碼總是能在第一時(shí)間內(nèi)知道該做什么,沒有費(fèi)神的其他動作。而我們現(xiàn)在為吃個(gè)飯還要的 TurboC2.0,所以呢我就介紹這個(gè)吧,看如下步驟,等你開始寫程序的時(shí)候回來再看也可以,不CtrlF9,AltF5看到以上有三個(gè)主要路徑。我的TC.EXE路徑是E:\TURBOC2\TC.EXE。所以我做了如上設(shè)定,前面部分E:\TURBOC2修改完,敲回車,最后別忘了再選擇Options下面的Save項(xiàng),彈出一個(gè) 否覆蓋(Y/N),直接按Y即可。第二章哥寫的不是程序會有一個(gè)總,誰呀?那就是我們的校長哥。上級來給任務(wù),會不會來找到每個(gè)負(fù)責(zé)的老師一個(gè)個(gè)的分任務(wù)???顯然是不會的,那么也就是說,總會有一個(gè)總,任務(wù)分給他,然后具體學(xué)校怎么完成任務(wù),那就不管了。那么,其實(shí)程序也一樣,你那么總總該有個(gè)明確的名字吧。真名總是不太合適,為什么?假設(shè)我們教育界有了新,于是或者寶出來分配任務(wù)了,他們會說,各大院校的校長,要積極做好某某工作,配合國家教育政策,保障國家教育的順利進(jìn)行。如果要說名字,那慘了,那么或者估計(jì)要累壞了,他們要說,各大院校,某某校的王某某校長,某某校的張某某校長……要積極做好某某工作……,這樣的,豈止上千所高校?我估計(jì)一次下來,就再也不會有人熱衷于回頭再想想我們學(xué)過的函數(shù),f(x)2x1說了,就這么簡單嗎?是啊,就這么簡單,簡單的超乎你的想象。這個(gè)名字不會變,記住了哦,main(),這就是程序的主函數(shù),當(dāng)你打開一個(gè)C語言編寫的程序,那么總會先找到這個(gè)main()函數(shù),別說哥沒告訴你,哥只是提的次數(shù)太多了,那么再強(qiáng)的大學(xué)校長,總會有自己的,自己的辦公區(qū),因?yàn)閷W(xué)校其他人,還要有自己的分工啊,所以說,就算你是校長,你也得為自己劃分一塊范圍,告訴大家,這一塊是你來做的事,別人。那么程序也從生活中吸取了經(jīng)驗(yàn),那么,{}看到了吧,加了一對花括弧,告訴大家,我我括弧之內(nèi)的事情,之外的,屬于其他工作人員的,或者是屬于學(xué)校共有的int{return}intwindowsunix序,這些程序中main函數(shù)就是程序的總,那么最終要向匯報(bào)一個(gè)整型數(shù)據(jù)。如果返回是0表示程序正常退出,如果是其他值呢?那就是不正常嘛!更詳細(xì)不再多說,免得影響理解。我們目前一般只用到return0,0void{}int{return0;} int{return}本條件,那就是有了總,但是這個(gè)總,占著茅坑不拉屎,總歸不是好事情,于是他得有自己的事情做,那么接下來,#include<stdio.h>intmain(){printf("oC!");return0;}別誤會,這可不是給人家做,這C不是維生素C,而是C語言。這段代碼的意思呢,就是在控制臺輸出一行內(nèi)容,輸出什么內(nèi)容呢,不告訴你,自己敲代碼試試看。為什么我說是控制臺呢?這里要關(guān)注一下操作系統(tǒng)了。DOS是英文DiskOperatingSystem的縮寫,意思是“磁盤操作系統(tǒng)”。DOS是個(gè)人計(jì)算機(jī)上的一類操作系統(tǒng)。從1981年直到1995年的15,DOS在IBMPC就是那么黑黑的界面,一行行令,和IBM一起賣,竟然也賣得不亦樂乎,沒辦法,那個(gè)時(shí)候似乎也沒什么更好的操作系統(tǒng),作系統(tǒng),據(jù)說當(dāng)時(shí)IBM管事的大哥聽了差點(diǎn)噴飯,哥是不是這兩天腦袋被驢踢了?當(dāng)然這只是我的認(rèn)為,因?yàn)槲疫€真不知道究竟有沒有驢,如果那位同學(xué)知道沒有驢的,別來找我茬,我不想和你論證。后來哥像模像樣的,竟然弄出了個(gè)windows3.0,看起來還真像那么回事,不過似乎也沒啥市場,于是后來又到windows95、windows98,一步步弄得像模像樣了,開始有市場了,當(dāng)然,這些操作系統(tǒng),都是在dos系統(tǒng)的基礎(chǔ)上開發(fā)的,IBM的哥們一看,了不得啦,這哥一旦有市場了,咱們再用這系統(tǒng),價(jià)格可就不是咱說了算了,于是乎,開發(fā)想辦法,但是下手晚了,哥的基于NT內(nèi)核的windows2000出來了,哥終于體會到了的,那個(gè)爽啊。之后的操作系統(tǒng),都不再基于DOS了,但是為了保留這個(gè)一個(gè)功能,方便一些老用戶使用方便的使用一些命令,于是哥在新的操作系統(tǒng),都加入了一個(gè)程序,就是我上面說的:命令提示符,操作起來和老的DOS#include<stdio.h>intmain(){printf("oprintf("oC!");return0;}#include<stdio.h>intmain(){printf("o printf("oC!");return0;}看見沒,多打點(diǎn)空格啦。真笨。有同學(xué)說了,是不是啊,這也太搞笑了吧,OK,是不是,你先這么寫著,學(xué)我的程序,當(dāng)然得按我的規(guī)矩來了。多年的媳婦熬成婆,沒辦法,總得有一個(gè)過程。雖然現(xiàn)在的媳婦不愿意熬成婆婆。#include<stdio.h>是什么東西呢?是這樣的,C語言里面,有很多函數(shù),需要我們?nèi)フ{(diào)用,這里的printf就是一個(gè)函數(shù),負(fù)責(zé)做輸出的,那么這個(gè)函數(shù),就在stdio.h這個(gè)文件,所以通過這句話,包含這個(gè)文件。這個(gè)也是必須寫的,一定寫上哦。下面的例子我會省略這行,但是不能省略了。這一節(jié)呢,同樣不說太多內(nèi)容,但依然很有用。希望看完之后,改變一下自己學(xué)程序的思想,程序這門課,說難也不C3、5000其中一個(gè)。學(xué)校就好比我們的程序,校長就好比我們的main函數(shù)。那么國家(操作系統(tǒng))下達(dá)任務(wù)讓學(xué)校正常運(yùn)行(程序運(yùn)行),不是告訴學(xué)校的,學(xué)校本身不會做任何事,,國家是告訴校長(main所以國家只負(fù)責(zé)對校長傳達(dá)命名,比如學(xué)校要擴(kuò)建,給你200200(main)報(bào)告材料格式校長(200{}intmain(int{return}int{return}int{return}void{}第三章內(nèi)存和超市那么我們玩過電腦,電腦上有很多內(nèi)容,每一個(gè)內(nèi)容都需要有個(gè)的地方吧,那么究竟該怎么呢?這個(gè)時(shí)候我們回頭看看我們前邊提到的2進(jìn)制,這個(gè)時(shí)候不得不再次提起。程序運(yùn)行的時(shí)候,需要一定的內(nèi)存空間,這也就是為什么有的機(jī)器內(nèi)存大小也會影響速度。計(jì)算機(jī)的原理,最基本的單位,就是bit,我們叫位,這個(gè)位有兩種狀態(tài),要么是0要么是1,不會表示更復(fù)雜的情況,那么問題就出來了,一個(gè)位,表示的最小值是0,最大值是1,更大的值,表示不了了,這下還玩?zhèn)€什么勁兒。于是人 、、、,注意這都是二進(jìn)制,也就是十進(jìn)制的0、1、2、3,哈哈,范圍是不是擴(kuò)大了?于是人們就8個(gè)bit,也就是8個(gè)位連在一起,這樣的話,從0到 是不是0——255?這就叫一個(gè)字節(jié)。怎么算出來的?大哥,自己慢慢找規(guī)律吧。現(xiàn)在,你明白為什么計(jì)算機(jī)要用到二進(jìn)制了吧?電腦最基本的單元只有兩種狀態(tài)?;締卧猙it,那么一個(gè)字節(jié)(byte)有8個(gè)位,為什么是8個(gè)?為什么叫一個(gè)字節(jié)?有的同學(xué)查一查ASCII碼表,西方人發(fā)明的電腦,他們的字母撐死了也就26個(gè),再加上特殊符號什么的,這255個(gè)值也足夠用了。好了,這里留一個(gè)作業(yè),查ASCII碼表。那么我們繼續(xù)看,255如果做數(shù)學(xué)計(jì)算還是不夠啊,怎么辦?再擴(kuò)大,兩個(gè)字節(jié),16位夠不夠?16位表示多少?0——65535,哇,不少了,那我要做財(cái)務(wù),還是不夠,沒關(guān)系,4個(gè)字節(jié)夠不?已經(jīng)多少個(gè)億了!不對呀,我還需不過有人有辦法,就拿2字節(jié)來說,能表示0——65535,那么,長度是16個(gè)bit,能不能讓15位表示數(shù)值?讓最前面的一你問我為什么?你太過分了,你不能算算啊,學(xué)我的程序,很多很多東西,是必須你自己動手弄明白的。說了這么多,那么究竟用多大來表達(dá)一個(gè)數(shù)呢?究竟是幾個(gè)字節(jié)?于是問題出來了,如果是人的,怎么算255都夠了,個(gè)時(shí)代嗎?連windows操作系統(tǒng)這么大的軟件,也不過幾年就換了,難道您兄弟寫的軟件前無古人后無來者不成?不要緊,那么人的,用一個(gè)字節(jié)夠了,但是如果做其他數(shù)算,怎么也得上千上萬吧,恩,看來是挺頭痛的,怎么辦?還是分類吧。于是計(jì)算機(jī)里面,出現(xiàn)了一些新概念,數(shù)據(jù)類型。(注意:以下類型所說以TurboC2.0每個(gè)類型的環(huán)境在變化,比些環(huán)境int是節(jié),那么值的范圍也隨之?dāng)U大,不再細(xì)說。)29大哥,拜托,說個(gè)30歲怎么啦?沒辦法,實(shí)際需求,要有小數(shù)。下面我列出一些數(shù)據(jù)類型,希望大家認(rèn)真看short
18signedshortint18 2unsigned 2signed 2long 4 —unsignedlongint4signedlong 4 — 4double 8好啦,這些內(nèi)容看一遍大概了解一下,那么在shortint類型可以簡寫short,unsignedshortunsignedintunsignedlong那么了解了這么多數(shù)據(jù)類型,究竟該如何使用呢?面還說了,現(xiàn)在只說不用,這不是嗎?OK節(jié)來講應(yīng)用。說到這里,我讓去查ASCII碼表的,不道去查了沒有,如果沒有查的,趕緊去查,查了之后回來繼續(xù)看,那位同學(xué)說了,老師啊,你為啥不能把這東西寫在這書里呢?怎么說呢,我覺得我這本書,實(shí)在不能作為使用,的資料,還得靠大家去自己動手吧,而且這個(gè)表,也許不要我們把他背下來,只是需要了解一下,所以這里沒有列出,希望大家能原上面說到字節(jié),說到數(shù)據(jù)類型的時(shí)候,都是數(shù)值,但是還有一個(gè)類型,那就是字符類型(cha),這個(gè)類型,占幾個(gè)字節(jié)?自己動腦想,如果你能想到了,恭喜你,有潛力,沒想到?唉,真該面壁啊,char就是charcter,字符嘛,前面我都了,英文也就26個(gè)字母,255足以。什么叫字節(jié)?。磕遣痪褪且粋€(gè)字符的長度嗎?看書不動腦,你讓我怎么說你呢?你這么看2intmain(){輸出a;return0;}這是第一點(diǎn),那么第二點(diǎn),是一個(gè)同學(xué),打。這個(gè)時(shí)候你打的是這個(gè)名字,還是擁有名字的這個(gè)人?OK,aaaint{chara='a';return0;}int{chara='b';return0;}int{chara='c';return0;}a,acharc‘f’;這個(gè)表達(dá)式,意思就是一個(gè)變量c,值為f。就好比,有個(gè)爺家里添了孫子,爺給孫子取個(gè)名字,叫“為民”。你說這孫子是否為民,誰知那么,printf("%c",a);這個(gè)又是什么意思呢?printfstdio.h,這個(gè)函數(shù)就在這個(gè)文件中,你用就是了,只要想輸出結(jié)果看,就用它,"%c"表示輸出一個(gè)字符類型的值,后面逗號隔開,再后面一個(gè)a,表示輸出的值是a的值,那么這句話的意思就是,把a(bǔ)的值按字符格式輸出。int{charc='k';printf("characteris%c",c);return0;}輸出的內(nèi)容,要看字符串后面的參數(shù),這里就是c變量的值。鍵,也int{chara='a';",return}int{chara='a';return0;}關(guān)系,C'\t'表示tab'\n'表示換行,'\b'表示退格,就是你經(jīng)常刪除文字時(shí)按的那個(gè)鍵,那么int{chara='\';return0;}int{chara='\\';return0;}int{chara='c';printf("%c\n",printf("%c\n",return}intmain(){chara= ",return0;}int{inta=10;printf("%d\n",a);return0;}int{inta=10;intb=7;intc=a+b;printf("%d\n",c);return0;}要么繼續(xù)從頭看本節(jié),如果一直到這里看不懂,唉,放棄本書吧,我你看不懂我的書就讓你放棄程序人生,但求你放過我int{inta=10;intb=7;intc=a+b;printf("a+b=%d\n",c);return0;}a+b=很奇怪了a和b出沒有變成107呢?有些同學(xué)會疑惑,也許有些同學(xué)早就理解了,我說一下,printf里面雙引號變量c的值輸出。int{inta=10;intb=7;intc=a+b;printf("a+%d=%d\n",b,printf("a+%d=%d\n",b,a+printf("%d+b=%d\n",a,c);printf("%d+b=%d\n",a,a+printf("%d+%d=%d\n",a,b,c);printf("%d+%d=%d\n",a,b,a+b);printf("%d+%d=%d\n",b,a,c);printf("%d+%d=%d\n",b,a,a+b);return}intlength20;而盡量減少這種情況:int=組合單詞命名,比如想表示的和的:intliAge=10;intzhangAge=18;每個(gè)獨(dú)立的單詞首字母大寫,但是第一個(gè)字母小寫,這樣寫只是為了閱讀方便,看起來是不是舒服一些呢?intmikeAge23;但是,如果表示第二名手的成績,怎么辦?intsecondRacerScore=88;好長啊,可以不?可以,但是長了感覺也不爽,那么改一下,intsecRacerScore88;還是有點(diǎn)長,intsecRcScore88;還長?憑自己的感覺吧,如果還覺得長,自己憑是我備過于強(qiáng)調(diào),我覺得變量名最重要在于易懂。有時(shí)候每個(gè)項(xiàng)目還會有不同名要求,但一般都基本上和上面int{intfirst=10;intsecond=intresult=first+printf("%d+%d=%d\n",first,second,result);return0;}注意:定義變量一定要放面,并且應(yīng)用過程中一定要注意每一個(gè)字母的大小寫,大寫的和小寫的是不一樣的。比如intA=20;inta=17;這是兩個(gè)變量,互相沒啥關(guān)系!就好比大當(dāng)家的二當(dāng)家的,這是兩個(gè)人。int{intfirst,result;intsecond=16;first=18;result=first+printf("%d+%d=%d\n",first,second,result);return0;}int{intintsecond=printf("%d+%d=%d\n",first,second,result);return0;}int{inta;printf("%d\n",a);return0;}int{inta,b;printf("%d\n",printf("%d\n",b);return0;}如果說你用的是TurboC2的話,恭喜你,結(jié)果是不是很奇怪了(還有一些環(huán)境,會導(dǎo)致程序)?是啊,看來不給初始值,多人都要去打醬油了。什么?沒見過inta,b;?沒關(guān)系,一定定義多個(gè)變量嘛,用逗號隔開,還可以inta=15,b;怎么樣?明白不?別說兩個(gè)變量,20int{intscanf("%d",&input);/*d,沒有\(zhòng)n*/printf("%d\n",input);return}的,那就是說,這個(gè)&表示這個(gè)變量input在內(nèi)存中的位置,你就這么理解著,那么scanf會輸入的內(nèi)容,根據(jù)這個(gè)位置存放,然后你輸出這個(gè)變量inputinputint{inta;intscanf("%d",scanf("%d",printf("%d+%d=%d\n",a,b,a+b);return0;}兄弟,運(yùn)行的時(shí)候,給哥輸入兩個(gè)數(shù)試試看?看看是否真的能加?什么?你問我為啥不弄個(gè)intc=a+b?恩,是個(gè)問題, 第四章談情說愛 :“你到底說不說”反倒了,天地良心啊,這究竟是誰在忍耐??!那么怎么辦呢?很簡單,繼續(xù)學(xué)習(xí)!順便說一句,們注意了啊,計(jì)算機(jī)專業(yè)的男生可能會因程序的影響,更容易接受命令一int{inta; intb;scanf("%d", printf("%d+%d=%d\n",a,b,a+b);return0;}好了,還是上節(jié)最后的代碼,輸出結(jié)果還是一樣,那么中間多了幾行注釋,這些注釋,是給我們這些寫代碼的看的,程序執(zhí)行的時(shí)候,是不管這些東西的,明白否?那么C語言里面的注釋,往往都是這么一個(gè)格式:/*注釋內(nèi)容*/。寫在一對int{scanf("%d",&a);printf("%d+%d=%d\n",a,b,a+b);return0;}int{inta;intscanf("%d",scanf("%d",&b);printf("%d+%d=%d\n",a,b,a+b);return0;}int{inta;intscanf("%d",&a);scanf("%d",&b);+=a+-=a-*=a*return0;/=a/} int{inta=17;a=a+3;return0;}什么?你又看不懂了?那么現(xiàn)在告訴你,這個(gè)也是可以的,什么意思呢?aa3a3給a。等號(=)表示賦值,這句話就是將a3a。如果不明白的話,多讀一下前面這句話。a320,然后執(zhí)行那么這和暗戀啥關(guān)系?兄弟,不知道啥叫暗戀嗎?喜歡,又不敢對人家說的感覺,那么自己承受了痛苦,這里面變量a暗戀b,baaint{inta=17;a+=3;return0;}兄弟,來一起學(xué)下+=這個(gè)符號,這也就相當(dāng)于a=a+3;不過呢,這個(gè)效率呢,據(jù)說會比a=a+3快,應(yīng)該是快吧,哥我沒有測試過,那么你就知道+=的速度快,如果你真有,以后自己學(xué)的熟練了,自己去測試看看。int{inta=17;a+=1;return0;}int{inta=17;a++;return0;}那么,有時(shí)間,自己可以研究一下a+=2;a-=2;a*=2;a/=2;a++,a--;a**?上帝啊,老天爺啊,如來佛祖,都來看看,這個(gè)同學(xué)要發(fā)瘋,a**aa*1a**?如果你再敢問a//,我……!那是注釋!int{131313return}int{charprintf("Pleaseinputacharactor");scanf("%c",&c);printf("Thecharactorwitchyouinputis%c\n",c);return0;}int{charprintf("Pleaseinputacharactor");scanf("%c",&c);printf("Thecharactorwitchyouinputis%d\n",c);return0;}int{charc='A';printf("%d\n",c);return0;}int{inti=65;printf("%c\n",i);return0;}int{inti65;/*設(shè)置i的初始值為printf("%c\n",i);/*輸出ASCII為的字符,或者理解為將按照字符格式輸出*/ printf("%c\n",i);/*再輸出*/ printf("%c\n",i);/*再輸出*/ printf("%c\n",i);/*再輸出*/return0;}int{inti=65;printf("%c\n",printf("%c\n",printf("%c\n",printf("%c\n",i++);return0;}int{inti65;/*設(shè)置i的初始值為printf("%c\n",i);printf("%c\n",i++);return0;}int{inti=printf("%c\n",printf("%c\n",++i);return0;}怎么了?無語了?是不是想到《點(diǎn)秋香》里面他爸說:“,你想玩死我你才甘心?”我也借用的一句話:“不是啊,我是想幫你!”“想幫我你撒這些沒用的干什么?”我再告訴你,這是霹靂,會爆!經(jīng)常有同學(xué)這里犯迷糊。i++和++ii1,下面兩段代碼輸出結(jié)果將不會有任何區(qū)別:int{inti=65;printf("%c\n",i);return0;}int{inti=printf("%c\n",i);return0;}在這句話結(jié)束,都是增1,所以效果一樣。但是下面這兩段,他就有區(qū)別了:int{inti=printf("%c\n",i/*先運(yùn)行i1*/return0;}int{inti=printf("%c\n",i+/*1*/return0;}4.也要愛整喜歡粗糙的男生不知道是不是現(xiàn)在還如此,但是根據(jù)歷史,喜歡細(xì)致的,早遠(yuǎn)古時(shí)代,估計(jì)都絕跡了,為啥?因?yàn)樯嬉蟊仨氂旅?,必須每天能保障吃的。那個(gè)時(shí)代,奶油小生估計(jì)已經(jīng)絕跡了,就算有,也是稍微帶那么一點(diǎn)奶油的intmain(){inti=13;i++;printf("%d\n", return}main(){inti=13;i++;printf("%d\n",i);return0;}int{inti=i++;printf("%d\n",i);return0;}int{inti=i++;printf("%d\n",i);return0;}int{inti=i++;printf(“%d”, return}int{inti=i++;printf("%d\n",i);return0;}int{inti=13;printf("%d\n",i);return0;}最后,我再說一句話,如果你的代碼格式不標(biāo)準(zhǔn),那么請不要問我問題,謝謝合作。還有,找工作面試,筆試過后,往往代式,說不定會出什么問題,你將很可能與好公司無緣,因?yàn)楹霉井吘惯€是注重代碼的格式問題的,大公司需要互相交流,5.int{intscanf("%d",&r);printf("圓的面積是:%f\n",r*r*3. return0;}這么精確了,要改動,改為3.142,那么你可能去改代碼了。恩,看起來很容易解決。那么如果代碼如下呢?int{intintavg0;scanf("%d",&r);avg+=r*r*3. scanf("%d",&r);avg+=r*r*3. scanf("%d",&r);avg+=r*r*3. scanf("%d",&r);avg+=r*r*3. scanf("%d",&r);avg+=r*r*3. avg/=5;return0;}這也沒問題,如果你需要修改,我把五個(gè)地方都給你該為3.142#definePI int{intintavg0;scanf("%d",&r);avg+=r*r*PI;scanf("%d",&r);avg+=r*r*PI;scanf("%d",&r);avg+=r*r*PI;scanf("%d",&r);avg+=r*r*PI;scanf("%d",&r);avg+=r*r*PI;avg/=5;return0;}defineNAMEvaue,注意,此處沒有等號,都是空格。那么,在實(shí)際執(zhí)行的過程中,此種定義僅僅是做了基本的替換,就是將代碼中的NAME替換為value。還有一點(diǎn)要注意,根據(jù)習(xí)慣,常量名一般采用大寫。小寫可第五章哥還是很優(yōu)秀的上面我們畢竟學(xué)會了一點(diǎn)三腳貓的功夫,那么要想成為御貓,那可是還有很大差距的,那么要想成為優(yōu)秀的人才,首先就要13.1415int{intscanf("%d",&r/*如果r>0printf("%d\n",r);return0;}程序應(yīng)該不對吧。恩,不錯(cuò),同學(xué),你終于變得了,但是只要你能看明白我寫的這個(gè)意思,我們只要稍微做一點(diǎn)修改即可。#definePI3.intmain(){intscanf("%d",&r/**/if(r>0)printf("%d\n",r*r*PI);return0;}#definePI3.intmain(){intscanf("%d",&r/**/if(r>0)printf("%d\n",2*r*PI);printf("%d\n",r*r*return}有個(gè)如果。雖然前面有一個(gè)假設(shè)if,但是這個(gè)if后只能有一句話,也就是對一句話有效,如果下面還有,看這個(gè)代碼#definePI3.intmain(){intscanf("%d",&r/**/if(r>0)printf("%d\n",r*r*printf("%d\n",2*r*PI);return0;}你會發(fā)現(xiàn)不管是輸入是否負(fù)數(shù),周長總是會輸出?,F(xiàn)在再看出錯(cuò)的那段程序,elseififelse,中間只允許有一句話,elseifelse有辦法,這個(gè)時(shí)候就需要?jiǎng)澏ǚ秶恕?催^動物類吧,最初叫動物世界,現(xiàn)在不知道叫啥了,看看那里面的,身邊站一個(gè)母,別的就知道,這是那只的,但是還有很大的地盤呢?怎么表示自己的實(shí)力范圍呢?不管放#definePI3.intmain(){intscanf("%d",&r/**/if(r>0){}
printf("%d\n",2*r*PI);/*注意格式,我在這里以花括弧為標(biāo)準(zhǔn),再次進(jìn)行了縮進(jìn)*/printf("%d\n",r*r*PI)return}#definePI3.intmain(){intscanf("%d",&r/**/if(r>0){}{}
printf("%d\n",r*r*PI);/*注意格式,我在這里以花括弧為標(biāo)準(zhǔn),再次進(jìn)行了縮進(jìn)*/printf("%d\n",2*r*PI);printf("Inputreturn},稿費(fèi)可是按行的,別這么可以不。不過同學(xué),代碼不按行,別開心,起碼國內(nèi)是這行情,我們繼續(xù)我們?yōu)槭裁??你問我嗎?你自己沒想想,如果單位是厘米的話,輸入50,可能。輸入1,可能嗎?你這輪胎能用嗎?輸入10000,可能嗎?100米的半徑啊哥,這種輪胎造出來的車,人估計(jì)搬個(gè)梯子上去,那也得爬半天,這種車誰敢開啊,車前3米有20個(gè)人你都int{intscanf("%d",&r/**/if(r>=10并且r<=200){}{}
printf("%d\n",2*r*printf("Inputreturn}什么?>=和<=是什么?這是大于等于、小于等于,因?yàn)槲覀兡莻€(gè)大于等于的符號(≥),不能通過鍵盤直接打出來。所以就這么表示,大于:>,小于:<,大于等于:>=,小于等于<=,不等于:!=,相等似乎不用說了,等等,必須要說!比較兩個(gè)值是否ifr1)判斷r0,而不能寫為if(r=10),如果這樣寫了之后,那么r0,因?yàn)槟銓ifint{intscanf("%d",&r/**/if(r=10){}{}
printf("%d\n",2*r*printf("Inputreturn}if(r10r200),老規(guī)矩,改成英文總可以了吧。if(r10andr200),這int{intscanf("%d",&r);/*if(r>=10&&r<=200){}{}
printf("%d\n",2*r*printf("Inputreturn}int{int/*10或者大于200if(r10||r200)/*||{}{}
printf("Inputprintf("%d\n",2*r*return}現(xiàn)在我們道了,于零的必就是胎的半,像《天下賊》里說:“好車你,開好就可便進(jìn)入,開好車就一定是好人嗎?你還笑”。我們看到之后,可能一笑就過了,其實(shí)想想,就是呀,開好車的情況也有很多中。學(xué)生三教九流之分?jǐn)?shù)問題:10085706060當(dāng)然,現(xiàn)在天天喊減負(fù),除了減,教育模式不作任何更改,當(dāng)然這個(gè)不屬于我們討論范圍,不多說。那么,當(dāng)輸入一個(gè)分?jǐn)?shù),int{intscore;scanf("%d",&score);if(score==100){}if(score>={}if(score>={}if(score>={}{}
printf("I’msosososorry!return}65 、、、 int{intscanf("%d", if(score {}if(score {}if(score {}if(score {}{}
printf("I’msosososorry!return}int{intscanf("%d", if(score {}{}
return}int{intscanf("%d", if(score {}{
if(score>=85){}{}}
return}int{intscore;scanf("%d",&score);if(score==100){}{
if(score>={}{
if(score>={}{
if(score>={}{}}}}
return}int{intscore;scanf("%d",&score);if(score>={if(score>={if(score>={if(score=={}{
}{}
}}{
}}{
}return}int{intscore;scanf("%d",&score);如果等于100return}int{intscore;scanf("%d",&score);if(score==100){}elseif(score>={}elseif(score>={}elseif(score>={}{}
printf("I’msososoreturn}{}{}{}多條件的情況,一個(gè)ifelseifelse,如果不需要也可以沒有else{}{}{}{}{}{
{}{}{}{}}都是一個(gè)幻想家,總希望有一天,自己身邊能MM成群,天天跟著自己。夢畢竟只是夢,不是美好的現(xiàn)實(shí),之可是一旦兩個(gè)人確立了關(guān)系,們忽然對你有了許多要求:你聽,你受不了,因?yàn)槟阕龅呐χ皇菫榱顺晒ψ返剑⒉辉脒^真正改變,改變總是痛苦的。你不聽,受不了,總覺得,你應(yīng)該為她可以做任何事,雖然這種想法是錯(cuò)誤的,int{intprintf("Pleaseinputthegirl'sNO.youselect:");scanf("%d",&i);{casecasecase}return}什么意思呢?首先是提示,說吧,你選擇誰,然后讓你選。輸入吧,輸入完,看你選擇了幾,switch表示判斷(i)表示根據(jù)i來判斷,這是一個(gè)整體結(jié)構(gòu),里面分情況:case1:表示i為1的情況,也就是你輸入1的情況。注意case后面一定要有值,后面一定是冒號(:)結(jié)尾,注意,一個(gè)case就是表示一種情況,每種情況最后要寫一個(gè)break,break表示跳出塊,這里則是跳出switch1case1break,那么別沒提醒你,你把break1、2、3int{intyear,month;scanf("%d",{casecasecasecasecasecasecasecasecasecasecasecaseif(year%400==0||year%4==0&&year%100!={}{}
}return}這個(gè)問題,不用解釋了吧?、、、、、、、 閏年的方法是,年份能夠被4整除而不能夠被100整除的是閏年,或者被100整除的情況下同時(shí)也能夠被400整除也是閏年。(也就是說,1980年是閏年,1984年是閏年,公元100年不是閏年,公元400年是閏年,公元 元800年是閏年。)后面括弧的都是舉例,接下來你得寫程序了。地鐵站售票系統(tǒng),已知地鐵站的票價(jià)為2塊、3塊、4塊、5塊、6塊、7塊、8塊幾種,如果輸入小于2,輸出“哥們兒,你太摳門兒了”,如果輸入2,輸出“您了兩元票”,依次三元、四元、五元都是漢字。如果大于8,輸出“哥們第六章五百年的回眸想要得到自己想得到的東西,總是要付出代價(jià)的,但是總是會讓我們得到一些東西的時(shí)候,失去。盲目的追求學(xué)習(xí)當(dāng)年出身將軍世家,從小生活相對優(yōu)越,老爸起碼也算個(gè)旅長以上的,但是有自己的追求,覺得當(dāng)馳騁婚后還是一無所成,被一不就要被驃悍的妹子扔一個(gè)菜盆子,從小練就的本事終于派上用場,一閃就躲開了。但前途也未必就是光明的,竟然意外見到了父親的好朋友,可惜這朋友看的父親已經(jīng)走了下坡路,也懶得管他,給了幾貫人就是如此,人生的道路也經(jīng)常如此的彷徨。一看,沒辦法,走吧。走到一個(gè)小鎮(zhèn)上,看到人家的,就湊上去賭了幾把,結(jié)果運(yùn)氣太好,擋都擋不住,發(fā)了一筆小財(cái)。但是哥,都別忘了,強(qiáng)龍不壓地頭蛇,你有幾個(gè)錢趕緊趕你的路吧,賭個(gè)什么勁兒???半人家跟上來,暴打一頓,錢搶光,這下好了,還不如不贏。這個(gè)道理,希望看書的同學(xué)都明白了,別貪小還不一樣要一邊偷人家田里的紅薯吃,一邊趕路?幸虧遇到了一個(gè)空空和尚,當(dāng)然這是。其實(shí)關(guān)鍵是后來碰上了郭威將軍,開始給郭當(dāng)跑腿的。后來郭一看,這小子有兩下子啊,于是才慢慢的開始重用。后來才有機(jī)會跟著的外守城的起碼也得2、3萬人吧,還就能攻下,你能嗎?不能,為啥?因?yàn)槿藦男W(xué)兵法讀書,練武騎馬,有根底。而你沒有,所以你現(xiàn)在,得老老實(shí)實(shí)地跟著學(xué)程序不是?那么學(xué)程序,就要老老實(shí)實(shí)地,把我所說的每一點(diǎn),都要自己親手打代碼出來試試看,別偷懶,偷懶你就失去了成功的機(jī)會。上面羅嗦那么多,就是希望你知道一個(gè)道理,收獲是需要付我勸你,還是多寫寫,寫到一遍成功。那么再往后看也不遲。我不我的鍵盤打字,希望你也別你的鍵盤,畢竟我打鍵盤好了,恭喜你按照約定看到這里,如果你沒有按照要求,同學(xué),學(xué)不好就不要了,當(dāng)然也需你悟性好,希望如此。前面我們學(xué)到了一些內(nèi)容呢,基本上可以讓一些小功能,總算是有一點(diǎn)智能的感覺了,但總覺得還是少點(diǎn)什么?恩,確實(shí),好像是有點(diǎn)遺憾。假我現(xiàn)在學(xué)要學(xué)習(xí)學(xué)的自然這一,我希望運(yùn)一個(gè)程序讓看看0到00自,樣寫int{return0;}101寫吧,請把這段代碼寫好,再次強(qiáng)調(diào),非常重要,一定要寫到100。運(yùn)行成功之后,繼續(xù)下文。int{intfor(i=0;i<10;{printf("%d\n",}return0;} 思。那么上面的for(i=0;i<10;i++),意思可以這么理解:在這種前提下多次執(zhí)行(剛開始i0;如果i10i1)。[1:]int[2:]for(i /*fori0,也就是為i0[3:]for(xx;i<10;xx) /*fori10,for那個(gè)printf*/[4:]printf("%d\n", [5:]for(xx;xxi++)/*i1。那么這個(gè)地方我們要注意了,我們會發(fā)現(xiàn)for括弧內(nèi),實(shí)際上是分號隔開了3部分,現(xiàn)在執(zhí)行的是第3部分,那么執(zhí)行完畢之后,會不會再執(zhí)行i=0,i0ii不需要再執(zhí)行了。那么執(zhí)行了這個(gè)i++之后,i的值變成了1,看下面分析。*/[6:]for(xx;i10;xx)/*執(zhí)行fori10,for那個(gè)printf,此時(shí)i值為1,當(dāng)然滿足了。*/printf("%d\n",for(xx;xx;/*i12for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i13for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i14for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i15for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i16for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i17for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i18for(xx;i</*執(zhí)行foriprintf("%d\n",for(xx;xx;/*i19for(xx;i</*執(zhí)行foriprintf("%d\n",i);for(xx;xx;i++)/*i110[33:]for(xxi [34:]printf("輸出完畢\n");/*最后一句話*/int{intfor(i=0;i<100;{printf("%d\n",}return0;}int{intfor(i=0;i<=100;{printf("%d\n",}return0;}2int{intfor(i=0;i<=100;{if(i%2=={printf("%d\n",}}return0;}么i還是從0變到100,但是只i對2取余數(shù)和1相等的時(shí)候,才輸出,那么這么做,是否可行呢?好了,上面幾段代碼敲下接,真必么?忽覺被了哥,正象話吃長,你int{intfor(i=1;i<100;i+={printf("%d\n",}return0;}int{intfor(i=100;i>0;i-=2)printf("%d\n",i);return0;}??!forfor能少!問為什么?這是企業(yè)開發(fā)規(guī)范的要求,按照我的要求寫,以后找工作你會更有希望一些,一定要3.學(xué)藝——七十二般變int{int sum=0;/*剛開始假設(shè)sum為0*/for(i=1;i<100;{sum+=}printf("sum=%d\n",sum);return0;}sum+=1;sum+=2;明白不?不明白?前面說了哦,那么sum=sum+2;明白不?這不是一個(gè)意思嗎?還是不明白?建議本書從頭再看到這里,謝謝。那么我們分析一下,for環(huán)之前,我們假設(shè)sum0,那么當(dāng)i1候,進(jìn)入循環(huán)執(zhí)行的是,sum+=1;也可sumsum1;那么此時(shí)因?yàn)閟um0,進(jìn)行完這一步,sum1sum1的基礎(chǔ)上又加上了2,那么再一次加上3,再一步加上四,是不是最終加到了99啊,然后執(zhí)行i++,可惜啊,i等于100的時(shí)候,進(jìn)不來了,這下慘了,結(jié)果不對了,那么怎么辦呢?很明顯,把i<100改為i<=100,就可以了。那么自己改吧,還等什么呢。那么,如果結(jié)合前面所學(xué)的輸入,我們可以把程序做的更靈活一點(diǎn),怎么做呀?好啦,現(xiàn)在我們不計(jì)算1100int{intintsum=0;intnumber;scanf("%d",&number);for(i=0;i<=number;{sum+=}printf("Resultis%d\n",sum);return0;}intmain(){intintsum=intnumFrom,scanf("%d",&numFrom);scanf("%d",&numTo);for(i=numFrom;i<=numTo;{sum+=}printf("Resultis%d\n",sum);return0;}3,8,一看結(jié)果,沒問題,沒錯(cuò),老師的代碼總是沒問題,但是你能不看書上的代碼自己打嗎?不能的話,8,3試試看?什么?不合法?怎么就不合法了?從8計(jì)算到3可以不?你既然是程序,你得想辦法幫我呀,于是,修改吧:int{intintsum=intnumFrom,scanf("%d",&numFrom);scanf("%d",&numTo);if(numFrom>numTo){for(i=numTo;i<=numFrom;{sum+=}}{for(i=numFrom;i<=numTo;{sum+=}}printf("Resultis%d\n",sum);return0;}int{intintsum=intnumFrom,scanf("%d",&numFrom);scanf("%d",&numTo);if(numFrom>numTo){for(i=numFrom;i>=numTo;i--{sum+=}}{for(i=numFrom;i<=numTo;{sum+=}}printf("Resultis%d\n",sum);return0;}int{intintsum=intnumFrom,scanf("%d",&numFrom);scanf("%d",&numTo);if(numFrom>{(}for(i=numFrom;i<=numTo;{sum+=}printf("Resultis%d\n",sum);return0;}numFrom=numTo;numTo=一個(gè)8一個(gè)3測試一下。假設(shè)83,numFrom8,numTo3,等到執(zhí)行numFrom=numTo;好了,numTo的值3,那numFrom新賦值之后,numFrom3;注意,此時(shí)numTo3,等到你執(zhí)行第二句numTonumFrom;的時(shí)候,實(shí)際上這兩個(gè)3forfor(i3;i3;i++)那么只有i3inttemp;tempnumFrom;/*temp8,numFrom8numTo3*/numFromnumTo;/*temp8,numFrom3numTo3numTo /*temp8,numFrom3numTo8int{intintsum=intnumFrom,numTo,scanf("%d",&numFrom);scanf("%d",&numTo);if(numFrom>{temp=numFrom;numFrom=numTo;numTo=temp;}for(i=numFrom;i<=numTo;{sum+=}printf("Resultis%d\n",sum);return0;}輕的學(xué)習(xí)壓力的,賺錢不賺錢能不能弄到稿費(fèi),根本不知道,這些代碼我都打了,你比我還痛苦嗎?打吧,看哥的書,int{intsum,numFrom,scanf("%d",&numFrom);scanf("%d",&numTo);if(numFrom>{}{}
printf("Resultis%d\n",(numFrom+numTo)*(numFrom–numTo+1)/printf("Resultis%d\n",(numFrom+numTo)*(numTo–numFrom+1)/return}貓吃老鼠問題:一只貓每天要抓很多老鼠,但這只貓自從參與貓游戲之后,喜歡上了貓游戲,每天讓抓到的1、3、5、7……求)第七章的迷好啦!沒寫完的回上面繼續(xù)寫,寫完的開始新歷程,說說我們作業(yè)遇到的問題,也許有些同學(xué)沖動已經(jīng)去查資料了,那更好,012345678101112131415161718012345678101112131415161718{if(i10)/*如果i<10,{}{}
printf("%d",printf("%d",{}{}
printf("return}不?不能,做程序嘛,就是如此,情況很多,要不斷地發(fā)現(xiàn)不斷的考慮,否則我題目怎么會叫“輸出也瘋狂”,感inti=20;printf("%d\n",i);printf("%d\n",printf("a%db\n",printf("a%5db\n",printf("a%-5db\n",printf("a%2db\n",printf("a%3db\n",printf("a%4db\n",對齊,數(shù)字表示寬度,如果小于實(shí)際寬度按照實(shí)際寬度,否則按照設(shè)定寬度輸出,如果寬度不足補(bǔ)空格。哦,原來說的輸出%llongprintf("|%-8.3f|\n",好啦,說得很簡單,還有很復(fù)雜的一套輸出,這里就暫且不提了,也許再下一版本的本書中會補(bǔ)充吧。但是作為本書的本意,是為了學(xué)習(xí)C#而寫的前期基礎(chǔ)或者為學(xué)習(xí)C語言的降低難度,所以一些可學(xué)可不學(xué)的僅僅為了考試的內(nèi)容或者一些基本上一輩子用不上的東西,我就不說了,基本沒用,什么?你準(zhǔn)備專門做C語言?以后做C語言開發(fā)?有志向,那么先麻煩你關(guān)于這個(gè)問順利地登上王位,王后帕西帕艾卻生下了個(gè)怪物米諾,于是國王不得不將這個(gè)怪物關(guān)在一個(gè)迷宮里,而他下的雅典,卻不得不每年進(jìn)貢少男少女給米諾吃。于是雅典王子泰修斯為了拯民,終于自薦作為供品被送給米諾。然而當(dāng)國王驗(yàn)收這些少男少女的時(shí)候,公主卻喜歡上了泰修斯。于是公主給王子一把寶劍,還給他一個(gè)線團(tuán),讓他進(jìn)去之后可以按照線路返回。經(jīng)過殊死搏斗,殺死了米諾,但是神卻指示王子必須放棄愛情。于是有了下面一int{}同學(xué)說,簡單,不就是做個(gè)forintmain(){intprintf("Pleaseinputthecountofoutputlines:");scanf("%d",&lineCount);for(i=0;i<lineCount;{}return}int{intprintf("Pleaseinputthecountofoutputlines:");scanf("%d",&lineCount);for(i=0;i<lineCount;{}return}int{inti,j,printf("Pleaseinputthecountofoutputlines:");scanf("%d",&lineCount);for(i=0;i<lineCount;{for(j=0;j<8;{}}return}單嘛!8改成10,那么能否每行輸入幾就輸出幾個(gè)呢?簡單,弄個(gè)變量嘛!好,那么改一下看看:int{inti,j,lineCount,width;scanf("%d",&lineCount);scanf("%d",&width);for(i=0;i<lineCount;{for(j=0;j<width;{}}return}恩,太簡單了。同學(xué)說了,我其實(shí)想的也是這樣,只是不知道該如何寫。同學(xué),咱能不能謙虛點(diǎn)?不會就是不會嘛,有思想int{inti,j,lineCount,width;scanf("%d",&lineCount);scanf("%d",&width);for(i=0;i<lineCount;{for(j=0;j<width;{if(i=={}{}}
printf("}return}**************************************************************************************************************************************************************************貓吃老鼠問題:一只貓每天要抓很多老鼠,但這只貓自從參與貓游戲之后,喜歡上了貓游戲,每天讓抓到的老1、3、5、7……等奇數(shù)第八章愛是含蓄的int{for(i0i{}return}int{{}return}恩,這樣看起來似乎比較合適,不會存在過度或者不足的情況了,那么如果姑娘一直不給反應(yīng)怎么辦?那哥也沒辦法!嘿嘿,int{inti=intaccept=10;while(accept==0){printf("%d\n",if(i%10==0){accept--}}return0;}那么這個(gè)例子呢?只是說明了一下whileforforint{charscanf("%c",while(c>='a'&&c<='z'||c>='A'&&c<={printf("%cc);/**/scanf("%c",&c);/*輸入的c值因?yàn)橐呀?jīng)用過了,所以需要再輸入一個(gè)。重新再來。*/}return}ca'&&c'z'||c>='A'&&c<='Z'這個(gè)表達(dá)式因?yàn)?&優(yōu)先||,所以這句話相當(dāng)于(c>='a'&&c<='z')||(c>='A'&&c<=int{charc;printf("%d\n",scanf("%c",printf("%d\n",c);return0;}碼值,發(fā)現(xiàn)輸出了兩個(gè),每次運(yùn)行不管輸入什么字母,第二個(gè)總是顯示10,那么這個(gè)是究竟是什么呢?自己去查一下ASCII表,看看是不是換行符,也就是我們常用的'\n'。此處需要特別注意,很多同學(xué)在此處出問題找不到原因。同學(xué)奇怪了,奇怪啊我明明沒有輸入這個(gè)換行符,哪來的換行符??!別別別,別說的那么早,同學(xué),你不敲回車,程序怎么知道你輸入過了?恍然大悟,噢!原來是輸入了一個(gè)字母,然后又敲了一個(gè)回車,然后程序知道你輸入完畢了,然后輸入的字母ab回車,會發(fā)現(xiàn)第二個(gè)scanf97和98scanfint{charc;printf("%d\n",scanf("%c",printf("%d\n",scanf("%c",printf("%d\n",c);return0;}int{charc;while(c>='a'&&c<='z'||c>='A'&&c<={scanf("%c",&c);if(c=={scanf("%c",}}return}int{{if(c=='\n'){scanf("%c",}}while(c>='a'&&c<='z'||c>='A'&&c<='Z');return0;}這個(gè)和上面的寫法基本上意思一樣,區(qū)別在于,這個(gè)代碼執(zhí)行到do的時(shí)候呢,至少能進(jìn)入循環(huán)體一次,所以如果是第一種代dowhilewhile學(xué)會了告白,是不是覺得,從此公主和王子過上了的生活?那是童話,實(shí)際上王子和公主,每天都要見面,日常的生活5個(gè)人圍成一圈玩數(shù)字游戲,1號喊1,2號喊2,依次喊下去,如果該喊7的倍數(shù)的話,不能喊7,要喊“過”,如果喊的數(shù)字含有7但不是7的倍數(shù)的話,要拍手。好了,輸出這幾個(gè)玩游戲的人如果從1喊到100的話,每個(gè)人應(yīng)該喊什么?好了自己寫寫吧!int{inti=for(i=1;i<=100;{if(i%7=={printf("%dSay:Pass\n",(i–1)%5+}elseif(i%10=={}{}}
:Clap\n",(i–1)%5+printf("%dSay:%d\n",(i–1)%5+1,return}好了,自己看看你的和我的輸出結(jié)果一樣嗎?你想的和的一樣嗎,不一樣沒關(guān)系,有自己的思路也很好。(i–1)%5+1是什么?這表示第幾個(gè)人?。坷胕的循環(huán)求出第幾個(gè)人該喊這個(gè)游戲了。int{inti0;*intpos0;/*注意下面寫法,逗號隔開的起始算做一句話,但每個(gè)部分都能執(zhí)行就好比我們變量的時(shí)候inti=30,j,k所以i1;pos1作為第一部分執(zhí)行一次,后面的i++,pos++在每次forfor(i=1,pos=1;i<=100;i++,{if(pos==6){pos=}if(i%7==0){printf("%dSay:Pass\n",}elseif(i%10=={}{}}
printf("%dClap:\n",printf("%dSay:%d\n",pos,return}簡單嗎?簡單?注意:71、72、737,看你如何解決呢?我沒有解決,留給你解決!還有,再變一下咯,每當(dāng)喊1、2、3、4、578,但是這個(gè)時(shí)候第三個(gè)人不喊,方向倒過去第一個(gè)人喊8,第五個(gè)人喊910。每次喊“過”或者拍手都要重新調(diào)換方向。好啦,好好的考慮考慮吧!此如果特想知道答案的,那么將在下一節(jié)——返璞歸真的最后,我再談這個(gè)答案,希望大家盡量爭氣,自己做出來。如果做不出來,那么我們來討論一個(gè)C60int{intcount=0;intsum=0;intscore;while(count<60){
scanf("%d",&score);if(score>=0&&score<=100){}{}}
sum+=score;countprintf("已輸入%2d個(gè)同學(xué),總分為:%4d\n",countsum);
printf("同學(xué)總數(shù)%4d\n:總成績?yōu)椋?4d\n平均分為:%4d\n",count,sum,sum/count);return0;}下面我們再看看一些需要注意的問題,數(shù)學(xué)做題游戲(隨意生成一個(gè)表達(dá)式,然后要求輸入答案,并判斷答案是否正確)。那么要只做加法,那還好說,可是這太單調(diào)了,那么,如果想有時(shí)候加有時(shí)候減,這就有了隨機(jī)性。我們就不得不談?wù)勲S機(jī)數(shù)。那么Cint{return0;}int{printf("%d\n",printf("%d\n",printf("%d\n",return0;}也許你的機(jī)器不一樣呢?或者說,我這都是在騙你呢?哥又不是沒騙過你,盡信哥不如,哥不是,哥只是曾經(jīng)的一int{srand(1);printf("%d\n",printf("%d\n",printf("%d\n",return0;}intmain(){printf("%d\n",return}注意這里又多了一個(gè)頭文件,此頭文件如果再次用到,在后面的代碼中也將不再提醒。我們可以通過time函數(shù)得到時(shí)間,當(dāng)然這個(gè)時(shí)間,只是一個(gè)很大的整數(shù)(long類型),這個(gè)值是返回的距離1970年1月1日0點(diǎn)到現(xiàn)在的時(shí)間的總的秒數(shù)。那么有了這int{printf("%d\n",printf("%d\n",printf("%d\n",return0;}int{intfor(i=0;i<100;{}return}int{inti;return0;}srand(time(NULL));使用了多次。而程序的執(zhí)行速度是非??斓?,那么就會有很多次取得的時(shí)間是一樣的,因?yàn)樵谝幻腌娭畠?nèi)啊。所以每次產(chǎn)生隨機(jī)之后,使用的第一個(gè)隨機(jī)數(shù),和我們srand(1);多運(yùn)行兩次有何區(qū)別?能想通int{inti;srand(time(NULL));for(i=0;i<100;i++){printf("%d\n",}return}int{inti;srand(time(NULL));for(i=0;i<100;i++){printf("%d\n",rand()%}return}1010,09。哎,經(jīng)歷如此多的周折,才知道如何得到算,那么我們需要兩種運(yùn)算符(+)和(-),那么我們?yōu)榱穗S機(jī)產(chǎn)生,我們采用隨機(jī)數(shù),如果為1,我們做加法,0則做減法。那么,int{intcount=0;/*正確次數(shù)*/intright/*錯(cuò)誤次數(shù)*/interror/*運(yùn)算符*/charc_operator;intnumber1=0;intnumber2=0;/*計(jì)算結(jié)果*/intresultintinput_result=/*隨機(jī)*/while(count<100){
/**/number1rand()100;number2rand()100;if(rand()%2==1){}{}
c_operator=result=number1+c_operator='-result=number1- ",number1,c_operator,number2);scanf("%d",&input_result);if(input_result==result){}{}
righterrorprintf("共做%3d題,正確%3d題,準(zhǔn)確率%3d%%\n",righterror,rightright*100(right}
}
printf("考試結(jié)束:共%3d題,正確%3d題,準(zhǔn)確率%3d%%\n",righterror,right,right*100(rightreturn0;100intmain(){longinti,x,y,for(i=1;i<100000;{比如開方等于然后*39而開方取整數(shù)也是而*310就不成立x=sqrt(i+100); /*x為加后開方的結(jié)果*/y=sqrt(i+ /*y為加后開方的結(jié)果if(x*x==i+100&&y*y==i+268){printf("%ld\n",}}return}OK,運(yùn)行一下看看。答案: 同學(xué)說,不是吧,,這代碼你不是抄的吧。是的-_-!,被你發(fā)現(xiàn)了,不過沒關(guān)系,我又沒說這種寫法好。這是我在一個(gè)叫做《C語言經(jīng)典誤人算法100例》中看到的,看完之后,感慨萬千,真的是經(jīng)典。a+268==b*b+168==c*看似沒什么問題之后,我們再來分析:拋開a不考慮看后面等式:c*c–b*b==168;這個(gè)等式應(yīng)該沒有錯(cuò)。按照數(shù)學(xué)分解的方法,可以轉(zhuǎn)換成:(cb)(cb)168;所以我們通過簡單的考慮,c–b01,那么cb168。如果c–b2,cb1682;,c–b168仔細(xì)分析的話,c–b13c–b13cb1681212c–b1310cbx,c–by;c(xy)2;b(xy2;計(jì)算c和b,都是需要xy2,這就對xyy113,而且xyint{int/*x表示兩個(gè)數(shù)a和b相加的和,y表示相減的差*/intx,y;for(y=1;y<13;{if(168%y==0){x=168/if(x%2==y%{b=(x-y)/2;printf("%d\n",b*b-}}}return}運(yùn)行試試看?算到這里,你還需要說什么呢?希望通過這個(gè)問題,大家能養(yǎng)成好習(xí)慣。解決問題,要抓住主要,一針見血。千萬不要僅僅表面分析問題,從1循環(huán)到10萬,沒有理由的嘛!你為什么是循環(huán)到10萬而不是10萬零1呢?做事要講個(gè)因?yàn)樗?,做程序員更應(yīng)該懂得因果。不要憑著來做事,程序來不得半點(diǎn),程序只需要理由。第九章文明時(shí)代而一切者多少年來在歷史的長河,也干了同樣一件事,就是吃著這些糧食!但是還有一部分人,雖然也是吃著這些糧食,但是他們?yōu)樯鐣陌l(fā)展做出了貢獻(xiàn),做出貢獻(xiàn)的,不一定都是科學(xué)工作者,也有杰出的者。那么人類的文明時(shí)代的標(biāo)志,不僅分任務(wù)!校長感覺自己是,不能讓手下這幫人都閑著吧。于是校長開始分任務(wù)了。好了,來了,問校長:“校長啊,這個(gè)1+21+2于3,校長趕快回:“啊,這個(gè)答案等于3?!币宦牐杏X不錯(cuò):“嗯,不錯(cuò)不錯(cuò),你這個(gè)大學(xué)管理的不錯(cuò),看來不會誤人啊,繼續(xù)努力,下次我來要考考你2+3等于多少?!薄笆?!是!是!”校長擦了滿頭汗,心里說,幸虧這老師算的不錯(cuò)。intadd(inta,int{intc=a+b;returnc;}int{intnum1=12;intnum2=29;intsum;sum=add(num1,num2);printf("%d\n",sum);sum=add(8,7);printf("%d\n",sum);sum=add(num1,4);printf("%d\n",sum);return0;}main函數(shù)呢?不再考慮加法的計(jì)算了,這個(gè)任務(wù)交給另外一個(gè)函數(shù)去做,那就是add函數(shù),add函數(shù)前面的時(shí)候,intaddaddintaintb)是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國戶外運(yùn)動光學(xué)產(chǎn)品行業(yè)并購重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國智能卡芯片行業(yè)全國市場開拓戰(zhàn)略制定與實(shí)施研究報(bào)告
- 新形勢下風(fēng)機(jī)塔架行業(yè)可持續(xù)發(fā)展戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國產(chǎn)業(yè)園區(qū)物業(yè)管理行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 建設(shè)書香校園活動方案
- 校園西裝調(diào)查問卷
- 建設(shè)功臣事跡材料
- 2025年教育學(xué)試題答案
- 食品保鮮膜知識培訓(xùn)課件
- 西藏林芝市2023-2024學(xué)年九年級上學(xué)期期末考試化學(xué)試題
- 專項(xiàng)債券培訓(xùn)課件
- CNAS-CL01-G001:2024檢測和校準(zhǔn)實(shí)驗(yàn)室能力認(rèn)可準(zhǔn)則的應(yīng)用要求
- 校園重點(diǎn)防火部位消防安全管理規(guī)定(3篇)
- 臨時(shí)施工圍擋安全應(yīng)急預(yù)案
- 2024城市河湖底泥污染狀況調(diào)查評價(jià)技術(shù)導(dǎo)則
- MT-T 1199-2023 煤礦用防爆柴油機(jī)無軌膠輪運(yùn)輸車輛通用安全技術(shù)條件
- 軸聯(lián)軸器離合器解析課件
- 一年級上學(xué)期語文期末試卷分析一年級上冊語文試卷
- C4支持學(xué)生創(chuàng)造性學(xué)習(xí)與表達(dá)作業(yè)1-設(shè)計(jì)方案
- Q∕SY 01330-2020 井下作業(yè)現(xiàn)場監(jiān)督規(guī)范
- 醫(yī)院關(guān)于不合理醫(yī)療檢查專項(xiàng)治理自查自查自糾總結(jié)
評論
0/150
提交評論