




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.功能:求三个整数的平均值。程序如下:#include<stdio.h>/・载入头文件stdio.h*/voidmain。/・主函数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=某数"并换行,某数是d的值・/getchar。;/・等待用户,按任意键退出・/return0;).功能:由键盘输入多边形的边数,求其内角和。程序如下:#include<stdio.h>voidmain()(/・辨别多边形是否成立,不成立重新执行do-while语句间的命令・/do(intx;printf("n=");scanf("%d",&x);/*由键盘输入x的值・/printf("%d\n",(x-2)*180);/・显示内角和,公式为(x-2)*1807/・辨别多边形是否成立,不成立显示“Error”,成立显示“Right”*/if(x<=2)printf("Error\n");elseprintf("Right\n");}while(x<=2);/*do-while语句・/getchar();return0;).功能:由键盘输入两个数,显示器上显示较大数。程序如下:#include<stdio.h>intbig(intjnt);/*创建整型变量函数big*/voidmain()(intx,y;scanf("%d,%d",&x,&y);printf("bigis%d\n",big(x,y));/・输出big函数的值,因为main函数与用户自定义函数big无关系,所以printf后的输出项表是big(x,y),而不是big(n1,n2)*/getchar();return0;)intbig(intn1,intn2)"用户自定义函数big*/(if(n1>n2)returnn1;/・返回n1值・/elsereturnn2;/・返回n2值・/).功能:由键盘输入ー个等腰三角形的层数,画一个这样的三角形。程序如下:#include<stdio.h>voidmain()(inti,j,n;printf("n:");scanf("%d",&n);for(i=1;i<=n;i++)/・循环n次,每次输出一行・/(for(j=1;jv=n-i;j++)/・输出该行前面的空格・/printf("");for(j=1;jv=2+1;j++)/・输出该行中的星号*/printf("*");printf("\n");)getchar();return0;)注释:不能输入太多的行数,如1000〇。.功能:由键盘输入一个最大值,求2到这个最大值中的所有质数(素数)。程序如下:#include<stdio.h>#include<math.h>/*数学文件・/voidmain()(intn,m,flag,i,j,num=1;printf("n:");scanf("%d",&n);printf("2-%d:\n",n);for(i=2;iv=n;i++)/・循环查找质数・/(flag=1;m=(int)sqrt(i);for(j=2;j<=m;j++)if(i%j==0)/・条件为真时表示不是质数,退出仍「循环ッ{flag=0;break;)if(flag==1)/・条件为真时表示i是质数・/(printf("%4d",i);if(num++%10==0)/・每行最多输出10个数・/printf("\n");))printf('*\n");getchar();return0;).功能:显示保护屏幕。程序如下:#include<stdlib.h>/・综合库・/include<graphics.h>/・绘图库・/intmain()intgdriver=DETECT;/・定义图象驱动器为DETECT7intgmode=DETECT;/*定义图象模式为DETECT*/longn;/*定义长型变量n*/initgraph(&gdriver,&gmode,"E:\TC\bgi");/・进入图象状态(警告:""之间的是图象驱动器的路径,建议网友们设置为空,即只有"",或设为编程系统的路径,例路径是C:\TC,那么就是输入C:\TC\bgi)*/sleep。);/・暂停一秒,以保证无误差进入图象状态・/for(n=1;n<=40000000;n++)/・画40000000个圆・/(setcolor(rand());/・作图颜色随机・/circle(random(639),random(639),25);/・画圆,位置随机,半径为25ソ)getchar();return0;一段有趣的C程序最近在ー个论坛发现了一段简单的C程序很有意思,其中蕴含着不少技巧,在此与大家分享一下。原程序如下: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下面编译,发现不能通过,提示”「‘未声明,对以上代码稍加修改,如下: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);}细心的人已经看出来了,就是在main函数的参数"」’前面加上了变量的类型:into此时,以上代码在VC6中就能够正常的编译和连接了。运行的结果如下:是用“一/”组成的单词“knocker”〇下面我们来分析这个小小的程序,不过为了看起来直观,我把这个程序稍加改动: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函数参数,这个参数的名称比较奇怪"」’,我们看着有些不习惯,但它确实是合法的变量名称。另外,本来我们常见的main函数一般都不带参数,如果有参数是因为程序希望处理命令行格式下运行这个程序所需要的参数,一般是这样的:main(intargc,char**argv),第一个参数argc表示参数表中参数的个数,argc是ー个char型二维数组,保存着参数字符串。举个例子,如果我们在命令行下输入命令:dir-sc:\此时,argc的值为3(包括命令本身),argv[〇]指向字符串:dir,arg[l]指向字符串:-s,arg[2]指向字符串c:'。那么既然main函数的参数通常要不没有,要不就是两个,而这个程序只有一个,这样做是否合法呢?答案是肯定的!我在《关于C语言中的变量》中提到过,函数中的参数是保存在堆栈中的,所以这就涉及到ー个谁来平衡堆栈的问题,是调用者还是被调用者。在使用VC6编译器的时候,如果函数没有特别的声明,默认是调用者清理堆栈。换句话说,运行时库(runtime)调用main函数的时候,只传递ー,个参数给main函数,这・点它自己是知道的,当main函数调用结束以后,它在平衡堆栈的时候,只清除掉ー个函数,因此不会出现任何问题。我们接着往下看,下面定义了一个char型指针变量x,指向一个字符串。接下来是while语句,while(_=(*x)/4),但表达式ー=(*x)/4的值不为〇的时候就执行while的循环体,然而表达式ー=(*x)/4是ー个赋值语句,它的值又是多少呢?在这种情况下,通常赋值号右面的表达式的值就是整个表达式的值。第一次执行这个语句的时候,x指向字符'*',对应的值为42,以此类推,当x=0时,也就是字符串结束的时候,循环结束。接下来在原来的程序中是:=8,printf("\n%*s"+!!.+.”///"+*x++%4*2);这里的逗号作用有些类似分号,但是逗号两侧组成的是一条语句,而分号则是两条语句。我们仔细看printf这条语句,它的格式字符串为:"ヽn%*s”,其中%*s很少见,很多人不知道这是什么格式,不过我们可以在MSDN中找到这样的描述:Ifthewidthspecificationisanasterisk(*),anintargumentfromtheargumentlistsuppliesthevalue.Thewidthargumentmustprecedethevaluebeingformattedintheargumentlist.意思是说如果宽度用星号(*)来指定,则应该在参数列表中提供一个int型参数作为宽度的值。这样就清楚了,原来这个printf语句是用表达式ー+一来控制字符串“%*s”的宽度,也就是替换其中的(*)。在仔细ー看,原来格式字符串还没有完!完整的应该是:''\n%*s"+!!_。这就奇怪了,字符串怎么和!!ー相加呢?其实也不奇怪,在这里!!ー是对变量一作了两次‘‘非”的操作,结果应该是〇或1。要明确的是,字符串作为参数传递给函数的时候,只是把字符串的首地址传递给了函数,所以字符串"'n%*s”的首地址就是字符‘'n’的地址,当这个地址加1的时候,传递给printf函数的格式字符串就变成了"%*s”,所以这个+!!_的奥妙就在于控制换行!是不是很有创后、?当然了,下面的代码同样有创意,就是printf语句要打印的字符串参数:"一/ノノ"+*x++%4*2。经过刚オ的分析,我们不难理解“ノー/一/"加上后面的表达式的用意了,同样是控制输出字符的个数,是ー个“―/”,两个,还是三个。那么关键就是后面这个表达式了:*x++%4*2。其实慢慢的分析也不困难,先执行・x%4*2,然后执行x++。所以,当在执行while语句的时候,x会指向下•个字符!综上所述,这个小程序就是利用ー个字符串来控制输出的例子,里面运用了很多技巧,对于初学者需要很好的理解,对今后的编程是很有帮助的!#include<stdio.h>intmain()(constshortintc1=49920;constintc2=1073742008;int(*pf)()=(int(*)())&c2;printf("%c%c\n",*(char*)pf()-19,*((char*)pf()+1)-49);return0;)运行这个程序,屏幕上会出现ー个:)很多人不懂其中的道理,在这里我给大家分析下代码。先看这两句:constshortintc1=49920;constintc2=1073742008;定义了两个局部变量,数值转换成16进制为:constshortintc1=0xc300;constintc2=0x400000b8;其中变量c1的地址为:0X0012FF7C,占两个字节,C2的地址为:0x0012FF78J占四个字节。这两个变量占据了连续的空间。变量赋值后,从0x12ff78开始的内存单元存储的字节码为:B800004000C3〇对应的汇编码是:
moveax,400000hmoveax,400000hret接下来的这句:int(*pf)()=(int(*)())&c2;分析如下:定义了一个函数指针,参数为NULL,返回值为int类型。这个函数指针,指向上面的汇编码。这样,后面执行pf(),就执行了这段汇编码。继续分析下面这句代码:printf("%c%c\n",*(char*)pf()-19,*((char*)pf()+1)-49);先看・(char*)pf()-19这个表达式,执行了了pf指向的汇编代码,从汇编代码看,这个函数调用后的返回值是0x400000,pf()前面的char・是把函数的返回值转换成一个char・型指针,这个指针指向0x400000,前面再加个・号,表示取0x400000地址的内容,由于是char・型指针,因此从这个地址取ー个字节。*(char*)pf()-19表示的是从0x400000取出的字节内容再减去19。接下来:*((char*)pf()+1)-49代表的意思是从0x400000+1的地址取出一个字节内容在减去49。熟悉PE文件结构的朋友一定知道,对于exe文件0x400000是内存加载的基地址。也就是说,0x400000字节的内容对应的是0x4D,0x400001字节的内容对应的是0x5A.这是我们常说的pe文件起始的两个字节,"Mご这样,表达式・(char*)pf()-19的结果是0x3A,表达式・((char*)pf()+1)-49的结果是0x29察看ascii码表,输出就是我们看到的样子。总结:别看ー个这么小的程序,但是其中涉及的知识面比较广不过在F8我用gcc编译通过,运行的时候出现的提示是:Segmentationfault原因我认为是编译器的ASCII不兼容,是吗?ー个有趣的C程序关键词:C程序最近总做些无聊的事,迷迷糊糊。在论坛上看到ー个有趣的C程序,有点意思,写下来。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语言默认类型为intmain(intargc)(for(-argc;putchar(argc++["J!Mpwf!Zpv\1"]-1);))main(intargc)(for(-argc;putchar(argc["J!Mpwf!Zpv\1"]-1);argc++)1)程序执行时,不带参数,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++)ー个用数组和下标实现的表达式可以等价地用指针和偏移量实现。即,如果pa是ー个指针,则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)下面的这一段程序是我见过的最有趣的程序之一,如果和你编译运行的话,他能过计算pi的前800位数值。到现在还没有见过多懂这个这段程序的人#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);)而结果是这样的: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()(}机器码程序C语言有趣的编程2008-03-1713:15原程序如下:elOO33f6bf020b510f3a58cc85025068131cbeIfbeal1bf01ellb657b8111bb21138974b4b4879f9ad86eO8bc8bdffffe820el3403d0174la7f3aaebf32dff050e8f05af7d88bd8268a1aael4f4a75f9ebdecb57bb21138bcl40f727f7f58bfbba1114f4f4ael683957ff9528bc5f725f7372bc895f7652f737952be8feefeel8110796c66fe10746dO14dldldle579ec5ab8111ff74b4b48el9b3bdO75f75fc383f783a65d5982cdb284246957a9c5caaalbelb44f52b4923fab6e9ea8Idc63fce6aelaebb5f7b10b8b4f78elcde2bf364e399d79293faf9365216fb5e8e5a6c2e9bO43d3a3ele6cfd3fdfdcbdl4c5eeO635886bb3e9cl20becc91a3478170b3elffd6la9ec2c912e74eadf45fe330e9939d7e8f9f4d244e8d722e218bee2ce8825cf304aa829ae3f47c62d85e9735413be6eO3465e231e2508a89185fce709935f42bfeb7aedOca5228d22a5b7fOe24a9081be7abede5dbcO6a2e55738be60cbacbaa53b9dfl7738e263a684dl3caf49d86a45a276602112cOc244f25ebbe537a92be27bec4a8c4cf2f7a958712bba6dd66ae56046eOdae5b990e5a3e293f77f316058fOc488104e3ca3ee4e11558fa92ebdbad7a9cfe2acdb5a2896da87ae91912de35eeadf69571677140cedl2e316de2c5cl9cd86a769b4ae83644d676d305ffd4lbacIf326531bf55e2de26ba455el5d5e16ed97486c77fb8186ef918bdd4f48bdeIde2f7bad47753894b3ede2786lcdO178948dla68dd42b544e8fbOe3102el6bla7578ea219113cOcf78aOabf335c6b4c8908dd745e7e329c5ba4ba521064f54a50b7ec462215238430815cdf615a8f67e342c463576df72692a3Ife53a5054418487c269033829c91bOe35bab785ddf99eOb9fc536acd94991ab20a2634889ce5c6064fOe37463d9a8383bd3e64c8c23344e2051935e6db47a229b4cf2d3e38cc4f836f4740f4f8459b83f383631dO0178283de67f96277e3a5903bd9ecf35596b8d9db7955fle58c5ef2e52ebOb6ee28125e3be938eb5dd5b46f9afed612cfc9IdfOf73b162dc658738de95fe3d7fd5ab6al944dla8ffebb7680c78683b6b9fdlceOcc32eaOe3f02fb3e36b29el27851cea6ddfb3a3ed654a9a593b54e4baee4099e27fO4d3bc4c46b7e557lbIfIfbb8086f5b7ef7352bf2cc7e422edab7812f3903eeecc6cebf3816c68bld4578b2ff683bOe43cc433dfbldl9198le81a5e2599ff48cb6728a78cf6ea3b2Ife455d9d323fO7c5e5f68618b45daId91ec8d4eeala388594aaace46df24f6c4e5928e9a4e83el73e8cf2a5c2b7efl3028ae628lae4863bcebe96aa7feb87cd8b962d9597aaOla43629a9e4fff8ed9e49fced6a47079cd65fa2e921429f76c744b496080bbff41bb2de4b760333f98779a1eea6a3dabebae9f372f47cc3592a644a4c8e4d0c85493cebd69bbb943212cc4ea4a5c3f7560f2b491ca982e3e4e9ae9a620b97650ed47e9fe6d4134132f282f4ef4dae3c786ce502bl79874598a4d4c3b329c24a8beda654e2lb316260ff2cIde51a21015b24e5cc2d83faa2f38a512724ac7447c91d4bebaf2e5357052fbb4a2df89deffc49673c9cedd3c98e5cde8edl3bde8ce54e53a28bf9e991ddd6df6e74dldd34608f9e327f3bec79a383e5664578b42f1c507b7a97bO9d2dcdd8a26cd7d8c4c5a8a4cf9a4e57f11f92c6c92e9b5cb56898cbef664fa2543fa6fe2c83a18a8e597fOe9f4c286e62b44674ab9349ed5f334262d48ale5b3167cde5b03d716d83fd362069ea1c3e6e6de99aa7115b598aIf438352e5c9ea5d8c6a69c73eb4e3b88a55fbl6e275f35c28c9b6cc3f8e5e2e5b9d611d68bfa5c8c71eb45dbf36c9f16466151eddffbbe5fbcOc4le646898479309472dfd4cdIf7f72c6822e79474e8c4be614a2c7e236df76fda4b64edb96403b8bb5d48564c602cad9d27e62d1499824bbe9fa94b5db7c98ebb13a7bO79Id7ec545aa2049e646beff9d6405dcec65adf2386bed7ad6b2c72e6aa6124bff55e660203ba77fb909d574aadcea4d3ff14ffb535488f1ed4b56e67a15c8de28bff272d410If9942699e78e247829331dO2dbe9fe69293939alb80cO10c5378aO262a964f744b16c79c8dadacfb16e6ab15c6fdc9a41448624720c941ed61f89bf8ffba39506587eee6c3bdce95cOfba57ed8cd27fd2c743cllb89b951d5e3daef9e6e6dcfOaaa9a7fb874c5dcdff65368c736f9c6789ab677dbdf8168e6f53bb8ae5delafd4e6668cd6a4839f373c1dea2a657c220lb90e70e75dfcda562a53679fb358a9bbOaOa5c3376f8072be52308de7269f7a64d374145d86897f2aa1cal6c7c9d327dad15bl53e333e73f8aede949d4cfde96223736119d7ffO4deO6231blc769c479e757ac201e83c6a8c32cb52633668f4102b9c214fdf5d60923991e770e2f9c97dca4833f21dd6cf232e613a9fbac3f94e7eaedefe789714a723aed233d77b5edd5Idf6a499faef98dd29880b67ca3e7a262967b8ebf7b819f9ace3f12402e25db8416dd2e86ff4b27ee7bb5eb4146af329bla457d5a8176f87a4745b9b1779flec33c8e7d3fOIdb27ea84d957f5f9d5la5a45f441c6d3feb662acOe85be7ec3cbd50adfl539d2e459ad87d2c17a86e1548133953ed3d78e804adf3a65a33e2efaca7944aIfb4d87e478a8edee77e34cl69e81d7f6aaa6658183124721322348a563687dfc2d8e3f71a25f25e8368b8d478fdc945dl5579cl9f1384lbc85db95dO7c64962051e84fc4eO5eee478a11acfb9eObb40db86841293b9c9f29c6347c9e868ebad13efa6d3fa645b585627fca5deO30be3e105dec1728e881855518e95a3943aa8fl96f2f295c97de47db9d6c63e8e7fOe89ae4a70f8fl4754d32d327cefbb9ab4lb02bd6dde730ba275e8b3c7f5dO31d7d28abOac1c6d603af7c2dble6d7f68f3588e57fe8cc3c268134aO32a325186e73b2aOflcb8661e7658b7698196fe8e4cO629ba3cc185e4012972bdO1579de19eadf7a592fb5d739e8fc52e26fl3aOa5d9lb88934d30c82df5db55ea856fa3fdebde91557156aa3a33e8ead2ddaaOca757c578bc5cbbId2c8ec6962ee92e6d59837d6472ca802e6a4fff6f2d5le74ba346e98625aa4ee948eO7ff532473e7c43d828c41c11Idbd333b5ca1343342blaOe96157ed9d3c23d445b26e816eaf3e6790be59a54534534685dle97925ee7dcba4db12c3aa17619afb664076fe3a6996cO9114a7e9915dcc9ff67359eeb855972026ff99ec7241b527216eae8adOe9a9e4d3da6fc453c5f8b3a7al5d6693d8bl89402392cO90fbcbe9cle76b4e5105d57f7cd1e288bf449fefc433cefa4646al86be9da7a846666b92ec10c6ald4cl1833bldl218ad2f53e4b93359e9f3be3caf804c8ad576c3ba7e2979415754d17d597cff94adO6eeaOcbb2720fcflf59a8df4db65dfOId693b763582a4f35664395bea256bb37e758e821122a8ladbc83e674a37e7251d63dla1cf6ea3eb8da4b188a159ddOa484963ecd3f93a30f3fb8f6e273eb52ea579395cfde6f48fbabd2a970b4e2238d7286a8fa7898Idc5feea6f8a51882bb758bOcaae408a33327516cOd4b7da2aa7bbadf7ea8848985abed3dle61697c380ab73ac321141Ifd5daa0ded96eeaalfc306ef116027a25feb5fb9358234be10cO853e55b382fdeabaf7c3249f2d83943236deff7c877f4a807223cfa452eb3e19ead3aOb4a94la4058d9166dcO64c469ed604665cbdf5838051c3eaecadaO37e4cfabf76c247d948654a9f91ad1c79a4al7855ce8eb05445bdef51bdea2da74257ab3a4f2b3196a4d72765c9706ceblfc55dbedde781cf8d3438503c9858cc41aa9990affe4e9677eb37ed5418ce2cdl5d34cb7950ff289644eO51646a8b76e8c62c4eb506695814f8cf626baea5dd279ble4e929fcafdb3858ce652ddeb6933bd5dc739ef6ef9ea66a619c9fd554b4faald4109bff7e33eb82115299c7266eal368aadee487a2c7fd5b7278a6b37c713985eb9b9cbaa8a17b9dO515695c23b5a731c58b5c956e4c896f17efebb4d45aa7765el49b2e872ac3cfO6b71fa3c7cafcadf95522ecebed582f1cfa29cf73b4ad515cf86670595d703edl3fc4ebecflebe57786a93679f44fccb5b95ff74cOb7427726c9aa8ced39a2dbebfe9cb3eb3d4ale9b89e4d8a82774efa3eda5245dbbabdOfealecl629abdf75aa6230ccfl14729bla557ee5dlda98dec4cfab34ec2fba8dde4a59613ddd8443cebb5695ae97e23b49e59a6ba253ec48cl333524lb3317c38a8c123d3d4e5b752230674faO5d3a78ec6088a11357bl774232a8c3bb20fb985d6ace73a633590939eec7944242elbd78caa29534dd9abebe6156c4fd54a3bd145bbO8fec92cebe232493c44818a3e7454b78cc79dd356a4eddd5f9841ecablb684cclbb41c2le3e948eef28leb76e4f36blc6ee21817ecc420fc3540Ife46da418bbbed59eea8586afaf63d4136692c4ecdc2b6984ca232bd366816b81732648536214c4944756439163cecf5edeO6d447545304368cO78fcdO17beb813ec3balbf4daec5edOe55Ifc39125d865fl3459dedd985617433866499aebdbcl87ed275138ccb75f98fd43be2dbb74f3f8f2363da434a57ed226cced3f84Ifea56fO8018694d8841fc56fd413blee9274ff63b624eed585alb2a4e858cb24f79ef594ee733dbdc4ca60e74a4790b58ed712afO4edeba66ae482b3173a211c32ff5414776bd6584bbfeeed8af66abedd188ddaa9f8124c5f8729adbd5c82a80a916d7c6eda3bl91cOa99540b5b3a82a28c69216ab547df8935f3a17c845edbba9fOeO7123765338a5alccd4flf23c2b4643ald5baed7197aedd4c2el8f67Idd989dal799dlb207f4de7bff9fffeaa28ab8fceded4d5033e326fc3c33a2b2612f718fee974ce662bd9Ifal4aee067744d48bb73e5e2d18c3546899a88d92969e9dab3338ffb8eeleee78c67bb58495d3627ae5d2738a388efO1a5964bd79b42ee37e56f57754ce9782d5becb6d229e2a892959c652a3ebf8deOee4fbfb3acc8e7e13af88267d485ac7392936d290e83b3dO61laee68d2e8a8fba8eal9fdf12ab5472398de62af4c7ed4fb6b26eee81404037b773f2d881be29d299cO7325la3c92756ebdd77979ee99414cO4e9957669374ecbO297cdf61bO33adlc3faa4f7f9feeb2d3f0b92a5a3ac58825b8b9cc823573ael7b517570a674laeecbcacb31868ca77felbadcd687f3685fcb74faO11da69fa7987eee4d6b921dd3e70dbde84d46edl204aff632a28ed5425fe754eefde7a744baO4bf7f4e87422e99870fb252ef464577528854553ef163a2ee23c5436e9296675943107ecl49cd5ef997a585f8a11ef2f4f3d9ae22b2258fabefc69917a8c3f779fc93b54262393b3ef4785deaef5bdc5474cc4cd5eadbe8fba31f6e470fb6ea796d5ef5fad10803943974f10cclb8f8dcd4c634d8le8570416ca8ebdfef787f36c560a71291673fe753a2d40297daaa5c229230a6e56bef92246d9b20e57cb40bO38599ca7696a70d338efe2b2113eea2aefabf92b2e43Id65cfd6lbef835a5fe6c56216ca5e4ca639e453efc32d23d25e7e15548a8b73dbb8859b99ea27c42Ifa2773c5b9efde6dfa8f2146la3eedce4956Id292d703a76f75ac187ff2786eff5734928852d977a84e373d8610214ce274626b51708f1572f3elOOe81b2a99d8a63adlbd5aa8ade963cel471651fc87509b760el026293352fbbOdf70c5654a603bcd7a8294751f78a77f3993fel03e381660de6827b224762a2fd4086b275c33c2f3dfa9d9a99ael057713cce46940f9be467fb82e857f7dd38deab463815910bbel06f57dOb6abel8374le25d5737818bl6062cf4768d17d5ed23el08723e4f632645a61963f69257d52940d63bba637218025lb7elOaOee7f254afa6741946e3e8897ac65654a743134ebf97a56fel0b8992fac334dfa583a5aaa4la7462c84f3b789d7ee7eee2d69elOdl3040ea47823b858e3238f744e835ab744157d585bl6bleelOwq把着段代码复制下来存为文本文档,命名为1在DOS下用debug<l.txt生成一个可执行程序。进去是ー个3D游戏的旋转界面,还有一段美妙的音乐,真是牛!!!快去看看吧在网上搜到ー个号称是世界第一高手的程序,前些天又在本论坛搜到,很多网友都说看不懂,觉的挺难的,其实这个程序并不是深不可测,我可以给大家简单解读“下程序的意思.其实他是用机器语言写的,除了结尾,主程序中都是0-f组成,也就是16进制数,大家可以看到程序左边竖着一列都是以e开头的,如elOO,这表示地址,应该是基地址(CS)和偏移地址(IP)的和.以第一行为例:elOO后面的33f6bf020b510f3a58cc85025068131cbeIfbeal1bf01就是这个"段’’中的指令,至于什么是"段",在这不再详述,每ー组16进制数代表着特定的意义,如movbx2200H的机器指令是BB0022每一组占ー个字节,大家数一数,第一行有多少字节,对是27个字节,所以第二行的起始地址是ellb,以此类推.至于具体的每一句的意思,大家有了一定的汇编语言经验,就会知道了,因为在DOS中用debug命令可以看到汇编指令对应的机器指令,如刚才说的movbx2200H的机器指令是BB0022程序最后wq应该是debug的命令,现在可以肯定的是最后的q是degug的命令,退出的意思,现在大家是不是基本知道这个程序的意思或结构了?这个世界第一高手无非就是把机器码背了个滚瓜滥熟.声音程序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;)[讨论]一个很有趣的程序ー个很简单的程序是:#include&It;stdio.h>#incude<conio.h>voidmain()(floatone,two=-1;fbr(one=0;one!=two;one++)two=one;clrscr();printf(Mstopat:%f*,one);(上面的程序就是检测浮点数误差,某ー个足够大的浮点数加一后本身并没有改变,即大数吃小数但有趣的是,程序还可以这样写:#include<whole.h>voidmain()floatone;one=0;fbr(;one==++one;);clrscr();printf("stopat:%f',one);两个程序的结果都是:one=16777216.000000第・个程序很容易理解,但第二个就很难理解,发达式似乎记过成立哟首先看下面这段代码,它在屏幕上的输出你能读出来么?#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现象:.在while第一次被执行的时候,pl的内容是“ABCDEFG”,p2的内容是“G”此时pl<p2因而进入该循环〜.在while第二次被执行时,pl的内容是“GCDEAG”,p2的内容是“AG”,此时pl>p2,因而应该结束循环〜.好了,问题出来了,在这里程序没有结束循环,而是进入了循环,你知道这是什么原因么?PoSo在先前的话题里面狂踩脚印的同学们,还有没有话要说呢?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ー只老鼠咬坏了帐本,公式中符号口代表是被老鼠咬到的地方.\n要想恢复下面的等式,应在口中添上哪个相同的数字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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 按揭商铺合伙协议书
- 房屋自愿弃权协议书
- 店面共用经营协议书
- 开票代码变更协议书
- 志愿共驻共建协议书
- 承包山头合同协议书
- 房屋资金继承协议书
- 成本收益分摊协议书
- 房屋屋顶购买协议书
- 拆迁库房安全协议书
- 2022年教学教材《石油裂解与乙烯》精品优秀教案
- IPC-A-610国际标准中英文对照(doc 17)
- 山大《毛泽东思想和中国特色社会主义理论体系概论》教案第3章 社会主义改造理论
- 部编版四年级下册语文全一册期末总复习—重点归纳整理
- (国开)2019年春电大本科水利水电工程造价管理形考3答案
- 金普新区预防性体检人员审核表
- 矿山地质环境保护与治理恢复方案编制规范2011
- 重庆市新建居民住宅小区供配电设施建设管理办法
- 【精品毕业论文】Bi2WO6光催化剂的熔盐法合成
- 正确解读检验报告单 ppt课件
- 八年级数学(下)专题复习3--图形与坐标部分
评论
0/150
提交评论