国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

第三個(gè)1000行

2019-11-08 19:47:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
/*Author:MrBreadIntroduction:Aim to imPRove my programming ability and record my codes.Start date:Feb 13th,2017*/#include<stdio.h>#include<math.h>#include<time.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<dir.h>//include<bios.h> Turbo C使用//使用ceil(i)函數(shù)可以獲得不小于i的最小整數(shù)//函數(shù)原型:double ceil(double num)/*//顯示程序運(yùn)行時(shí)間void main(){ time_t start,end; start=time(NULL); _sleep(10000); end=time(NULL); printf("runtime is:%f(s)/n",difftime(end,start));}*//*有問(wèn)題 出現(xiàn)Storage size of ‘d’ isn't known,可能原因是因?yàn)閐ate和time結(jié)構(gòu)體定義出現(xiàn)問(wèn)題//顯示當(dāng)前日期及時(shí)間void main(){ struct date d; struct time t; getdate(&d); gettime(&t); printf("The current day is:%d--%d--%d/n",d.da_year,d.da_mon,d.da_day); printf("The current time is:%d:%d:%d/n",t.ti_hour,t.ti_min,t.ti_sec);}*//*//設(shè)置dos系統(tǒng)日期 Turbo C 下使用void main(){ struct date setd,now; struct date,origind; getdate(&origind); printf("original date is :%d--%d--%d/n",origind.da_year,origind.da_mon,origind.da_day); setd.da_year=2008; setd.da_mon=10; setd.da_day=23; setdate(&setd); getdate(&now); printf(" date after setting is :%d--%d--%d/n",now.da_year,now.da_mon,now.da_day); getch();}*//*//讀取并設(shè)置BIOS的時(shí)鐘void main(){ long origin,new; origin=biostime(0,0); printf("The current time is %ld/n",origin); new=biostime(1,500); //設(shè)置BIOS時(shí)鐘 printf("The new time is %ld/n",new);}//long biostime(int cmd,long mewtime)該函數(shù)的作用是讀取或設(shè)置BIOS時(shí)鐘,如果cmd為0,biostime()函數(shù)//返回該時(shí)鐘的當(dāng)前值;如果cmd為1,biostime()函數(shù)把時(shí)鐘設(shè)置為newtime的值,其原型在bios.h中//BIOS的時(shí)鐘以每秒約18.2次的脈沖速率運(yùn)行。它的值在午夜12點(diǎn)時(shí)為0,隨時(shí)間不斷增長(zhǎng),直到//午夜又被設(shè)置為0,或者被人為地設(shè)置成某個(gè)值*//*//任意大寫(xiě)字母變小寫(xiě)void main(){ char str[50]; printf("Please input string:/n"); gets(str); strlwr(str); puts(str); printf("/n");}*//*//字符串復(fù)制到指定空間void main(){ char str1[30],str2[30],*p1,*p2; printf("please input string1:/n"); gets(str1); printf("please input string2:/n"); gets(str2); p1=strdup(str1); p2=strdup(str2); printf("string1:%s/nstring2:%s",p1,p2); printf("/n");}//char* strdup(char *str)該函數(shù)的作用有兩個(gè):第一,按字符串str的長(zhǎng)度在內(nèi)存中分配出空間;第二,將str的內(nèi)容復(fù)制到該空間中。該函數(shù)返回指向該存放區(qū)域的指針*//*//查找位置信息//從鍵盤(pán)中輸入str1和str2,查找str1字符串中第一個(gè)不屬于str2字符串中字符的位置,并將該位置輸出;//再?gòu)逆I盤(pán)中輸入str3和str4,查找在str3中是否包含str4,無(wú)論包含與否都給出提示信息void main(){ char str1[30],str2[30],str3[30],str4[30]; char *p; int pos; printf("please input string1:"); gets(str1); printf("please input string2:"); gets(str2); pos=strspn(str1,str2); //調(diào)用函數(shù)找出不同的位置 //char* strspn(char *str1,char *str2)該函數(shù)的作用是his在str1中尋找第一個(gè)不屬于str2字符串 //中字符的位置。該函數(shù)返回str1中第一個(gè)與str2人一個(gè)字符不相匹配的字符下標(biāo)。 printf("The position you want to find is:%d/n",pos); printf("please input string3:"); gets(str3); printf("please input string4:"); gets(str4); p=strstr(str3,str4);//查看str3中是否包含str4 if(p) { printf("str3 include str4/n"); } else { printf("can not find str4 in str3!/n"); }}*//*//復(fù)制當(dāng)前目錄//將當(dāng)前的工作目錄復(fù)制到數(shù)組cdir中并在屏幕上輸出void main(){ char cdir[MAXDIR]; strcpy(cdir,"c://"); cdir[0]='A'+getdisk(); if(getcurdir(0,cdir+3)) //將當(dāng)前目錄復(fù)制到cdir+3開(kāi)始的數(shù)組中 { printf("error/n"); exit(1); } printf("The current directory is: %s/n",cdir);}//int getdisk(void)函數(shù)作用是返回當(dāng)前驅(qū)動(dòng)器名的代碼。驅(qū)動(dòng)器A為0,驅(qū)動(dòng)器B為1,依次類(lèi)推//int getcurdir(int driver,char *dir)函數(shù)的作用是把driver所指定的當(dāng)前工作目錄復(fù)制到由dir所指向的字符串中//若driver為0,則指的是默認(rèn)驅(qū)動(dòng)器,驅(qū)動(dòng)器A用1,驅(qū)動(dòng)器B用2,依此類(lèi)推*//*//產(chǎn)生唯一文件//編程實(shí)現(xiàn)在當(dāng)前目錄中產(chǎn)生一個(gè)唯一的文件void main(){ char *filename="mingriXXXXXX",*p; //為filename賦值 p=mktemp(filename);//該函數(shù)的作用是產(chǎn)生一個(gè)唯一的文件名,并且把它復(fù)制到由filename所指向的字符串中。當(dāng)調(diào)用 //mktemp()函數(shù)時(shí),由filename所指向的字符串必須包含以空為結(jié)束符的6個(gè)X,該函數(shù)把這個(gè)字符串轉(zhuǎn)換為唯一的文件名,但未建立文件。 //如果成功,mktemp()函數(shù)返回指向filename的指針,否則返回空。 printf("%s/n",p);}//在codeblocks下運(yùn)行出錯(cuò)沒(méi)有顯示結(jié)果*///不同亮度顯示//調(diào)用highvideo(),lowvideo(),normvideo()函數(shù)使字符以不同亮度顯示//原型在conio.h中//字母檢測(cè)//從鍵盤(pán)中任意輸入一個(gè)字母或數(shù)字或其他字符,編程實(shí)現(xiàn)當(dāng)輸入字母時(shí)提示"輸入的是字母",否則提示//”輸入的不是字母“//isalpha()函數(shù)檢測(cè)輸入的是否是字母,原型在ctype.h中/*//建立目錄void main(){ if(!mkdir("temp")) //調(diào)用函數(shù)以temp為路徑名建立一個(gè)目錄 //int mkdir(char *path)函數(shù)的作用是由path所指向的路徑名建立一個(gè)目錄,該函數(shù)如果 //成功,則返回0,否則返回-1 printf("directory temp is created/n"); else { printf("unable to create new directory/n"); exit(1); }}*//*//刪除目錄void main(){ char *name[10]; printf("please input directory name;/n"); scanf("%s",name); printf("Press any key,and the directory will be removed/n"); getch(); if(!rmdir(name)) //刪除時(shí)目錄必須是空的,必須不是當(dāng)前工作目錄,也不能是根目錄 printf("Directory is removed./n"); else printf("can not remove");}*///qsort()函數(shù)實(shí)現(xiàn)升序和降序排列/*//設(shè)置組合鍵//編程實(shí)現(xiàn)檢測(cè)Ctrl+Break的當(dāng)前狀態(tài),并設(shè)置Ctrl+Break狀態(tài)顯示在屏幕上void main(){ printf("/nThe status of Ctrl+Break %s",(getcbrk())?"On":"Off"); //檢測(cè)當(dāng)前Ctrl+Break狀態(tài) printf("press any key to see the status of Ctrl+Break:"); getch(); setcbrk(1); printf("/nThe status of Ctrl+Break %s",(getcbrk())?"On":"Off"); printf("press any key to see the status of Ctrl+Break:"); getch(); setcbrk(0); printf("/nThe status of Ctrl+Break %s",(getcbrk())?"On":"Off");}//int getcbrk(void)函數(shù)作用是檢測(cè)Ctrl+Break是關(guān)閉還是打開(kāi),當(dāng)關(guān)閉時(shí)函數(shù)返回0,當(dāng)打開(kāi)時(shí)函數(shù)返回1//int setcbrk(int cbrkvalue)函數(shù)作用是設(shè)置Ctrl+Break的檢測(cè)狀態(tài)為On或Off.若cbrkvalue=0,則檢測(cè)狀態(tài)為off//若cbrkvalue=1,則檢測(cè)狀態(tài)設(shè)置為On。*//*//獲取當(dāng)前日期和時(shí)間void main(){ time_t now; time(&now); printf("/nNow is: %s",ctime(&now));}*//*//獲取當(dāng)?shù)厝掌诤蜁r(shí)間void main(){ struct tm *tmpointer; time_t secs; time(&secs); tmpointer=localtime(&secs); //輸出本地時(shí)間 printf("Now:%d-%d-%d %d:%d:%d/n",tmpointer->tm_mon,tmpointer->tm_mday,tmpointer->tm_year+1900,tmpointer->tm_hour,tmpointer->tm_min,tmpointer->tm_sec);}*//*//獲取格林尼治平時(shí)void main(){ struct tm *gmtp; time_t secs; time(&secs); gmtp=gmtime(&secs); printf("Greenwich time:%d-%d-%d %d:%d:%d/n",gmtp->tm_mon,gmtp->tm_mday,gmtp->tm_year+1900,gmtp->tm_hour,gmtp->tm_min,gmtp->tm_sec);}*///設(shè)置系統(tǒng)日期/*void main(){ char *str; struct date setdt; getdate(&setdt); //獲取當(dāng)前系統(tǒng)日期 printf("/nSystem date %02d-%02d-%04d",setdt.da_mon,setdt.da_day,setdt.da_year); printf("/n/nPlease set year:"); gets(str); setdt.da_year=atol(str); printf("/nPlease set month:"); gets(str); setdt.da_mon=atol(str); printf("/nPlease set day:"); gets(str); setdt.da_day=atol(str); setdate(&setdt); getdate(&setdt); //獲取當(dāng)前系統(tǒng)日期 printf("/nSystem date %02d-%02d-%04d",setdt.da_mon,setdt.da_day,setdt.da_year);}*///獲取BIOS常規(guī)內(nèi)存常量//計(jì)算機(jī)的地址空間為1MB,其中低端640KB用作RAM,供DOS及應(yīng)用程序使用。低端的640KB成為常規(guī)內(nèi)存,//int biosmemory()函數(shù)作用是返回常規(guī)內(nèi)存大小,以KB為單位/*//讀/寫(xiě)B(tài)IOS計(jì)時(shí)器 Turbo c #include<bios.h>void main(){ long ticks; char *str; ticks=biostime(0,ticks); //獲取BIOS計(jì)時(shí)器數(shù)值 printf("/nTicks since midnight %ld/n",ticks); getch(); printf("/nPlease input the numbers of ticks /n"); gets(str); ticks=biostime(1,atol(str)); //將字符串轉(zhuǎn)換為整數(shù)并設(shè)置BIOS計(jì)時(shí)器數(shù)值 printf("/nTicks since midnight %ld/n",ticks); //輸出BIOS計(jì)時(shí)器數(shù)值}//int biostime(int cmd,long newtime);函數(shù)作用是計(jì)時(shí)器控制,cmd為功能號(hào),其值為0時(shí)//函數(shù)返回計(jì)時(shí)器的當(dāng)前值;為1時(shí),將計(jì)時(shí)器設(shè)為新值newtime*//*//獲取CMOS密碼//CMOS是計(jì)算機(jī)主板上的一塊可讀寫(xiě)的RAM芯片,主要用來(lái)保存當(dāng)前系統(tǒng)的硬件配置,為了防止他人隨意更改硬件設(shè)置//需要為CMOS設(shè)置密碼。當(dāng)計(jì)算機(jī)使用者將密碼遺忘時(shí),為了保全當(dāng)前的硬件配置信息就不能金習(xí)慣//清空CMOS的操作,而需要使用應(yīng)用程序獲取CMOS的密碼。本實(shí)例介紹獲取AWARD公司BIOS 的CMOS密碼的辦法void main(){ int n; char comspass; char temp=0; int result; printf("/nThis program only is tested at win98 and award bios!!/n"); printf("The passWord of the cmos is:"); outportb(0x70,0x1d); //在0x70地址寫(xiě)入字節(jié)0x1d comspass=importb(0x71); for(n=6;n>=0;n-=2) { temp=comspass; //記錄0x71地址的字節(jié)內(nèi)容 temp>>=n; temp=temp&0x03; //與0x0x與運(yùn)算 printf("%d",temp); //以四進(jìn)制形式輸出0x1d地址處的數(shù)據(jù) } outport(0x70,0x1c); result=importb(0x71); for(n=6;n>=0;n-=2) { temp=comspass; //記錄0x71地址的字節(jié)內(nèi)容 temp>>=n; temp=temp&0x03; //與0x0x與運(yùn)算 printf("%d",temp); //以四進(jìn)制形式輸出0x1c地址處的數(shù)據(jù) }}//AWARD公司BIOS的CMOS密碼存放在CMOS芯片0x1c,0x1d處的兩個(gè)字節(jié)中,將這兩個(gè)字節(jié)的數(shù)據(jù)//讀取出來(lái)并用四進(jìn)制表示,就是密碼。讀取0x1c,0x1d處的兩個(gè)字節(jié)數(shù)據(jù)需要”字節(jié)寫(xiě)入指定的輸出端口“//”從指定的輸入端口讀取字節(jié)“兩個(gè)步驟//獲取Ctrl+Break消息//在一般狀態(tài)下,DOS程序運(yùn)行時(shí)按Ctrl+Break組合鍵后可以終止撐血進(jìn)行。當(dāng)運(yùn)行中的程序收到Ctrl+break//消息后可以執(zhí)行相應(yīng)的操作//鼠標(biāo)中斷//鼠標(biāo)的作用是為了使計(jì)算機(jī)的操作更加簡(jiǎn)單快捷,代替鍵盤(pán)繁瑣的指令。在DOS程序的開(kāi)發(fā)過(guò)程中,如果要求應(yīng)用程序可以使用鼠標(biāo)進(jìn)行//相關(guān)的操作,那么久需要設(shè)置鼠標(biāo)中斷。本實(shí)例通過(guò)設(shè)置鼠標(biāo)中斷,實(shí)現(xiàn)或隱藏鼠標(biāo)的功能void main(){ union REGS regs; //定義寄存器型共同體 int mousedr; system("cls"); printf("Initializing Mouse...../n/n"); regs.x.ax=0; //設(shè)置ax的值為0 int86(0x33,&regs,&regs); mousedr=regs.x.ax; if(mousedr==0) { printf("initialize mouse error!"); exit(1); } printf("Finished initializing!/n/n"); printf("Showing Mouse..."); regs.x.ax=1; int86(0x33,&regs,&regs); printf("you can use the mouse..../n/n"); printf("Press any key to hide the mouse./n"); getch(); regs.x.ax=2; int86(0x33,&regs,&regs); printf("/nThe mouse is hided./n"); getc();}*//*//訪問(wèn)系統(tǒng)temp中的文件void main(){ char *pathname,filename[30],ch; FILE *fp; pathname=getenv("TEMP"); //獲取臨時(shí)文件夾路徑 //該函數(shù)的作用是返回一個(gè)指向環(huán)境信息的指針,該信息與由name所指向的在DOS環(huán)境 //信息表中有關(guān)的字符串有關(guān)。如果用一個(gè)與任何環(huán)境數(shù)據(jù)都不匹配的參數(shù)調(diào)用getenv(); //則返回的是空指針。 printf("/nCurrent path is:%s/n",pathname); printf("press any key to open one file!/n"); getch(); strcat(pathname,"http://new.txt"); strcpy(filename,pathname); if((fp=fopen(filename,"r"))!=NULL) { printf("/nThe name of the file is"); printf("/n%s",filename); printf("/nThe content of the file is/n"); ch=fgetc(fp); while(ch!=EOF) { printf("%c",ch); ch=fgetc(fp); } fclose(fp); } else printf("can not open!/n");}*//*//控制揚(yáng)聲器聲音void main(){ unsigned fre=50; int times; for(times=0;times<1000;times++) { fre=(fre+times)&40000; //生成聲音頻率 sound(fre); delay(1000); } nosound();}*///獲取Caps Lock鍵狀態(tài)/*void main(){ int value=0; printf("/nThe current status of the Caps Lock key is:/n"); value=peekb(0x0040,0x0017); //獲取段地址為0x0040,偏移地址為0x0017的字節(jié)集單元信息 if(value&64) //當(dāng)獲取的字節(jié)單元的值 { printf("/n/nThe Caps Lock ky is: on"); } else { printf("/n/nThe Caps Lock ky is: off"); }}*///獲取環(huán)境變量//環(huán)境變量是包含計(jì)算機(jī)名稱(chēng)、驅(qū)動(dòng)器、路徑之類(lèi)的字符串。環(huán)境變量控制著多種程序的行為/*void main(){ char *path,*ptr; int i=0; puts("This program is to get the information of environ:/n"); while(environ[i]) printf(">>%s/n",environ[i++]);}*//*//貪吃蛇游戲#include<graphics.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define N 100 //貪吃蛇的最大長(zhǎng)度int i,key;int speed;void GameOver(); //結(jié)束游戲void Play(); //玩游戲過(guò)程void dwall(); //畫(huà)墻void wall(int x,int y); //畫(huà)組成墻的磚int speed(); //選擇貪吃蛇的速度//定義結(jié)構(gòu)體,F(xiàn)OOD是表示食物基本信息的結(jié)構(gòu)體,Snake是定義貪吃蛇基本信息的結(jié)構(gòu)體struct FOOD{ int x; //食物的橫坐標(biāo) int y; //食物的縱坐標(biāo) int flag; //標(biāo)志是否要出現(xiàn)事物}food;struct Snake{ int x[N]; int y[N]; int node; //蛇的節(jié)數(shù) int dir; //蛇移動(dòng)方向 int life; //標(biāo)志是死是活}snake;//自定義函數(shù)wall(),用來(lái)畫(huà)組成墻的磚void wall(int x,int y){ int sizx=9; int sizy=9; setcolor(15); //白色畫(huà)磚的上邊和左邊 line(x,y,x+sizx,y); line(x,y+1,x+sizx-1,y+1); line(x,y,x,y+sizy); line(x+1,y,x+1,y+sizy-1); setcolor(4); //紅色畫(huà)磚的右邊和下邊 line(x+1,y+sizy,x+sizx,y+sizy); line(x+2,y+sizy-1,x+sizx,y+sizy-1); line(x+sizx-1,y+2,x+sizex-1,y+sizy-1); line(x+size,y+1,x+sizx,y+sizy); setfillstyle(1,12); //用淡紅色填充磚的中間部分 bar(x+2,y+2,x+sizx-2,y+sizy-2);}//自定義函數(shù)dwall(),用來(lái)畫(huà)墻void dwall(){ int i; for(j=50;j<=600;j+=10) { wall(j,40); //畫(huà)上面墻 wall(j,451); //畫(huà)下面墻 } for(j=40;j<=450;j+=10) { wall(50,j); //畫(huà)左面墻 wall(601,j); //畫(huà)右面墻 }}//自定義函數(shù)speed(),用來(lái)選擇貪吃蛇的速度int speed(){ int m; gotoxy(20,10); printf("level 1/n"); gotoxy(20,12); printf("level 2/n"); gotoxy(20,14); printf("level 3/n/t/tplease choose:"); scanf("%d",&m); switch(m) { case 1: return 60000; case 2: return 40000; case 3: return 20000; default: cleardevice(); speed(); }}//自定義函數(shù)play(),用來(lái)實(shí)現(xiàn)貪吃蛇游戲的具體過(guò)程void play(){ srand((unsigned long)time(0)); food.flag=1; //1表示需出現(xiàn)新事物,0表示食物已存在 snake.life=0; //標(biāo)志貪吃蛇或者 snake.dir=1; //方向向右 snake.x[0]=300; snake.y[0]=240; snake.x[1]=290; //定義蛇頭初始位置 snake.y[1]=240; snake.node=2; //貪吃蛇節(jié)數(shù)為2節(jié) do { while(!kbhit()) //在沒(méi)有按鍵的情況下,蛇自己移動(dòng)身體 { if(food.flag==1) //需要出現(xiàn)新食物 do { food.x=rand()%520+60; food.y=rand()%370+60; food.flag=0; //標(biāo)志已有食物 } while(food.x%10!=0||food.y%10!=0); if(food.flag==0) //畫(huà)出食物 { setcolor(GREEN); setlinestyle(3,0,3); rectangle(food.x,food.y,food.x+10,food.y+10); } for(i=snake.node-1;i>0;i--) //實(shí)現(xiàn)蛇向前移動(dòng) { snake.x[i]=snake[i-1]; snake.y[i]=snake[i-1]; } switch(snake.dir) { case 1: snake.x[0]+=10; break; //向右移 case 2: snake.x[0]-=10; //向左移 break; case 3: snake.y[0]-=10; //向上移 break; case 4: snake.y[0]+=10; //向下移 break; } for(i=3;i<snake.node;i++) { if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) //判斷蛇是否吃到自己 { GameOver(); //游戲結(jié)束 snake.life=1; //蛇死 break; } } if(snake.x[0]<60||snake.x[0]>590||snake.y[0]<50||snake.y[0]>440) //判斷蛇是否撞到墻壁 { GameOver(); snake.life=1; break; } if(snake.x[0]==food.x&&snake.y[0]==food.y) //判斷是否吃到食物 { setcolor(0); //用背景色遮蓋食物 rectangle(food.x,food.y,food.x+10,food.y+10); snake.node++; //蛇的身體長(zhǎng)一節(jié) food.flag=1; //需要出現(xiàn)新的食物 } setcolor(4); //畫(huà)蛇 for(i=0;i<snake.node;i++) { setlinestyle(0,0,1); rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10); } delay(speed); setcolor(0); //用背景色遮蓋掉蛇的最后一節(jié) rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]+10); } if(snake.life==1) //如果蛇死就跳出循環(huán) { break; } key=bioskey(0); //接收按鍵 if(key==UP&&snake.dir!=4) //判斷是否向相反的方向移動(dòng) { snake.dir=3; } else { if(key=DWON &&snake.dir!=3) //判斷是否向相反的方向移動(dòng) { snake.dir=4; } else { if(key==RIGHT &&snake.dir!=2) //判斷是否向相反的方向移動(dòng) { snake.dir=1; } else { if(key==LEFT && snake.dir!=1) { snake.dir=2; } } } } } while(key!=ESC); //按ESC鍵退出游戲}//自定義函數(shù)GameOver(),用來(lái)提示游戲結(jié)束void GameOver(){ cleardevice(); setcolor(RED); settextstyle(0,0,4); outtextxy(50,200,"GAME OVER,BYE BYE!"); _sleep(10000);}void main(){ int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,""); speed=speed(); cleardevice(); dwall(); play(); getch(); closegraph();}*//*在編寫(xiě)貪吃蛇游戲時(shí)要注意以下幾點(diǎn):(1)如何實(shí)現(xiàn)蛇在吃到食物后食物消失。這里用到的方法是采用背景色在出現(xiàn)食物的地方重畫(huà)食物,這樣食物就不見(jiàn)了。(2)如何實(shí)現(xiàn)蛇的移動(dòng)且在移動(dòng)的過(guò)程中不留下痕跡。實(shí)現(xiàn)蛇的移動(dòng)也是貪吃蛇游戲最核心的技術(shù),主要方法是將蛇頭后面的每一節(jié)逐次移到前一節(jié)的位置,然后按蛇的運(yùn)行方向不同對(duì)蛇頭的位置做出相應(yīng)的調(diào)整。這里以向右運(yùn)行為例,當(dāng)蛇向右運(yùn)行時(shí)蛇頭的橫坐標(biāo)加10縱坐標(biāo)不變,蛇每向前運(yùn)行一步,相應(yīng)地將其尾部一節(jié)用背景色重畫(huà),即去掉其尾部(3)當(dāng)蛇向上運(yùn)行時(shí),從鍵盤(pán)中輸入向下鍵,此時(shí)蛇的運(yùn)行防線不變,其他幾個(gè)方向依次類(lèi)推,本實(shí)例采用了if...else語(yǔ)句來(lái)實(shí)現(xiàn)該功能(4)食物出現(xiàn)的位置采用隨機(jī)產(chǎn)生,但這種隨機(jī)產(chǎn)生也是有一定限制條件,即食物出現(xiàn)位置的橫坐標(biāo)必須能被10整除,只有這樣才能保證蛇能夠吃到食物。*///指針章/*//使用指針實(shí)現(xiàn)整數(shù)排序void swap(int *p1,int *p2) //用于實(shí)現(xiàn)數(shù)據(jù)的交換{ int temp; temp=*p1; *p1=*p2; *p2=temp;}void exchange(int *pt1,int *pt2,int *pt3) //用于比較數(shù)值大小{ //從大到小的順序排列 if(*pt1<*pt2) swap(pt1,pt2); if(*pt1<*pt3) swap(pt1,pt3); if(*pt2<*pt3) swap(pt2,pt3);}void main(){ int a,b,c,*q1,*q2,*q3; printf("please input three key numbers you want to rank:/n"); scanf("%d,%d,%d",&a,&b,&c); q1=&a,q2=&b,q3=&c; exchange(q1,q2,q3); printf("%d,%d,%d/n",a,b,c);}*///用指針數(shù)組構(gòu)造字符串?dāng)?shù)組/*void main(){ char *Week[]={ "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday" }; int i; printf("Please enter a number for week/n"); scanf("%d",&i); printf("The week is:"); printf("%s/n",Week[i-1]);}*//*常用數(shù)據(jù)結(jié)構(gòu)*//*//比較計(jì)數(shù)//用比較計(jì)數(shù)法對(duì)結(jié)構(gòu)數(shù)組a按字段num進(jìn)行升序排序,num的值從鍵盤(pán)中輸入。#define N 5struct order{ int num; int con;}a[20];void main(){ int i,j; for(i=0;i<N;i++) { scanf("%d",&a[i].num); a[i].con=0; } for(i=N-1;i>=1;i--) for(j=i-1;j>=0;j--) if(a[i].num<a[j].num) //對(duì)數(shù)組中的每個(gè)元素和其他元素進(jìn)行比較 a[j].con++; //記錄排序號(hào) else a[i].con++; printf("各數(shù)的順序是:/n"); for(i=0;i<N;i++) printf("%3d%3d/n",a[i].num,a[i].con+1); //將數(shù)據(jù)及其排序輸出}*//*//找出最高分struct student{ int num; char name[20]; float score;};void main(){ int i,m; float maxscore; struct student stu[5]= { {101,"李明",89}, {102,"苑大",95}, {103,"孫佳",89}, {104,"王子川",85}, {105,"劉春月",75} }; m=0; maxscore=stu[0].score; for(i=1;i<5;i++) { if(stu[i].score>maxscore) { maxscore=stu[i].score; m=i; } } printf("最高分是:%5.1f/n",maxscore); printf("最高分學(xué)生的學(xué)號(hào):%d/n",stu[m].num); printf("最高分學(xué)生的姓名:%s/n",stu[m].name);}*///候選人選票程序/*struct candidate{ char name[20]; int count;}cndt[3]={{"王",0},{"張",0},{"李",0}};void main(){ int i,j; char Ctname[20]; for(i=1;i<=10;i++) { scanf("%s",&Ctname); //輸入候選人姓名 for(j=0;j<3;j++) { if(strcmp(Ctname,cndt[j].name)==0) cndt[j].count++; } } for(i=0;i<3;i++) { printf("%s : %d/n",cndt[i].name,cndt[i].count); }}*//*//計(jì)算開(kāi)機(jī)時(shí)間//編程實(shí)現(xiàn)計(jì)算開(kāi)機(jī)時(shí)間,要求在每次開(kāi)始計(jì)算開(kāi)機(jī)時(shí)間都能接著上次記錄的結(jié)果向下記錄struct time{ int hour; int minute; int second;}t;void main(){ FILE *fp; fp=fopen("Time","r"); //以只讀方式打開(kāi)Time fread(&t,sizeof(struct time),1,fp); //讀取文件信息 while(!kbhit()) //當(dāng)按鍵時(shí)執(zhí)行循環(huán)體語(yǔ)句 { rewind(fp); //將文件指針設(shè)置到文件起點(diǎn) _sleep(1000); //程序停止1秒鐘 fread(&t,sizeof(struct time),1,fp); if(t.second==59) { t.minute+=1; if(t.minute==60) { t.hour+=1; t.minute=0; } t.second=0; } else t.second+=1; printf("%d:%d:%d/n",t.hour,t.minute,t.second); fp=fopen("Time","w"); fwrite(&t,sizeof(struct time),1,fp); fclose(fp); }}//實(shí)例中以秒為單位讀取系統(tǒng)時(shí)間,將讀取的時(shí)間存到指定磁盤(pán)文件中,每次開(kāi)始計(jì)時(shí)的時(shí)候就從該磁盤(pán)文件中//讀取上次記錄的時(shí)間接著計(jì)時(shí),當(dāng)秒數(shù)達(dá)到60,則分鐘數(shù)加1;如果分鐘數(shù)達(dá)到60,則小時(shí)數(shù)加1*//*//取出整型數(shù)據(jù)的高字節(jié)數(shù)據(jù)union //定義共同體,共用兩個(gè)字節(jié)單元空間{ char ch[2]; int num;}word;void main(){ word.num=0x1234; printf("十六進(jìn)制數(shù)是: %x/n",word.num); printf("高字節(jié)位數(shù)據(jù)是:%x/n",word.ch[1]); word.ch[1]="b"; printf("現(xiàn)在這個(gè)數(shù)變?yōu)椋?x/n",word.num);}*///使用共用體存放學(xué)生和老師信息/*根據(jù)輸入的職業(yè)標(biāo)識(shí),區(qū)分是老師還是學(xué)生,然后根據(jù)輸入的信息,將對(duì)應(yīng)的信息輸出。如果是學(xué)生則輸出班級(jí)如果是老師則輸出職位*//*struct{ int num; char name[10]; char tp; union { int inclass; char position[10]; }job;}person[2];void main(){ int i; printf("請(qǐng)輸入個(gè)人信息:/n"); for(i=0;i<2;i++) { printf("第%d個(gè)人/n",i+1); scanf("%d%s%c",&person[i].num,person[i].name,&person[i].tp); if(person[i].tp=='s') scanf("%d",&person[i].job.inclass); //輸入工作類(lèi)型 else if(person[i].tp=='t') scanf("%s",person[i].job.position); else printf("輸入有誤!"); } printf("/n 編號(hào) 姓名 類(lèi)型 班級(jí)/職位/n"); for(i=0;i<2;i++) { if(person[i].tp=='s') printf("%d/t%s/t%c/t%d",person[i].num,person[i].name,person[i].tp,person[i].job.inclass); else if(person[i].tp=='t') printf("%d/t%s/t%c/t%s",person[i].num,person[i].name,person[i].tp,person[i].job.position); printf("/n"); }}*//*//創(chuàng)建單向鏈表#include<malloc.h>struct Node{ int data; struct Node *next;};struct Node *create(int n){ int i; struct Node *head,*p1,*p2; int a; head=NULL; printf("輸入整數(shù):/n"); for(i=n;i>0;--i) { p1=(struct Node*)malloc(sizeof(struct Node)); scanf("%d",&a); p1->data=a; if(head==NULL) //指定頭節(jié)點(diǎn) { head=p1; p2=p1; } else { p2->next=p1; //指定后繼指針 p2=p1; } } p2->next=NULL; return head;}void main(){ int n; struct Node *q; printf("輸入你想創(chuàng)建的節(jié)點(diǎn)的個(gè)數(shù):/n"); scanf("%d",&n); q=create(n); printf("結(jié)果是:/n"); while(q) { printf("%d ",q->data); q=q->next; }; printf("/n");}//鏈表是動(dòng)態(tài)分配存儲(chǔ)空間的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),其包括一個(gè)”頭指針“變量,頭指針中存放一個(gè)地址,該地址指向一個(gè)元素*//*//創(chuàng)建雙向鏈表typedef struct node{ char name[20]; struct node *prior,*next; //prior直接前驅(qū)指針,next直接后繼指針}stud;stud * creat(int n){ stud *p,*h,*s; int i; h=(stud*)malloc(sizeof(stud)); h->name[0]='/0'; h->prior=NULL; h->next=NULL; p=h; for(i=0;i<n;i++) { s=(stud *)malloc(sizeof(stud)); p->next=s; printf("輸入第%d個(gè)學(xué)生的姓名:",i+1); scanf("%s",s->name); s->prior=p; //指定前驅(qū)節(jié)點(diǎn) s->next=NULL; p=s; } p->next=NULL; return h;}stud *search(stu *h,char *x){ stud *p; char *y; p=h->next; while(p) { y=p->name; if(strcmp(y,x)==0) //如果是要?jiǎng)h除的節(jié)點(diǎn),則返回地址 return p; else p=p->next; } printf("沒(méi)有找到數(shù)據(jù)!/n");}void del(stud *p){ p->next->prior=p->prior; p->prior->next=p->next; free(p);}void main(){ int number; char sname[20]; stu *head,*sp; printf("請(qǐng)輸入鏈表的大小:"); scanf("%d",&number); //輸入鏈表節(jié)點(diǎn)數(shù) head=creat(number); sp=head->next; printf("/n現(xiàn)在這個(gè)雙鏈表是:/n"); while(sp) { printf("%s",&*(sp->name)); sp=sp->next; } printf("/n請(qǐng)輸入你想查找的姓名:/n"); scanf("%s",sname); sp=scarch(head,sname); //查找指定節(jié)點(diǎn) printf("你想查找的姓名是:%s/n",*&sp->name); del(sp); sp=head->next; printf("現(xiàn)在這個(gè)雙鏈表是:/n"); while(sp) { printf("%s",&*(sp->name)); //輸出當(dāng)前鏈表中數(shù)據(jù) sp=sp->next; } printf("/n"); puts("/n 按任意鍵退出....");}//單向鏈表節(jié)點(diǎn)的存儲(chǔ)結(jié)構(gòu)只有一個(gè)指向直接后繼的指針域,所以從單鏈表的某個(gè)節(jié)點(diǎn)出發(fā)只能順時(shí)針查詢(xún)其他節(jié)點(diǎn)。使用雙向鏈表//可以避免單向鏈表這種單向性的缺點(diǎn)*/
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞丽市| 巢湖市| 崇明县| 德清县| 沅江市| 凌云县| 宿迁市| 阿拉善右旗| 崇明县| 莲花县| 新晃| 株洲市| 麦盖提县| 江油市| 富阳市| 高安市| 古丈县| 大悟县| 江永县| 甘孜| 兴文县| 集贤县| 云和县| 隆化县| 郴州市| 荃湾区| 高青县| 和林格尔县| 德格县| 澄迈县| 昔阳县| 大方县| 霍州市| 民县| 琼结县| 八宿县| 库尔勒市| 苗栗市| 乌审旗| 兰西县| 准格尔旗|