![有趣的c好玩的程序設(shè)計(jì)cc++_第1頁(yè)](http://file4.renrendoc.com/view/8940115f273b5d216cf6f2d3d29f4644/8940115f273b5d216cf6f2d3d29f46441.gif)
![有趣的c好玩的程序設(shè)計(jì)cc++_第2頁(yè)](http://file4.renrendoc.com/view/8940115f273b5d216cf6f2d3d29f4644/8940115f273b5d216cf6f2d3d29f46442.gif)
![有趣的c好玩的程序設(shè)計(jì)cc++_第3頁(yè)](http://file4.renrendoc.com/view/8940115f273b5d216cf6f2d3d29f4644/8940115f273b5d216cf6f2d3d29f46443.gif)
![有趣的c好玩的程序設(shè)計(jì)cc++_第4頁(yè)](http://file4.renrendoc.com/view/8940115f273b5d216cf6f2d3d29f4644/8940115f273b5d216cf6f2d3d29f46444.gif)
![有趣的c好玩的程序設(shè)計(jì)cc++_第5頁(yè)](http://file4.renrendoc.com/view/8940115f273b5d216cf6f2d3d29f4644/8940115f273b5d216cf6f2d3d29f46445.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.功能:求三個(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;
primf("d=%d\n”,d);/*顯示”d=某數(shù)”并換行,某數(shù)是d的值*/
getchar。;/*等待用戶(hù),按任意鍵退出*/
return0;
)
2.功能:由鍵盤(pán)輸入多邊形的邊數(shù),求其內(nèi)角和。程序如下:
#include<stdio.h>
voidmain()
(
/*辨別多邊形是否成立,不成立重新執(zhí)行do-while語(yǔ)句間的命令*/
do
(
intx;
printf(nn=n);
scanf(n%dn,&x);/*由鍵盤(pán)輸入x的值*/
printf("%d\n”,(x?2)*180);/*顯示內(nèi)角和,公式為(x-2)*1807
/*辨別多邊形是否成立,不成立顯示“Error”,成立顯示“Right”*/
if(x<=2)
printfCErrorNn'*);
else
printf("Right\n");
)
while(x<=2);/*do-while語(yǔ)句*/
getchar();
return0;
)
3,功能:由鍵盤(pán)輸入兩個(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ù)與用戶(hù)自定義函數(shù)big無(wú)關(guān)系,所以printf后的輸出
項(xiàng)表是big(x,y),而不是big(n1,n2)7
getchar();
return0;
)
intbig(intn1,intn2)/*用戶(hù)自定義函數(shù)big*/
(
if(n1>n2)
returnn1;/*返回n1值*/
else
returnn2;/*返回n2值*/
)
4.功能:由鍵盤(pán)輸入一個(gè)等腰三角形的層數(shù),畫(huà)一個(gè)這樣的三角形。程序如下:
#include<stdio.h>
voidmain()
(
intij.n;
printf("n:");
scanf("%d",&n);
for(i=1;i<=n;i++)/*循環(huán)n次,每次輸出一行*/
(
for(j=1;j<=n-i;j++)/*輸出該行前面的空格*/
printf("");
for(j=1;j<=2*i-1;j++)/*輸出該行中的星號(hào)*/
printf("*");
printf("\n");
)
getchar();
return0;
)
注釋:不能輸入太多的行數(shù),如10000。
5.功能:由鍵盤(pán)輸入一個(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;i<=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ù),退出for循環(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;
)
6.功能:顯示保護(hù)屏幕。程序如下:
#include<stdlib.h>/*綜合庫(kù)*/
#include<graphics.h>/*繪圖庫(kù)*/
intmain()
intgdriver=DETECT;/*定義圖象驅(qū)動(dòng)器為DETECT*/
intgmode=DETECT;/*定義圖象模式為DETECT*/
longn;/*定義長(zhǎng)型變量n7
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)7
sleep。);/*暫停一秒,以保證無(wú)誤差進(jìn)入圖象狀態(tài)*/
for(n=1;n<=40000000;n++)/*畫(huà)40000000個(gè)圓7
(
setcolor(rand());/*作圖顏色隨機(jī)*/
circle(random(639),random(639),25);/*畫(huà)圓,位置隨機(jī),半徑為25*/
)
getchar();
return0;
)
一段有趣的C程序
最近在一個(gè)論壇發(fā)現(xiàn)了一段簡(jiǎn)單的C程序很有意思,其中蘊(yùn)含著不少技
巧,在此與大家分享一下。
原程序如下:
Sinclude<stdio.h>
main(){char*x="*b#**000**[#*******2*0***#_.****5.*-#-
.****54.#*******2**6#****00**0.#”;while(_=*x/4)-
=8,printf('\n%*s"+!!,+,"http:///"+*x++%4*2);}
表面看起來(lái)很奇怪的代碼,我把它放到VC++6下面編譯,發(fā)現(xiàn)不能通過(guò),
提示".”未聲明,對(duì)以上代碼稍加修改,如下:
Sinclude<stdio.h>
main(int_){char*x=/,*b#**000**I#*******2*0***#-.****5.*-#-
.****54.#*******2**6#****00**0.while(_=*x/4)_-
=8,printf("\n%*s"+!!,+,"http:///"+*x++%4*2):)
細(xì)心的人已經(jīng)看出來(lái)了,就是在main函數(shù)的參數(shù)“.”前面加上了變量的
類(lèi)型:int。此時(shí),以上代碼在VC6中就能夠正常的編譯和連接了。運(yùn)行的結(jié)果
如下:
是用"_/”組成的單詞“knocker”。
下面我們來(lái)分析這個(gè)小小的程序,不過(guò)為了看起來(lái)直觀(guān),我把這個(gè)程序稍
加改動(dòng):
Sinclude<stdio.h>
main(int_){
char*x=〃*b#**000**I#*******2*0***#-?****5?*一#一
.****54.#*******2**6#****00**0.#〃;
while(_=*x/4)
{
_-=8;
printf("\n%*s"+!!,+,"http:///"+*x++%4*2);
}
首先來(lái)看看main函數(shù)參數(shù),這個(gè)參數(shù)的名稱(chēng)比較奇怪"_",我們看著有
些不習(xí)慣,但它確實(shí)是合法的變量名稱(chēng)。另外,本來(lái)我們常見(jiàn)的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è)诿钚邢螺斎朊睿篸ir-sc:\
此時(shí),argc的值為3(包括命令本身),argv此]指向字符串:dir,arg[l]
指向字符串:-s,arg[2]指向字符串c:\。那么既然main函數(shù)的參數(shù)通常要不
沒(méi)有,要不就是兩個(gè),而這個(gè)程序只有一個(gè),這樣做是否合法呢?答案是肯定
的!我在《關(guān)于C語(yǔ)言中的變量》中提到過(guò),函數(shù)中的參數(shù)是保存在堆棧中
的,所以這就涉及到一個(gè)誰(shuí)來(lái)平衡堆棧的問(wèn)題,是調(diào)用者還是被調(diào)用者。在使
用VC6編譯器的時(shí)候,如果函數(shù)沒(méi)有特別的聲明,默認(rèn)是調(diào)用者清理堆棧。換
句話(huà)說(shuō),運(yùn)行時(shí)庫(kù)(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)任何問(wèn)題。
我們接著往下看,下面定義了一個(gè)char型指針變量x,指向一個(gè)字符串。
接下來(lái)是while語(yǔ)句,wh下來(lái)_=(*x)/4),但表達(dá)式_=(*x)/4的值不為0的時(shí)
候就執(zhí)行while的循環(huán)體,然而表達(dá)式_=(*x)/4是一個(gè)賦值語(yǔ)句,它的值又是
多少呢?在這種情況下,通常賦值號(hào)右面的表達(dá)式的值就是整個(gè)表達(dá)式的值。
第一次執(zhí)行這個(gè)語(yǔ)句的時(shí)候,x指向字符',對(duì)應(yīng)的值為42,以此類(lèi)推,當(dāng)
x=0時(shí),也就是字符串結(jié)束的時(shí)候,循環(huán)結(jié)束。
接下來(lái)在原來(lái)的程序中是:
=8,printf("\n%*s"+”_/_/_/"+*x++%4*2);這里的逗號(hào)作用有些類(lèi)似分
號(hào),但是逗號(hào)兩側(cè)組成的是一條語(yǔ)句,而分號(hào)則是兩條語(yǔ)句。
我們仔細(xì)看printf這條語(yǔ)句,它的格式字符串為:”\n%*s",其中期s
很少見(jiàn),很多人不知道這是什么格式,不過(guò)我們可以在MSDN中找到這樣的描
述:
Ifthewidthspecificationisanasterisk(*),anintargument
fromtheargumentlistsuppliesthevalue.Thewidthargumentmust
precedethevaluebeingformattedintheargumentlist.
意思是說(shuō)如果寬度用星號(hào)(*)來(lái)指定,則應(yīng)該在參數(shù)列表中提供一個(gè)int型
參數(shù)作為寬度的值。這樣就清楚了,原來(lái)這個(gè)printf語(yǔ)句是用表達(dá)式_+_來(lái)控
制字符串“外*s”的寬度,也就是替換其中的(*)。
在仔細(xì)一看,原來(lái)格式字符串還沒(méi)有完!完整的應(yīng)該是:"\n**s〃+!!_。這
就奇怪了,字符串怎么和!!_相加呢?其實(shí)也不奇怪,在這里!!一是對(duì)變量一作了
兩次“非”的操作,結(jié)果應(yīng)該是?;?。要明確的是,字符串作為參數(shù)傳遞給
函數(shù)的時(shí)候,只是把字符串的首地址傳遞給了函數(shù),所以字符串〃\n96*s''的首地
址就是字符'\n'的地址,當(dāng)這個(gè)地址加1的時(shí)候,傳遞給printf函數(shù)的格式
字符串就變成了組*s〃,所以這個(gè)+!!一的奧妙就在于控制換行!是不是很有創(chuàng)
后!
當(dāng)然了,下面的代碼同樣有創(chuàng)意,就是printf語(yǔ)句要打印的字符串參數(shù):
〃_/_/_/〃+*x++/4*2。經(jīng)過(guò)剛才的分析,我們不難理解〃加上后面的表達(dá)
式的用意了,同樣是控制輸出字符的個(gè)數(shù),是一個(gè)“_/",兩個(gè),還是三個(gè)。
那么關(guān)鍵就是后面這個(gè)表達(dá)式了:*x++%4*2。其實(shí)慢慢的分析也不困難,先執(zhí)
行*x%4*2,然后執(zhí)行x++。所以,當(dāng)在執(zhí)行while語(yǔ)句的時(shí)候,x會(huì)指向下一個(gè)
字符!
綜上所述,這個(gè)小程序就是利用一個(gè)字符串來(lái)控制輸出的例子,里面運(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è):)
很多人不懂其中的道理,在這里我給大家分析下代碼。
先看這兩句:
constshortintd=49920;
constintc2=1073742008;
定義了兩個(gè)局部變量,數(shù)值轉(zhuǎn)換成16進(jìn)制為:
constshortintc1=0xc300;
constintc2=0x400000b8;
其中變量C1的地址為:0X0012FF7C,占兩個(gè)字節(jié),C2的地址為:0x0012FF78,占
四個(gè)字節(jié)。這兩個(gè)變量占據(jù)了連續(xù)的空間。變量賦值后,從0x12ff78開(kāi)始的內(nèi)存單元
存儲(chǔ)的字節(jié)碼為:B800004000C3o對(duì)應(yīng)的匯編碼是:
moveax,4OOOOOh
ret
接下來(lái)的這句:
int(*pf)()=(int(*)())&c2;
分析如下:
定義了一個(gè)函數(shù)指針,參數(shù)為NULL,返回值為int類(lèi)型。這個(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。
接下來(lái):*((char*)pf()+1)-49代表的意思是從0x400000+1的地址取出一個(gè)字節(jié)內(nèi)
容在減去49。
熟悉PE文件結(jié)構(gòu)的朋友一定知道,對(duì)于exe文件0x400000是內(nèi)存加載的基地址。
也就是說(shuō),0x400000字節(jié)的內(nèi)容對(duì)應(yīng)的是0x4D,0x400001字節(jié)的內(nèi)容對(duì)應(yīng)的是0x5A.
這是我們常說(shuō)的pe文件起始的兩個(gè)字節(jié)JMZ"
這樣,表達(dá)式*(char*)pf()-19的結(jié)果是0x3A,表達(dá)式*((char*)pf()+1)-49的結(jié)果是
0x29
察看ascii碼表,輸出就是我們看到的樣子。
總結(jié):
別看一個(gè)這么小的程序,但是其中涉及的知識(shí)面比較廣
不過(guò)在F8我用gcc編譯通過(guò),運(yùn)行的時(shí)候出現(xiàn)的提示是:
Segmentationfault
原因我認(rèn)為是編譯器的ASCII不兼容,是嗎?
一個(gè)有趣的C程序
關(guān)鍵詞:C程序
最近總做些無(wú)聊的事,迷迷糊糊。
在論壇上看到一個(gè)有趣的C程序,有點(diǎn)意思,寫(xiě)下來(lái)。
main(_){for(putchar(_++["J!MpwfIZpv\1"]-1););}
輸出的是:ILoveYou
可以寫(xiě)成如下形式:
#include<stdio.h>
main(intargc)
(
inti;
char*s="J!Mpwf!Zpv\1";
for(i=O;putchar(s[i]-1);i++)
)
或者用指針形式:
main()
(
inti;
char*s="J!Mpwf!Zpv\1";
while(putchar(*s-1))
s++;
return0;
)
解釋:
一是變量名,c語(yǔ)言默認(rèn)類(lèi)型為int
main(intargc)
(
for(-argc;putchar(argc++["J!Mpwf!Zpv\)
J
)
main(intargc)
(
for(-argc;putchar(argc["J!Mpwf!Zpv\1"]-1);argc++)
J
)
程序執(zhí)行時(shí),不帶參數(shù),argc==1,所以
main()
{
inti;
for(i=O;putchar(i["J!Mpwf!Zpv\1"]-1);i++)
J
)
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++)
J
)
下面的這一段程序是我見(jiàn)過(guò)的最有趣的程序之一,如果和你編譯運(yùn)行的話(huà),他能過(guò)計(jì)
算pi的前800位數(shù)值。到現(xiàn)在還沒(méi)有見(jiàn)過(guò)多懂這個(gè)這段程序的人
#intclude"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é)果是這樣的:
31415926535897932384626433832795028841971693993751
05820974944592307816406286208998628034825342117067
98214808651328230664709384460955058223172535940812
84811174502841027019385211055596446229489549303819
64428810975665933446128475648233786783165271201909
14564856692346034861045432664821339360726024914127
37245870066063155881748815209209628292540917153643
67892590360011330530548820466521384146951941511609
43305727036575959195309218611738193261179310511854
80744623799627495673518857527248912279381830119491
29833673362440656643086021394946395224737190702179
86094370277053921717629317675238467481846766940513
20005681271452635608277857713427577896091736371787
21468440901224953430146549585371050792279689258923
54201995611212902196086403441815981362977477130996
05187072113499999983729780499510597317328160963185
#include<stdio.h>
main(intk){
floati,j,r,x,y=-16;
while(puts('H,),y++<15)
for(x=0;x++<84;putchar(".:-;!/>)I&IH%*#,f[k&15]))
for(i=k=r=O;j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);
return0;
)
#include<iostream.h>
intmain()
{intj,k,i;
do
{cout?z,Inputthewide:〃;
cin>>i;
if(i>20)
cout<<,,Toolong!ReInput!\nz,;
}while(i>20);
for(j=l;j<=i;j++)
{if(j==l||j==i)
for(k=l;k<=i;k++)
cout<<〃*〃;
else
for(k=l;k<=i;k++)
{if(k==l||k==i)
cout<<〃*〃;
else
cout<</,〃;
cout<<endl;
)
cin.get();cin.get();
return0;
)
#include<stdio.h>
main(intk){
inti,n=20;
for(i=0;i<n;i++)//n-
printf
return0;
)
最小程序
main()
{)
機(jī)器碼程序
C語(yǔ)言有趣的編程
2008-03-1713:15
原程序如下:
elOO33f6bf020b510f3a58cc85025068131cbeIfbeal1
bf01
ellb657b8111bb21138974b4b4879f9ad86eO8bc8bdff
ffe820
el3403d0174la7f3aaebf32dff050e8f05af7d88bd826
8a1aa
el4f4a75f9ebdecb57bb21138bcl40f727f7f58bfbba111
4f4f4a
el683957ff9528bc5f725f7372bc895f7652f737952be8
feefe
el8110796c66fe10746dO14dldldle579ec5ab8111ff7
4b4b48
el9b3bdO75f75fc383f783a65d5982cdb284246957a9c5
caaalb
elb44f52b4923fab6e9ea8Idc63fce6ae7aebb5f7b10b8
b4f78
elcde2bf364e399d79293faf9365216fb5e8e5a6c2e9bO
43d3a3
ele6cfd3fdfdcbdl4c5eeO635886bb3e9cl20becc91a347
8170b3
elffd6la9ec2c912e74eadf45fe330e9939d7e8f9f4d244
e8d722
e218bee2ce8825cf304aa829ae3f47c62d85e9735413be6
eO3465
e231e2508a89185fce709935f42bfeb7aedOca5228d22
a5b7fO
e24a9081be7abede5dbcO6a2e55738be60cbacbaa53b9d
fl7738
e263a684dl3caf49d86a45a276602112cOc244f25ebbe5
37a92b
e27bec4a8c4cf2f7a958712bba6dd66ae56046eOdae5b9
90e5a3
e293f77f316058fOc488104e3ca3ee4e11558fa92ebdbad
7a9cf
e2acdb5a2896da87ae91912de35eeadf69571677140cedl
2e316d
e2c5cl9cd86a769b4ae83644d676d305ffd4lbacIf3265
31bf55
e2de26ba455el5d5e16ed97486c77fb8186ef918bdd4f4
8bdeId
e2f7bad47753894b3ede2786lcdO178948dla68dd42b54
4e8fbO
e3102el6bla7578ea219113cOcf78aOabf335c6b4c8908d
d745e7
e329c5ba4ba521064f54a50b7ec462215238430815cdf61
5a8f67
e342c463576df72692a3Ife53a5054418487c26903382
9c91bO
e35bab785ddf99eOb9fc536acd94991ab20a2634889ce5c
6064fO
e37463d9a8383bd3e64c8c23344e2051935e6db47a229b
4cf2d3
e38cc4f836f4740f4f8459b83f383631dO0178283de67
f96277
e3a5903bd9ecf35596b8d9db7955fle58c5ef2e52ebOb6e
e28125
e3be938eb5dd5b46f9afed612cfc9IdfOf73b162dc65873
8de95f
e3d7fd5ab6al944dla8ffebb7680c78683b6b9fdlceOc
c32eaO
e3f02fb3e36b29el27851cea6ddfb3a3ed654a9a593b54
e4bae
e4099e27fO4d3bc4c46b7e557lbIfIfbb8086f5b7ef7352
bf2cc7
e422edab7812f3903eeecc6cebf3816c68bld4578b2f
f683bO
e43cc433dfbldl9198le81a5e2599ff48cb6728a78cf6e
a3b2If
e455d9d323fO7c5e5f68618b45daId91ec8d4eeala3885
94aaac
e46df24f6c4e5928e9a4e83el73e8cf2a5c2b7efl3028a
e628la
e4863bcebe96aa7feb87cd8b962d9597aaOla43629a9e4f
ff8ed9
e49fced6a47079cd65fa2e921429f76c744b496080bbff
41bb2d
e4b760333f98779a1eea6a3dabebae9f372f47cc3592a6
44a4c8
e4d0c85493cebd69bbb943212cc4ea4a5c3f7560f2b491
ca982e3
e4e9ae9a620b97650ed47e9fe6d4134132f282f4ef4dae
3c786c
e502bl79874598a4d4c3b329c24a8beda654e2lb316260
ff2cId
e51a21015b24e5cc2d83faa2f38a512724ac7447c91d4
bebaf2
e5357052fbb4a2df89deffc49673c9cedd3c98e5cde8edl
3bde8c
e54e53a28bf9e991ddd6df6e74dldd34608f9e327f3bec
79a383
e5664578b42f1c507b7a97bO9d2dcdd8a26cd7d8c4c5a8a
4cf9a4
e57f11f92c6c92e9b5cb56898cbef664fa2543fa6fe2c8
3a18a8
e597fOe9f4c286e62b44674ab9349ed5f334262d48ale5b
3167cd
e5b03d716d83fd362069ea1c3e6e6de99aa7115b598aIf
438352
e5c9ea5d8c6a69c73eb4e3b88a55fbl6e275f35c28c9b
6cc3f8
e5e2e5b9d611d68bfa5c8c71eb45dbf36c9f16466151ed
dffbb
e5fbcOc4le646898479309472dfd4cdIf7f72c6822e7947
4e8c4b
e614a2c7e236df76fda4b64edb96403b8bb5d48564c602c
ad9d27
e62d1499824bbe9fa94b5db7c98ebb13a7bO79Id7ec545
aa2049
e646beff9d6405dcec65adf2386bed7ad6b2c72e6aa612
4bff55
e660203ba77fb909d574aadcea4d3ff14ffb535488f1
ed4b56
e67a15c8de28bff272d410If9942699e78e247829331dO
2dbe9f
e69293939alb80cO10c5378aO262a964f744b16c79c8dad
acfb16
e6ab15c6fdc9a41448624720c941ed61f89bf8ffba3950
6587ee
e6c3bdce95cOfba57ed8cd27fd2c743cllb89b951d5e3da
ef9e6
e6dcfOaaa9a7fb874c5dcdff65368c736f9c6789ab677db
df8168
e6f53bb8ae5delafd4e6668cd6a4839f373c1dea2a657c2
20lb90
e70e75dfcda562a53679fb358a9bbOaOa5c3376f8072be
52308d
e7269f7a64d374145d86897f2aa1cal6c7c9d327dad15bl
53e333
e73f8aede949d4cfde96223736119d7ffO4deO6231blc7
69c479
e757ac201e83c6a8c32cb52633668f4102b9c214fdf5d60
923991
e770e2f9c97dca4833f21dd6cf232e613a9fbac3f94e7
eaedef
e789714a723aed233d77b5edd5Idf6a499faef98dd29880
b67ca3
e7a262967b8ebf7b819f9ace3f12402e25db8416dd2e86f
f4b27e
e7bb5eb4146af329bla457d5a8176f87a4745b9b1779fl
ec33c8
e7d3fOIdb27ea84d957f5f9d5la5a45f441c6d3feb662a
cOe85b
e7ec3cbd50adfl539d2e459ad87d2c17a86e1548133953
ed3d78
e804adf3a65a33e2efaca7944aIfb4d87e478a8edee77e
34cl69
e81d7f6aaa6658183124721322348a563687dfc2d8e3f71
a25f25
e8368b8d478fdc94515579cl9f1384lbc85db95dO7c64
962051
e84fc4eO5eee478a11acfb9eObb40db86841293b9c9f29c
6347c9
e868ebad13efa6d3f;,645b585627fca5deO30be3e105d
ec1728
e881855518e95a394:,aa8fl96f2f295c97de47db9d6c63
e8e7fO
e89ae4a70f8fl4754,32d327cefbb9ab4lb02bd6dde730
ba275
e8b3c7f5dO31d7d28abOaclc6d603af7c2dble6d7f68f35
88e57f
e8cc3c268134aO32a325186e73b2aOflcb8661e7658b76
98196f
e8e4cO629ba3cc185e4012972bdO1579de19eadf7a592f
b5d739
e8fc52e26fl3aOa5'lb88934d30c82df5db55ea856fa
3fdebd
e91557156aa3a33e8ead2ddaaOca757c578bc5cbbId2c8e
c6962e
e92e6d59837d6472ca802e6a4fff6f2d5le74ba346e986
25aa4e
e948eO7ff532473e7c43d828c4lc11Idbd333b5ca134334
2blaO
e96157ed9d3c23d445b26e816eaf3e6790be59a5453453
4685dl
e97925ee7dcba4db12c3aa17619afb664076fe3a6996cO
9114a7
e9915dcc9ff67359eeb855972026ff99ec7241b527216e
ae8adO
e9a9e4d3da6fc453c5f8b3a7al5d6693d8bl89402392cO
90fbcb
e9cle76b4e5105d577cd1e288bf449fefc433cefa4646
al86b
e9da7a846666b92ec0c6ald4cl1833bldl218ad2f53e4
b93359
e9f3be3caf804c8ad576c3ba7e2979415754d17d597cff9
4adO6e
eaOcbb2720fcflf59.,8df4db65dfOId693b763582a4f356
64395b
ea256bb37e758e82122a8ladbc83e674a37e7251d63d
lalcf6
ea3eb8da4b188a159ddOa484963ecd3f93a30f3fb8f6e2
73eb52
ea579395cfde6f48fbabd2a970b4e2238d7286a8fa7898
Idc5fe
ea6f8a51882bb758bOcaae408a33327516cOd4b7da2aa7
bbadf7
ea8848985abed3dle61697c380ab73ae321141Ifd5daa0
ded96e
eaalfc306ef116027a25feb5fb9358234be10cO853e55
b382fd
eabaf7c3249f2d83943236deff7c877f4a807223cfa452
eb3e19
ead3aOb4a94la4058d9166dcO64c469ed604665cbdf5838
051c3
eaecadaO37e4cfabf76c247d948654a9f91ad1c79a4al78
55ce8
eb05445bdef51bdea2da74257ab3a4f2b3196a4d72765c
9706c
eblfc55dbedde781cf8d3438503c9858cc41aa9990affe
4e9677
eb37ed5418ce2cdl5d34cb7950ff289644eO51646a8b76e
8c62c4
eb506695814f8cf626baea5dd279ble4e929fcafdb3858c
e652dd
eb6933bd5dc739ef6ef9ea66a619c9fd554b4faald4109b
ff7e33
eb82115299c7266eal368aadee487a2c7fd5b7278a6b37c
713985
eb9b9cbaa8a17b9dO515695c23b5a731c58b5c956e4c89
6f17ef
ebb4d45aa7765el49b2e872ac3cfO6b71fa3c7cafcadf9
5522ec
ebed582f1cfa29cf73b4ad515cf86670595d703edl3fc4
ebecfl
ebe57786a93679f44fccb5b95ff74cOb7427726c9aa8ced
39a2db
ebfe9cb3eb3d4ale9b89e4d8a82774efa3eda5245dbbab
dOfeal
ecl629abdf75aa6230ccfl14729bla557ee5dlda98dec4
cfab34
ec2fba8dde4a59613ddd8443cebb5695ae97e23b49e59a
6ba253
ec48cl333524lb3317c38a8c123d3d4e5b752230674faO
5d3a78
ec6088a11357bl774232a8c3bb20fb985d6ace73a6335
90939e
ec7944242elbd78caa29534dd9abebe6156c4fd54a3bd14
5bbO8f
ec92cebe232493c44818a3e7454b78cc79dd356a4eddd
5f9841
ecablb684cclbb41c2le3e948eef28leb76e4f36blc6e
e21817
ecc420fc3540Ife46da418bbbed59eea8586afaf63d413
6692c4
ecdc2b6984ca232bd366816b81732648536214c49447564
39163c
ecf5edeO6d447545304368cO78fcdO17beb813ec3balbf
4daec5
edOe55Ifc39125d865fl3459dedd985617433866499aeb
dbcl87
ed275138ccb75f98fd43be2dbb74f3f8f2363da434a57e
d226cc
ed3f84Ifea56fO8018694d8841fc56fd413blee9274ff6
3b624e
ed585alb2a4e858cb24f79ef594ee733dbdc4ca60e74a47
90b58
ed712afO4edeba66ae482b3173a211c32ff5414776bd658
4bbfee
ed8af66abedd188ddaa9f8124c5f8729adbd5c82a80a9
16d7c6
eda3bl91cOa99540b5b3a82a28c69216ab547df8935f3a
17c845
edbba9fOeO7123765338a5alccd4flf23c2b4643ald5bae
d7197a
edd4c2el8f67Idd989dal799dlb207f4de7bff9fffeaa28
ab8fc
eded4d5033e326fc3c33a2b2612f718fee974ce662bd9
Ifal4a
ee067744d48bb73e5e2d18c3546899a88d92969e9dab33
38ffb8
eeleee78c67bb58495d3627ae5d2738a388efO1a5964b
d79b42
ee37e56f57754ce9782d5becb6d229e2a892959c652a3e
bf8deO
ee4fbfb3acc8e7e13af88267d485ac7392936d290e83b3
dO61la
ee68d2e8a8fba8eal9fdf12ab5472398de62af4c7ed4fb
6b26e
ee81404037b773f2d881be29d299cO7325la3c92756ebd
d77979
ee99414cO4e9957669374ecbO297cdf61bO33adlc3faa4
f7f9f
eeb2d3f0b92a5a3ac58825b8b9cc823573ael7b517570
a674la
eecbcacb31868ca77felbadcd687f3685fcb74faO11da69
fa7987
eee4d6b921dd3e70dbde84d46edl204aff632a28ed5425
fe754
eefde7a744baO4bf7f4e87422e99870fb252ef464577528
854553
ef163a2ee23c5436e9296675943107ecl49cd5ef997a58
5f8a11
ef2f4f3d9ae22b2258fabefc69917a8c3f779fc93b5426
2393b3
ef4785deaef5bdc5474cc4cd5eadbe8fba31f6e470fb6e
a796d5
ef5fad10803943974f10cclb8f8dcd4c634d8le8570416c
a8ebdf
ef787f36c560a71291673fe753a2d40297daaa5c229230
a6e56b
ef92246d9b20e57cb40bO38599ca7696a70d338efe2b211
3eea2a
efabf92b2e43Id65cfd6lbef835a5fe6c56216ca5e4ca6
39e453
efc32d23d25e7e15548a8b73dbb8859b99ea27c42Ifa277
3c5b9
efde6dfa8f2146la3eedce4956Id292d703a76f75ac187
ff2786
eff5734928852d977a84e373d8610214ce274626b51708f
1572f3
elOOe81b2a99d8a63adlbd5aa8ade963ce7471651fc8750
9b760
el026293352fbbOdf70c5654a603bcd7a8294751f78a77
f3993f
e103e381660de6827b224762a2fd4086b275c33c2f3dfa9
d9a99a
el057713cce46940f9be467fb82e857f7dd38deab46381
5910bb
el06f57dOb6abel8374le25d5737818bl6062cf4768d17
d5ed23
el08723e4f632645a61963f69257d52940d63bba6372180
25lb7
elOaOee7f254afa6741946e3e8897ac65654a743134ebf
97a56f
el0b8992fac334dfa583a5aaa4la7462c84f3b789d7ee7e
ee2d69
elOdl3040ea47823b858e3238f744e835ab744157d585
bl6ble
elOeaf47dled2leb3fef31210323951482d6fe5d3a38c88
g
rex
fff
w
q
把著段代碼復(fù)制下來(lái)存為文本文檔,命名為1
在DOS下用debug<l.txt
生成一個(gè)可執(zhí)行程序。
進(jìn)去是個(gè)3D游戲的旋轉(zhuǎn)界面,還有段美妙的音樂(lè),真是牛?。?!
快去看看吧
在網(wǎng)上搜到一個(gè)號(hào)稱(chēng)是世界第一高手的程序,前些天又在本論壇搜到,
很多網(wǎng)友都說(shuō)看不懂,覺(jué)的挺難的,其實(shí)這個(gè)程序并不是深不可測(cè),
我可以給大家簡(jiǎn)單解讀一下程序的意思.
其實(shí)他是用機(jī)器語(yǔ)言寫(xiě)的,除了結(jié)尾,主程序中都是0-f組成,也就是16進(jìn)制
數(shù),
大家可以看到程序左邊豎著一列都是以e開(kāi)頭的,如elOO,這表示地址,
應(yīng)該是基地址(CS)和偏移地址(IP)的和.
以第一行為例:elOO后面的33f6bf020b510f3a58cc85025068
131cbeIfbeal1bf01
就是這個(gè)〃段”中的指令,至于什么是"段〃,在這不再詳述,
每一組16進(jìn)制數(shù)代表著特定的意義,如movbx2200H的機(jī)器指令是BB0022
每一組占一個(gè)字節(jié),大家數(shù)一數(shù),第一行有多少字節(jié),對(duì)是27個(gè)字節(jié),
所以第二行的起始地址是ellb,以此類(lèi)推.
至于具體的每一句的意思,大家有了一定的匯編語(yǔ)言經(jīng)驗(yàn),就會(huì)知道了,
因?yàn)樵贒OS中用debug命令可以看到匯編指令對(duì)應(yīng)的機(jī)器指令,
如剛才說(shuō)的movbx2200H的機(jī)器指令是BB0022
程序最后
g
rex
fff
w
q
應(yīng)該是debug的命令,現(xiàn)在可以肯定的是最后的q是degug的命令,退出的意思,
現(xiàn)在大家是不是基本知道這個(gè)程序的意思或結(jié)構(gòu)了?
這個(gè)世界第一高手無(wú)非就是把機(jī)器碼背了個(gè)滾瓜濫熟.
聲音程序
#include<windows.h>
#include"dos.h"
#include"stdio.h"
#definetime1000/2
#definetimeO500/2
#definetimel1500/2
#definetime22000/2
#definetime33000/2
#definetime4250/2
#define_a262
#define_b294
#define_c330
#define_d349
#definee392
#definef440
#define_g494
#definea523
#defineb587
#definec659
#defined698
#definee784
#definef880
#defineg988
#definea_1047
#defineb_1175
#definec_1319
#defined_1397
#definee_2568
#definef_1760
#defineg_1976
intmain()
(
//titanic
Beep(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<stdio.h>
#incude<conio.h>
voidmain()
(
floatone,two=-1;
fbr(one=0;one!=two;one++)two=one;
clrscr();
printf("stopat:%f*,one);
)
上面的程序就是檢測(cè)浮點(diǎn)數(shù)誤差,某一個(gè)足夠大的浮點(diǎn)數(shù)加一后本身并沒(méi)有改變,即大數(shù)吃小數(shù)
但有趣的是,程序還可以這樣寫(xiě):
#include<whole.h>
voidmain()
floatone;
one=0;
for(;onc==++one;);
clrscr();
printf("stopat:%f',one);
}
兩個(gè)程序的結(jié)果都是:one=16777216.000000
第?個(gè)程序很容易理解,但第二個(gè)就很難理解,表達(dá)式似乎記過(guò)成立喲
首先看下面這段代碼,它在屏幕上的輸出你能讀出來(lái)么?
#include<string.h>
voidfun(charintm)
(
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)象:
1.在while第一次被執(zhí)行的時(shí)候,pl的內(nèi)容是“ABCDEFG”,p2的內(nèi)容是“G”
此時(shí)pl<p2因而進(jìn)入該循環(huán)?
2.在while第二次被執(zhí)行時(shí),pl的內(nèi)容是“GCDEAG”,p2的內(nèi)容是“AG”,此
時(shí)pl>p2,因而應(yīng)該結(jié)束循環(huán)?
3.好了,問(wèn)題出來(lái)了,在這里程序沒(méi)有結(jié)束循環(huán),而是進(jìn)入了循環(huán),你知道這
是什么原因么?
PoSo在先前的話(huà)題里面狂踩腳印的同學(xué)們,還有沒(méi)有話(huà)要說(shuō)呢?**
#include<stdio.h>
#incl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人之間房產(chǎn)抵押合同范本
- 產(chǎn)品設(shè)計(jì)開(kāi)發(fā)合同范本
- 生產(chǎn)流程中的時(shí)間管理與效率提升基于5S原理的應(yīng)用案例分享
- 中樂(lè)器制作與聲音美學(xué)考核試卷
- 清潔能源的研發(fā)與應(yīng)用推廣研究
- 公路客運(yùn)企業(yè)車(chē)輛維護(hù)與安全管理考核試卷
- 2025-2030年地下管線(xiàn)探測(cè)無(wú)人機(jī)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 現(xiàn)代人心理需求與網(wǎng)絡(luò)文學(xué)作品的內(nèi)容創(chuàng)新研究
- 保理服務(wù)合同范本
- 2025-2030年手術(shù)剪多功能設(shè)計(jì)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 【直播薪資考核】短視頻直播電商部門(mén)崗位職責(zé)及績(jī)效考核指標(biāo)管理實(shí)施辦法-市場(chǎng)營(yíng)銷(xiāo)策劃-直播公司團(tuán)隊(duì)管理
- 項(xiàng)目設(shè)計(jì)報(bào)告范文高中
- 《千年古村上甘棠》課件
- 部編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)電子課文《小馬過(guò)河》
- 《醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則》專(zhuān)題解讀
- 愛(ài)車(chē)講堂 課件
- 成立商會(huì)的可行性報(bào)告5則范文
- 市場(chǎng)監(jiān)督管理局反電信網(wǎng)絡(luò)詐騙工作總結(jié)
- 2024-2030年中國(guó)免疫細(xì)胞存儲(chǔ)行業(yè)發(fā)展模式及投資戰(zhàn)略分析報(bào)告
- 家庭清潔課件教學(xué)課件
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院《常微分方程》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論