有趣的c好玩的程序設(shè)計(jì)cc++_第1頁
有趣的c好玩的程序設(shè)計(jì)cc++_第2頁
有趣的c好玩的程序設(shè)計(jì)cc++_第3頁
有趣的c好玩的程序設(shè)計(jì)cc++_第4頁
有趣的c好玩的程序設(shè)計(jì)cc++_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.功能:求三個(gè)整數(shù)的平均值。程序如下:#include<stdio.h>/?載入頭文件stdio.h*/voidmain。/?主函數(shù)main*/(inta,b,c,d;/?定義a,b,c,d為整型變量?/a=105;b=75;c=85;d=(a+b+c)/3;printf("d=%d\n",d);/*顯示"d=某數(shù)"并換行,某數(shù)是d的值?/getchar。;/?等待用戶,按任意鍵退出?/return0;).功能:由鍵盤輸入多邊形的邊數(shù),求其內(nèi)角和。程序如下:#include<stdio.h>voidmain()(/?辨別多邊形是否成立,不成立重新執(zhí)行do-while語句間的命令?/do(intx;printf("n=");scanf("%d",&x);/*由鍵盤輸入x的值?/printf("%d\n",(x-2)*180);/?顯示內(nèi)角和,公式為(x-2)*1807/?辨別多邊形是否成立,不成立顯示“Error”,成立顯示“Right”*/if(x<=2)printf("Error\n");elseprintf("Right\n");}while(x<=2);/*do-while語句?/getchar();return0;).功能:由鍵盤輸入兩個(gè)數(shù),顯示器上顯示較大數(shù)。程序如下:#include<stdio.h>intbig(intjnt);/*創(chuàng)建整型變量函數(shù)big*/voidmain()(intx,y;scanf("%d,%d",&x,&y);printf("bigis%d\n",big(x,y));/?輸出big函數(shù)的值,因?yàn)閙ain函數(shù)與用戶自定義函數(shù)big無關(guān)系,所以printf后的輸出項(xiàng)表是big(x,y),而不是big(n1,n2)*/getchar();return0;)intbig(intn1,intn2)"用戶自定義函數(shù)big*/(if(n1>n2)returnn1;/?返回n1值?/elsereturnn2;/?返回n2值?/).功能:由鍵盤輸入ー個(gè)等腰三角形的層數(shù),畫一個(gè)這樣的三角形。程序如下:#include<stdio.h>voidmain()(inti,j,n;printf("n:");scanf("%d",&n);for(i=1;i<=n;i++)/?循環(huán)n次,每次輸出一行?/(for(j=1;jv=n-i;j++)/?輸出該行前面的空格?/printf("");for(j=1;jv=2+1;j++)/?輸出該行中的星號(hào)*/printf("*");printf("\n");)getchar();return0;)注釋:不能輸入太多的行數(shù),如1000〇。.功能:由鍵盤輸入一個(gè)最大值,求2到這個(gè)最大值中的所有質(zhì)數(shù)(素?cái)?shù))。程序如下:#include<stdio.h>#include<math.h>/*數(shù)學(xué)文件?/voidmain()(intn,m,flag,i,j,num=1;printf("n:");scanf("%d",&n);printf("2-%d:\n",n);for(i=2;iv=n;i++)/?循環(huán)查找質(zhì)數(shù)?/(flag=1;m=(int)sqrt(i);for(j=2;j<=m;j++)if(i%j==0)/?條件為真時(shí)表示不是質(zhì)數(shù),退出仍「循環(huán)ッ{flag=0;break;)if(flag==1)/?條件為真時(shí)表示i是質(zhì)數(shù)?/(printf("%4d",i);if(num++%10==0)/?每行最多輸出10個(gè)數(shù)?/printf("\n");))printf('*\n");getchar();return0;).功能:顯示保護(hù)屏幕。程序如下:#include<stdlib.h>/?綜合庫?/include<graphics.h>/?繪圖庫?/intmain()intgdriver=DETECT;/?定義圖象驅(qū)動(dòng)器為DETECT7intgmode=DETECT;/*定義圖象模式為DETECT*/longn;/*定義長(zhǎng)型變量n*/initgraph(&gdriver,&gmode,"E:\TC\bgi");/?進(jìn)入圖象狀態(tài)(警告:""之間的是圖象驅(qū)動(dòng)器的路徑,建議網(wǎng)友們?cè)O(shè)置為空,即只有"",或設(shè)為編程系統(tǒng)的路徑,例路徑是C:\TC,那么就是輸入C:\TC\bgi)*/sleep。);/?暫停一秒,以保證無誤差進(jìn)入圖象狀態(tài)?/for(n=1;n<=40000000;n++)/?畫40000000個(gè)圓?/(setcolor(rand());/?作圖顏色隨機(jī)?/circle(random(639),random(639),25);/?畫圓,位置隨機(jī),半徑為25ソ)getchar();return0;一段有趣的C程序最近在ー個(gè)論壇發(fā)現(xiàn)了一段簡(jiǎn)單的C程序很有意思,其中蘊(yùn)含著不少技巧,在此與大家分享一下。原程序如下:Sinclude<stdio.h>main(){char*xニ〃?b#**000**1#*******2*0***#ー??***5??一#一.****54.#*******2**6#****00**0? ;while(_=*x/4)__=8,printf(〃ゝn%*s"+!!,+,〃///"+*x++%4*2):}表面看起來很奇怪的代碼,我把它放到VC++6下面編譯,發(fā)現(xiàn)不能通過,提示”「‘未聲明,對(duì)以上代碼稍加修改,如下:ttinclude<stdio.h>main(int_){char*x="z*b#**000**I#*******2*0***#-.****5.*-#-.****54.#*******2**6#****00**0.#zz;whi1e(_=*x/4)=8,printf("\n%*s"++*x++%4*2);}細(xì)心的人已經(jīng)看出來了,就是在main函數(shù)的參數(shù)"」’前面加上了變量的類型:into此時(shí),以上代碼在VC6中就能夠正常的編譯和連接了。運(yùn)行的結(jié)果如下:是用“一/”組成的單詞“knocker”〇下面我們來分析這個(gè)小小的程序,不過為了看起來直觀,我把這個(gè)程序稍加改動(dòng):ttinclude<stdio.h>main(int_){char*x="*b#**000**l#*******2*0***#ー?****5?*一#一.****54.#*******2**6#****00**0.#〃;while(_=*x/4)(_-=8;printfC\n%*s*+!+,zz///"+*x++%4*2):首先來看看main函數(shù)參數(shù),這個(gè)參數(shù)的名稱比較奇怪"」’,我們看著有些不習(xí)慣,但它確實(shí)是合法的變量名稱。另外,本來我們常見的main函數(shù)一般都不帶參數(shù),如果有參數(shù)是因?yàn)槌绦蛳M幚砻钚懈袷较逻\(yùn)行這個(gè)程序所需要的參數(shù),一般是這樣的:main(intargc,char**argv),第一個(gè)參數(shù)argc表示參數(shù)表中參數(shù)的個(gè)數(shù),argc是ー個(gè)char型二維數(shù)組,保存著參數(shù)字符串。舉個(gè)例子,如果我們?cè)诿钚邢螺斎朊?dir-sc:\此時(shí),argc的值為3(包括命令本身),argv[〇]指向字符串:dir,arg[l]指向字符串:-s,arg[2]指向字符串c:'。那么既然main函數(shù)的參數(shù)通常要不沒有,要不就是兩個(gè),而這個(gè)程序只有一個(gè),這樣做是否合法呢?答案是肯定的!我在《關(guān)于C語言中的變量》中提到過,函數(shù)中的參數(shù)是保存在堆棧中的,所以這就涉及到ー個(gè)誰來平衡堆棧的問題,是調(diào)用者還是被調(diào)用者。在使用VC6編譯器的時(shí)候,如果函數(shù)沒有特別的聲明,默認(rèn)是調(diào)用者清理堆棧。換句話說,運(yùn)行時(shí)庫(runtime)調(diào)用main函數(shù)的時(shí)候,只傳遞ー,個(gè)參數(shù)給main函數(shù),這?點(diǎn)它自己是知道的,當(dāng)main函數(shù)調(diào)用結(jié)束以后,它在平衡堆棧的時(shí)候,只清除掉ー個(gè)函數(shù),因此不會(huì)出現(xiàn)任何問題。我們接著往下看,下面定義了一個(gè)char型指針變量x,指向一個(gè)字符串。接下來是while語句,while(_=(*x)/4),但表達(dá)式ー=(*x)/4的值不為〇的時(shí)候就執(zhí)行while的循環(huán)體,然而表達(dá)式ー=(*x)/4是ー個(gè)賦值語句,它的值又是多少呢?在這種情況下,通常賦值號(hào)右面的表達(dá)式的值就是整個(gè)表達(dá)式的值。第一次執(zhí)行這個(gè)語句的時(shí)候,x指向字符'*',對(duì)應(yīng)的值為42,以此類推,當(dāng)x=0時(shí),也就是字符串結(jié)束的時(shí)候,循環(huán)結(jié)束。接下來在原來的程序中是:=8,printf("\n%*s"+!!.+.”///"+*x++%4*2);這里的逗號(hào)作用有些類似分號(hào),但是逗號(hào)兩側(cè)組成的是一條語句,而分號(hào)則是兩條語句。我們仔細(xì)看printf這條語句,它的格式字符串為:"ヽn%*s”,其中%*s很少見,很多人不知道這是什么格式,不過我們可以在MSDN中找到這樣的描述:Ifthewidthspecificationisanasterisk(*),anintargumentfromtheargumentlistsuppliesthevalue.Thewidthargumentmustprecedethevaluebeingformattedintheargumentlist.意思是說如果寬度用星號(hào)(*)來指定,則應(yīng)該在參數(shù)列表中提供一個(gè)int型參數(shù)作為寬度的值。這樣就清楚了,原來這個(gè)printf語句是用表達(dá)式ー+一來控制字符串“%*s”的寬度,也就是替換其中的(*)。在仔細(xì)ー看,原來格式字符串還沒有完!完整的應(yīng)該是:''\n%*s"+!!_。這就奇怪了,字符串怎么和!!ー相加呢?其實(shí)也不奇怪,在這里!!ー是對(duì)變量一作了兩次‘‘非”的操作,結(jié)果應(yīng)該是〇或1。要明確的是,字符串作為參數(shù)傳遞給函數(shù)的時(shí)候,只是把字符串的首地址傳遞給了函數(shù),所以字符串"'n%*s”的首地址就是字符‘'n’的地址,當(dāng)這個(gè)地址加1的時(shí)候,傳遞給printf函數(shù)的格式字符串就變成了"%*s”,所以這個(gè)+!!_的奧妙就在于控制換行!是不是很有創(chuàng)后、?當(dāng)然了,下面的代碼同樣有創(chuàng)意,就是printf語句要打印的字符串參數(shù):"一/ノノ"+*x++%4*2。經(jīng)過剛オ的分析,我們不難理解“ノー/一/"加上后面的表達(dá)式的用意了,同樣是控制輸出字符的個(gè)數(shù),是ー個(gè)“―/”,兩個(gè),還是三個(gè)。那么關(guān)鍵就是后面這個(gè)表達(dá)式了:*x++%4*2。其實(shí)慢慢的分析也不困難,先執(zhí)行?x%4*2,然后執(zhí)行x++。所以,當(dāng)在執(zhí)行while語句的時(shí)候,x會(huì)指向下?個(gè)字符!綜上所述,這個(gè)小程序就是利用ー個(gè)字符串來控制輸出的例子,里面運(yùn)用了很多技巧,對(duì)于初學(xué)者需要很好的理解,對(duì)今后的編程是很有幫助的!#include<stdio.h>intmain()(constshortintc1=49920;constintc2=1073742008;int(*pf)()=(int(*)())&c2;printf("%c%c\n",*(char*)pf()-19,*((char*)pf()+1)-49);return0;)運(yùn)行這個(gè)程序,屏幕上會(huì)出現(xiàn)ー個(gè):)很多人不懂其中的道理,在這里我給大家分析下代碼。先看這兩句:constshortintc1=49920;constintc2=1073742008;定義了兩個(gè)局部變量,數(shù)值轉(zhuǎn)換成16進(jìn)制為:constshortintc1=0xc300;constintc2=0x400000b8;其中變量c1的地址為:0X0012FF7C,占兩個(gè)字節(jié),C2的地址為:0x0012FF78J占四個(gè)字節(jié)。這兩個(gè)變量占據(jù)了連續(xù)的空間。變量賦值后,從0x12ff78開始的內(nèi)存單元存儲(chǔ)的字節(jié)碼為:B800004000C3〇對(duì)應(yīng)的匯編碼是:

moveax,400000hmoveax,400000hret接下來的這句:int(*pf)()=(int(*)())&c2;分析如下:定義了一個(gè)函數(shù)指針,參數(shù)為NULL,返回值為int類型。這個(gè)函數(shù)指針,指向上面的匯編碼。這樣,后面執(zhí)行pf(),就執(zhí)行了這段匯編碼。繼續(xù)分析下面這句代碼:printf("%c%c\n",*(char*)pf()-19,*((char*)pf()+1)-49);先看?(char*)pf()-19這個(gè)表達(dá)式,執(zhí)行了了pf指向的匯編代碼,從匯編代碼看,這個(gè)函數(shù)調(diào)用后的返回值是0x400000,pf()前面的char?是把函數(shù)的返回值轉(zhuǎn)換成一個(gè)char?型指針,這個(gè)指針指向0x400000,前面再加個(gè)?號(hào),表示取0x400000地址的內(nèi)容,由于是char?型指針,因此從這個(gè)地址取ー個(gè)字節(jié)。*(char*)pf()-19表示的是從0x400000取出的字節(jié)內(nèi)容再減去19。接下來:*((char*)pf()+1)-49代表的意思是從0x400000+1的地址取出一個(gè)字節(jié)內(nèi)容在減去49。熟悉PE文件結(jié)構(gòu)的朋友一定知道,對(duì)于exe文件0x400000是內(nèi)存加載的基地址。也就是說,0x400000字節(jié)的內(nèi)容對(duì)應(yīng)的是0x4D,0x400001字節(jié)的內(nèi)容對(duì)應(yīng)的是0x5A.這是我們常說的pe文件起始的兩個(gè)字節(jié),"Mご這樣,表達(dá)式?(char*)pf()-19的結(jié)果是0x3A,表達(dá)式?((char*)pf()+1)-49的結(jié)果是0x29察看ascii碼表,輸出就是我們看到的樣子??偨Y(jié):別看ー個(gè)這么小的程序,但是其中涉及的知識(shí)面比較廣不過在F8我用gcc編譯通過,運(yùn)行的時(shí)候出現(xiàn)的提示是:Segmentationfault原因我認(rèn)為是編譯器的ASCII不兼容,是嗎?ー個(gè)有趣的C程序關(guān)鍵詞:C程序最近總做些無聊的事,迷迷糊糊。在論壇上看到ー個(gè)有趣的C程序,有點(diǎn)意思,寫下來。main(_){for(putchar(_++["J!Mpwf!Zpv\1"]-1););}輸出的是:ILoveYou可以寫成如下形式:#include<stdio.h>main(intargc)(inti;char*s=*'J!Mpwf!Zpv\V,;for(i=O;putchar(s[i]-1);i++)}或者用指針形式:main()(inti;char*s="J!Mpwf!Zpv\1";while(putchar(*s-1))s++;return0;解釋:_是變量名,c語言默認(rèn)類型為intmain(intargc)(for(-argc;putchar(argc++["J!Mpwf!Zpv\1"]-1);))main(intargc)(for(-argc;putchar(argc["J!Mpwf!Zpv\1"]-1);argc++)1)程序執(zhí)行時(shí),不帶參數(shù),argc==1,所以main()|inti;for(i=O;putchar(i["J!Mpwf!Zpv\1"]-1);i++))main()(inti;char*s="J!Mpwf!Zpv\1";for(i=0;putchar(i[s]-1);i++)ー個(gè)用數(shù)組和下標(biāo)實(shí)現(xiàn)的表達(dá)式可以等價(jià)地用指針和偏移量實(shí)現(xiàn)。即,如果pa是ー個(gè)指針,則pa[i]和?(pa+i)的含義ー樣。i[s]==*(i+s)==*(s+i)==s[i]main()(inti;char*s="J!Mpwf!Zpv\1";for(i=0;putchar(s[i]-1);i++)1)下面的這一段程序是我見過的最有趣的程序之一,如果和你編譯運(yùn)行的話,他能過計(jì)算pi的前800位數(shù)值。到現(xiàn)在還沒有見過多懂這個(gè)這段程序的人#intelude"stdio.h"Inta=10000,b,c=2800,de,ef[28001],g;Main()(F(;b-c;)F[b++]=a/5;For(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)For(b=c;d+=f[b]*a,f[b]=d%-g,d/=g-,-b;d*=b);)而結(jié)果是這樣的:31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185#include<stdio.h>main(intk){floati,j,r,x,y=-16;while(puts(,,,,)Jy++<15)for(x=0;x++<84;putchar(H.:-;!/>)|&lH%*#M[k&15]))for(i=k=r=0;j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);return0;1#include<iostream.h>intmain(){intj,k,i;do{coutくく“Inputthewide:";cin>>i;if(i>20)coutくく"Toolong!ReInput!\n";}while(i>20);for(j=l;j<=i;j++){if(j==lIIj==i)for(k=l;k<=i;k++)coutくく〃*”;elsefor(k=l;k<=i;k++){if(k==lIIk==i)coutくく"*";elsecout<<"";cout?endl;)cin.get();cin.get();return0;)#include<stdio.h>main(intk){inti,n=20;for(i=0;i<n;i++)//n-printfreturn0;)最小程序main()(}機(jī)器碼程序C語言有趣的編程2008-03-1713:15原程序如下:elOO33f6bf020b510f3a58cc85025068131cbeIfbeal1bf01ellb657b8111bb21138974b4b4879f9ad86eO8bc8bdffffe820el3403d0174la7f3aaebf32dff050e8f05af7d88bd8268a1aael4f4a75f9ebdecb57bb21138bcl40f727f7f58bfbba1114f4f4ael683957ff9528bc5f725f7372bc895f7652f737952be8feefeel8110796c66fe10746dO14dldldle579ec5ab8111ff74b4b48el9b3bdO75f75fc383f783a65d5982cdb284246957a9c5caaalbelb44f52b4923fab6e9ea8Idc63fce6aelaebb5f7b10b8b4f78elcde2bf364e399d79293faf9365216fb5e8e5a6c2e9bO43d3a3ele6cfd3fdfdcbdl4c5eeO635886bb3e9cl20becc91a3478170b3elffd6la9ec2c912e74eadf45fe330e9939d7e8f9f4d244e8d722e218bee2ce8825cf304aa829ae3f47c62d85e9735413be6eO3465e231e2508a89185fce709935f42bfeb7aedOca5228d22a5b7fOe24a9081be7abede5dbcO6a2e55738be60cbacbaa53b9dfl7738e263a684dl3caf49d86a45a276602112cOc244f25ebbe537a92be27bec4a8c4cf2f7a958712bba6dd66ae56046eOdae5b990e5a3e293f77f316058fOc488104e3ca3ee4e11558fa92ebdbad7a9cfe2acdb5a2896da87ae91912de35eeadf69571677140cedl2e316de2c5cl9cd86a769b4ae83644d676d305ffd4lbacIf326531bf55e2de26ba455el5d5e16ed97486c77fb8186ef918bdd4f48bdeIde2f7bad47753894b3ede2786lcdO178948dla68dd42b544e8fbOe3102el6bla7578ea219113cOcf78aOabf335c6b4c8908dd745e7e329c5ba4ba521064f54a50b7ec462215238430815cdf615a8f67e342c463576df72692a3Ife53a5054418487c269033829c91bOe35bab785ddf99eOb9fc536acd94991ab20a2634889ce5c6064fOe37463d9a8383bd3e64c8c23344e2051935e6db47a229b4cf2d3e38cc4f836f4740f4f8459b83f383631dO0178283de67f96277e3a5903bd9ecf35596b8d9db7955fle58c5ef2e52ebOb6ee28125e3be938eb5dd5b46f9afed612cfc9IdfOf73b162dc658738de95fe3d7fd5ab6al944dla8ffebb7680c78683b6b9fdlceOcc32eaOe3f02fb3e36b29el27851cea6ddfb3a3ed654a9a593b54e4baee4099e27fO4d3bc4c46b7e557lbIfIfbb8086f5b7ef7352bf2cc7e422edab7812f3903eeecc6cebf3816c68bld4578b2ff683bOe43cc433dfbldl9198le81a5e2599ff48cb6728a78cf6ea3b2Ife455d9d323fO7c5e5f68618b45daId91ec8d4eeala388594aaace46df24f6c4e5928e9a4e83el73e8cf2a5c2b7efl3028ae628lae4863bcebe96aa7feb87cd8b962d9597aaOla43629a9e4fff8ed9e49fced6a47079cd65fa2e921429f76c744b496080bbff41bb2de4b760333f98779a1eea6a3dabebae9f372f47cc3592a644a4c8e4d0c85493cebd69bbb943212cc4ea4a5c3f7560f2b491ca982e3e4e9ae9a620b97650ed47e9fe6d4134132f282f4ef4dae3c786ce502bl79874598a4d4c3b329c24a8beda654e2lb316260ff2cIde51a21015b24e5cc2d83faa2f38a512724ac7447c91d4bebaf2e5357052fbb4a2df89deffc49673c9cedd3c98e5cde8edl3bde8ce54e53a28bf9e991ddd6df6e74dldd34608f9e327f3bec79a383e5664578b42f1c507b7a97bO9d2dcdd8a26cd7d8c4c5a8a4cf9a4e57f11f92c6c92e9b5cb56898cbef664fa2543fa6fe2c83a18a8e597fOe9f4c286e62b44674ab9349ed5f334262d48ale5b3167cde5b03d716d83fd362069ea1c3e6e6de99aa7115b598aIf438352e5c9ea5d8c6a69c73eb4e3b88a55fbl6e275f35c28c9b6cc3f8e5e2e5b9d611d68bfa5c8c71eb45dbf36c9f16466151eddffbbe5fbcOc4le646898479309472dfd4cdIf7f72c6822e79474e8c4be614a2c7e236df76fda4b64edb96403b8bb5d48564c602cad9d27e62d1499824bbe9fa94b5db7c98ebb13a7bO79Id7ec545aa2049e646beff9d6405dcec65adf2386bed7ad6b2c72e6aa6124bff55e660203ba77fb909d574aadcea4d3ff14ffb535488f1ed4b56e67a15c8de28bff272d410If9942699e78e247829331dO2dbe9fe69293939alb80cO10c5378aO262a964f744b16c79c8dadacfb16e6ab15c6fdc9a41448624720c941ed61f89bf8ffba39506587eee6c3bdce95cOfba57ed8cd27fd2c743cllb89b951d5e3daef9e6e6dcfOaaa9a7fb874c5dcdff65368c736f9c6789ab677dbdf8168e6f53bb8ae5delafd4e6668cd6a4839f373c1dea2a657c220lb90e70e75dfcda562a53679fb358a9bbOaOa5c3376f8072be52308de7269f7a64d374145d86897f2aa1cal6c7c9d327dad15bl53e333e73f8aede949d4cfde96223736119d7ffO4deO6231blc769c479e757ac201e83c6a8c32cb52633668f4102b9c214fdf5d60923991e770e2f9c97dca4833f21dd6cf232e613a9fbac3f94e7eaedefe789714a723aed233d77b5edd5Idf6a499faef98dd29880b67ca3e7a262967b8ebf7b819f9ace3f12402e25db8416dd2e86ff4b27ee7bb5eb4146af329bla457d5a8176f87a4745b9b1779flec33c8e7d3fOIdb27ea84d957f5f9d5la5a45f441c6d3feb662acOe85be7ec3cbd50adfl539d2e459ad87d2c17a86e1548133953ed3d78e804adf3a65a33e2efaca7944aIfb4d87e478a8edee77e34cl69e81d7f6aaa6658183124721322348a563687dfc2d8e3f71a25f25e8368b8d478fdc945dl5579cl9f1384lbc85db95dO7c64962051e84fc4eO5eee478a11acfb9eObb40db86841293b9c9f29c6347c9e868ebad13efa6d3fa645b585627fca5deO30be3e105dec1728e881855518e95a3943aa8fl96f2f295c97de47db9d6c63e8e7fOe89ae4a70f8fl4754d32d327cefbb9ab4lb02bd6dde730ba275e8b3c7f5dO31d7d28abOac1c6d603af7c2dble6d7f68f3588e57fe8cc3c268134aO32a325186e73b2aOflcb8661e7658b7698196fe8e4cO629ba3cc185e4012972bdO1579de19eadf7a592fb5d739e8fc52e26fl3aOa5d9lb88934d30c82df5db55ea856fa3fdebde91557156aa3a33e8ead2ddaaOca757c578bc5cbbId2c8ec6962ee92e6d59837d6472ca802e6a4fff6f2d5le74ba346e98625aa4ee948eO7ff532473e7c43d828c41c11Idbd333b5ca1343342blaOe96157ed9d3c23d445b26e816eaf3e6790be59a54534534685dle97925ee7dcba4db12c3aa17619afb664076fe3a6996cO9114a7e9915dcc9ff67359eeb855972026ff99ec7241b527216eae8adOe9a9e4d3da6fc453c5f8b3a7al5d6693d8bl89402392cO90fbcbe9cle76b4e5105d57f7cd1e288bf449fefc433cefa4646al86be9da7a846666b92ec10c6ald4cl1833bldl218ad2f53e4b93359e9f3be3caf804c8ad576c3ba7e2979415754d17d597cff94adO6eeaOcbb2720fcflf59a8df4db65dfOId693b763582a4f35664395bea256bb37e758e821122a8ladbc83e674a37e7251d63dla1cf6ea3eb8da4b188a159ddOa484963ecd3f93a30f3fb8f6e273eb52ea579395cfde6f48fbabd2a970b4e2238d7286a8fa7898Idc5feea6f8a51882bb758bOcaae408a33327516cOd4b7da2aa7bbadf7ea8848985abed3dle61697c380ab73ac321141Ifd5daa0ded96eeaalfc306ef116027a25feb5fb9358234be10cO853e55b382fdeabaf7c3249f2d83943236deff7c877f4a807223cfa452eb3e19ead3aOb4a94la4058d9166dcO64c469ed604665cbdf5838051c3eaecadaO37e4cfabf76c247d948654a9f91ad1c79a4al7855ce8eb05445bdef51bdea2da74257ab3a4f2b3196a4d72765c9706ceblfc55dbedde781cf8d3438503c9858cc41aa9990affe4e9677eb37ed5418ce2cdl5d34cb7950ff289644eO51646a8b76e8c62c4eb506695814f8cf626baea5dd279ble4e929fcafdb3858ce652ddeb6933bd5dc739ef6ef9ea66a619c9fd554b4faald4109bff7e33eb82115299c7266eal368aadee487a2c7fd5b7278a6b37c713985eb9b9cbaa8a17b9dO515695c23b5a731c58b5c956e4c896f17efebb4d45aa7765el49b2e872ac3cfO6b71fa3c7cafcadf95522ecebed582f1cfa29cf73b4ad515cf86670595d703edl3fc4ebecflebe57786a93679f44fccb5b95ff74cOb7427726c9aa8ced39a2dbebfe9cb3eb3d4ale9b89e4d8a82774efa3eda5245dbbabdOfealecl629abdf75aa6230ccfl14729bla557ee5dlda98dec4cfab34ec2fba8dde4a59613ddd8443cebb5695ae97e23b49e59a6ba253ec48cl333524lb3317c38a8c123d3d4e5b752230674faO5d3a78ec6088a11357bl774232a8c3bb20fb985d6ace73a633590939eec7944242elbd78caa29534dd9abebe6156c4fd54a3bd145bbO8fec92cebe232493c44818a3e7454b78cc79dd356a4eddd5f9841ecablb684cclbb41c2le3e948eef28leb76e4f36blc6ee21817ecc420fc3540Ife46da418bbbed59eea8586afaf63d4136692c4ecdc2b6984ca232bd366816b81732648536214c4944756439163cecf5edeO6d447545304368cO78fcdO17beb813ec3balbf4daec5edOe55Ifc39125d865fl3459dedd985617433866499aebdbcl87ed275138ccb75f98fd43be2dbb74f3f8f2363da434a57ed226cced3f84Ifea56fO8018694d8841fc56fd413blee9274ff63b624eed585alb2a4e858cb24f79ef594ee733dbdc4ca60e74a4790b58ed712afO4edeba66ae482b3173a211c32ff5414776bd6584bbfeeed8af66abedd188ddaa9f8124c5f8729adbd5c82a80a916d7c6eda3bl91cOa99540b5b3a82a28c69216ab547df8935f3a17c845edbba9fOeO7123765338a5alccd4flf23c2b4643ald5baed7197aedd4c2el8f67Idd989dal799dlb207f4de7bff9fffeaa28ab8fceded4d5033e326fc3c33a2b2612f718fee974ce662bd9Ifal4aee067744d48bb73e5e2d18c3546899a88d92969e9dab3338ffb8eeleee78c67bb58495d3627ae5d2738a388efO1a5964bd79b42ee37e56f57754ce9782d5becb6d229e2a892959c652a3ebf8deOee4fbfb3acc8e7e13af88267d485ac7392936d290e83b3dO61laee68d2e8a8fba8eal9fdf12ab5472398de62af4c7ed4fb6b26eee81404037b773f2d881be29d299cO7325la3c92756ebdd77979ee99414cO4e9957669374ecbO297cdf61bO33adlc3faa4f7f9feeb2d3f0b92a5a3ac58825b8b9cc823573ael7b517570a674laeecbcacb31868ca77felbadcd687f3685fcb74faO11da69fa7987eee4d6b921dd3e70dbde84d46edl204aff632a28ed5425fe754eefde7a744baO4bf7f4e87422e99870fb252ef464577528854553ef163a2ee23c5436e9296675943107ecl49cd5ef997a585f8a11ef2f4f3d9ae22b2258fabefc69917a8c3f779fc93b54262393b3ef4785deaef5bdc5474cc4cd5eadbe8fba31f6e470fb6ea796d5ef5fad10803943974f10cclb8f8dcd4c634d8le8570416ca8ebdfef787f36c560a71291673fe753a2d40297daaa5c229230a6e56bef92246d9b20e57cb40bO38599ca7696a70d338efe2b2113eea2aefabf92b2e43Id65cfd6lbef835a5fe6c56216ca5e4ca639e453efc32d23d25e7e15548a8b73dbb8859b99ea27c42Ifa2773c5b9efde6dfa8f2146la3eedce4956Id292d703a76f75ac187ff2786eff5734928852d977a84e373d8610214ce274626b51708f1572f3elOOe81b2a99d8a63adlbd5aa8ade963cel471651fc87509b760el026293352fbbOdf70c5654a603bcd7a8294751f78a77f3993fel03e381660de6827b224762a2fd4086b275c33c2f3dfa9d9a99ael057713cce46940f9be467fb82e857f7dd38deab463815910bbel06f57dOb6abel8374le25d5737818bl6062cf4768d17d5ed23el08723e4f632645a61963f69257d52940d63bba637218025lb7elOaOee7f254afa6741946e3e8897ac65654a743134ebf97a56fel0b8992fac334dfa583a5aaa4la7462c84f3b789d7ee7eee2d69elOdl3040ea47823b858e3238f744e835ab744157d585bl6bleelOwq把著段代碼復(fù)制下來存為文本文檔,命名為1在DOS下用debug<l.txt生成一個(gè)可執(zhí)行程序。進(jìn)去是ー個(gè)3D游戲的旋轉(zhuǎn)界面,還有一段美妙的音樂,真是牛!??!快去看看吧在網(wǎng)上搜到ー個(gè)號(hào)稱是世界第一高手的程序,前些天又在本論壇搜到,很多網(wǎng)友都說看不懂,覺的挺難的,其實(shí)這個(gè)程序并不是深不可測(cè),我可以給大家簡(jiǎn)單解讀“下程序的意思.其實(shí)他是用機(jī)器語言寫的,除了結(jié)尾,主程序中都是0-f組成,也就是16進(jìn)制數(shù),大家可以看到程序左邊豎著一列都是以e開頭的,如elOO,這表示地址,應(yīng)該是基地址(CS)和偏移地址(IP)的和.以第一行為例:elOO后面的33f6bf020b510f3a58cc85025068131cbeIfbeal1bf01就是這個(gè)"段’’中的指令,至于什么是"段",在這不再詳述,每ー組16進(jìn)制數(shù)代表著特定的意義,如movbx2200H的機(jī)器指令是BB0022每一組占ー個(gè)字節(jié),大家數(shù)一數(shù),第一行有多少字節(jié),對(duì)是27個(gè)字節(jié),所以第二行的起始地址是ellb,以此類推.至于具體的每一句的意思,大家有了一定的匯編語言經(jīng)驗(yàn),就會(huì)知道了,因?yàn)樵贒OS中用debug命令可以看到匯編指令對(duì)應(yīng)的機(jī)器指令,如剛才說的movbx2200H的機(jī)器指令是BB0022程序最后wq應(yīng)該是debug的命令,現(xiàn)在可以肯定的是最后的q是degug的命令,退出的意思,現(xiàn)在大家是不是基本知道這個(gè)程序的意思或結(jié)構(gòu)了?這個(gè)世界第一高手無非就是把機(jī)器碼背了個(gè)滾瓜濫熟.聲音程序include<windows.h>include"dos.h"include"stdio.h"definetime1000/2definetimeO500/2definetimel1500/2definetime22000/2definetime33000/2definetime4250/2define_a262define_b294define_c330define_d349define_e392define_f440define_g494definea523defineb587definec659defined698definee784definef880defineg988definea_1047defineb_1175definec_1319defined_1397#definee_2568definef_1760defineg_1976intmain()(//titanicBeep(a,timeO);Beep(b,timeO);Beep(c,time1);Beep(b,timeO);Beep(a,timeO);Beep(b,timeO);Beep(e,time1);Beep(d.timeO);Beep(c,timeO);Beep(a,timeO);Beep(f,time);Beep(d,timeO);Beep(e,time1);Beep(a,timeO);Beep(b,timeO);Beep(c,time1);Beep(d,time4);Beep(c,time4);Beep(b,time4);Beep(a,time4);Beep(b,timeO);Beep(e,time1);Beep(f,time);Beep(e,time);Beep(b,time3);return0;)[討論]一個(gè)很有趣的程序ー個(gè)很簡(jiǎn)單的程序是:#include&It;stdio.h>#incude<conio.h>voidmain()(floatone,two=-1;fbr(one=0;one!=two;one++)two=one;clrscr();printf(Mstopat:%f*,one);(上面的程序就是檢測(cè)浮點(diǎn)數(shù)誤差,某ー個(gè)足夠大的浮點(diǎn)數(shù)加一后本身并沒有改變,即大數(shù)吃小數(shù)但有趣的是,程序還可以這樣寫:#include<whole.h>voidmain()floatone;one=0;fbr(;one==++one;);clrscr();printf("stopat:%f',one);兩個(gè)程序的結(jié)果都是:one=16777216.000000第?個(gè)程序很容易理解,但第二個(gè)就很難理解,發(fā)達(dá)式似乎記過成立喲首先看下面這段代碼,它在屏幕上的輸出你能讀出來么?#include<string.h>voidfun(char*w,intm)(chars,*pl,*p2;pl=w;p2=w+m-l;while(pl<p2)(s=*pl++;*pl=*p2--;*p2=s;))main()(chara[]=*ABCDEFG*;fun(a,strlen(a));puts(a);)答案:AGAAGAG現(xiàn)象:.在while第一次被執(zhí)行的時(shí)候,pl的內(nèi)容是“ABCDEFG”,p2的內(nèi)容是“G”此時(shí)pl<p2因而進(jìn)入該循環(huán)?.在while第二次被執(zhí)行時(shí),pl的內(nèi)容是“GCDEAG”,p2的內(nèi)容是“AG”,此時(shí)pl>p2,因而應(yīng)該結(jié)束循環(huán)?.好了,問題出來了,在這里程序沒有結(jié)束循環(huán),而是進(jìn)入了循環(huán),你知道這是什么原因么?PoSo在先前的話題里面狂踩腳印的同學(xué)們,還有沒有話要說呢?e#include<stdio.h>#include<stdlib.h>voidprint(void)(printf("1.findnum\n");printf("2.findroot\n");printf("3.detective\n");printf("4.bear\n");printf("5.diamond\n");printf("0.goodbye!\n");)intgetcn(intcn)(scanf("%d",&cn);if(cn<1||cn>6)exit(-1);elsereturncn;/*第一部分*/voidfindnum()|intsei;inti;printf("\n第一題:\nー只老鼠咬壞了帳本,公式中符號(hào)口代表是被老鼠咬到的地方.\n要想恢復(fù)下面的等式,應(yīng)在口中添上哪個(gè)相同的數(shù)字t\n");printf("\n3ロ?6237=ロ3*3564\n");printf("\npleaseentertheanswer.youhaveonlyonechanceAn");for(i=1;i<=9;i++)(if((30+i)*6237==(1〇?i+3)*3564)break;)scanf("%d",&sel);if(sel==i)printf("good\n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論