99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

c語言drop函數 dropout函數

C語言問題!請進!

#include "graphics.h"

彭澤網站制作公司哪家好,找創新互聯建站!從網頁設計、網站建設、微信開發、APP開發、響應式網站設計等網站項目制作,到程序開發,運營維護。創新互聯建站于2013年成立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯建站

#include "stdlib.h"

#include "stdio.h"

#include "fcntl.h"

#include "dos.h"

union REGS r;

struct MOUSE{

int getit;

int x1;

int y1;

int x2;

int y2;

}ms;

void MSB(float,float,float,float,int,int,int,int,int);

void mouse_drop(struct MOUSE *in);

/*定義鼠標拖動的函數,通過鼠標的按下、放開來選定一個矩形區域*/

int data_processor(struct MOUSE m,float *x0,float *x1,float *y0,float *y1);

/*將鼠標選定的區域轉化成MSB集的區域*/

void mouse_IQR(int *num,int *bx,int *cx,int *dx)

{/*調用鼠標的中斷,在這里定義函數讓下面一些函數調用,以減少編程的重復,

在這里,通過int86函數(在dos.h里)調用中斷,鼠標的中斷號為:33h */

r.x.ax=*num;

r.x.bx=*bx;

r.x.cx=*cx;

r.x.dx=*dx;

int86(0x33,r,r);

*bx=r.x.bx;

*cx=r.x.cx;

*dx=r.x.dx;

*num=r.x.ax;

}

int init_mouse()

{

/*初試化鼠標,查詢鼠標驅動有沒有安裝,功能號為 0 */

int num=0;

mouse_IQR(num,num,num,num);

if(num!=-1)

return 1;

else return 0;

}

void mouse_show();

void mouse_position(int *x,int *y)

{/*鼠標在屏幕中所處的位置*/

int button=0,num=3;

mouse_show();

mouse_IQR(num,button,x,y);

}

void mouse_hide()

{/*隱藏鼠標光標*/

int num=2;

mouse_IQR(num,num,num,num);

}

void mouse_show()

{/*顯示鼠標光標*/

int num=1;

mouse_IQR(num,num,num,num);

}

int mouse_click(int k)

{/*查詢鼠標是使用左鍵(返回1)還是右鍵(返回2)*/

int bx=0,num=3;

mouse_IQR(num,bx,num,num);

return(bxk);

}

void waiton(int buttom)

{/*等待鼠標動作*/

if(buttom==1)

while(mouse_click(1));

if(buttom==2)

while(mouse_click(2));

}

int mousexy(int x1,int y1,int x2,int y2)

{/*查詢鼠標是否在區域內*/

int x,y;

mouse_position(x,y);

if(xx1xy1yL||m-1e10) break;

x=xx;

y=yy;

}

color=n%16;

putpixel(x1+i,y1+j,color);

}

}

}

void mouse_drop(struct MOUSE *in)

{

char out[20];

int x,y;

int oldx,oldy;

struct MOUSE r;

r=*in;

setwritemode(1);

setlinestyle(USERBIT_LINE,0x7777,1);

setcolor(15);

if(r.getit==1)

{

mouse_hide();

rectangle(r.x1,r.y1,r.x2,r.y2);

mouse_show();

}

mouse_position(x,y);

r.x1=x;

r.y1=y;

oldx=x;

oldy=y;

r.getit=1;

mouse_hide();

rectangle(x,y,x,y);

mouse_show();

while(mouse_click(1)) {mouse_position(x,y);

if(oldx!=x || oldy!=y){

mouse_hide();

rectangle(r.x1,r.y1,x,y);

rectangle(r.x1,r.y1,oldx,oldy);

mouse_show();

oldx=x;

oldy=y;

}

if(mouse_click(2)){

r.getit=0;

mouse_hide();

rectangle(r.x1,r.y1,oldx,oldy);

mouse_show();

waiton(2);

break;}

}

if(r.getit==1){

r.x2=x;

r.y2=y;

if(x==r.x1 r.y1==y)

r.getit=0;

else

r.getit=1;

}

setlinestyle(SOLID_LINE,0,1);

*in=r;

waiton(1);

setwritemode(0);

setmouse(0,0,getmaxx(),getmaxy());

}

int data_processor(struct MOUSE m,float *x0,

float *x1,float *y0,float *y1)

{

float d1,l1,d2,l2,d,l;

float xx0,xx1,yy0,yy1,x,y;

d1=*x1-*x0;

l1=*y1-*y0;

d2=637;

l2=477;

xx0=m.x1;

xx1=m.x2;

yy0=m.y1;

yy1=m.y2;

if(xx0==xx1 || yy0==yy1) return(0);

if(xx0xx1)

{x=xx0;

xx0=xx1;

xx1=x;

}

if(yy0yy1)

{x=yy0;

yy0=yy1;

yy1=x;

}

d=1;

l=1;

x=*x0;

y=*y0;

*x0=x+(xx0-d)*d1/d2;

*x1=x+(xx1-d)*d1/d2;

*y0=y+(yy0-l)*l1/l2;

*y1=y+(yy1-l)*l1/l2;

if(*x0==*x1 || *y0==*y1)

return(0);

else

return(1);

}

不懂再問!

c語言的問題!!!急求!!

幾個問題,需要注意:

1.

char?temp=fgetc(fp);

這個只對了一個字符,后面的char指針 ch, 指向的是一個字符,而不是一個字符串,因此不能比較;而且此時文件的位置指向的最尾處,字符temp;里面啥都沒有(或者說是一個結尾符)

2. 字符串的比較:

if(ch=="create?schema;")

有問題,除了上面說的此時ch的內容肯定不會和create scheme;相同,c語言的字符比較一般是:

if(strcmp(ch,"create?schema;"))

因為字符串的比較,長度和結尾是一個大問題,因此為了安全甚至用strncmp

3. 其他一些問題, 文件讀取完畢后,應該fclose;字符串比較的大小問題是否要考慮? 用戶輸入的保護(用戶不小心亂輸入過長的字符串等。。)

4. 針對1~3, 簡單的修改了一下,確保你的運行,其余的自己酌情考慮吧。。。

#include?string.h

...

void?choose()

{

FILE?*?fp;

fp=fopen("creat_schema.txt","r+");

int?i=0;

char?c;

do

{

c=getchar();

putc(c,fp);

}

while?(c!=';');

rewind(fp);

/*

char?temp=fgetc(fp);

char?*?ch=temp;

*/

char?temp[100];

fgets(temp,?100,?fp);

char?*ch?=?temp;

fclose(fp);

/*

if(ch=="create?schema;")?????create_schema();

else?if(ch=="create?table;")?????create_table();

else?if(ch=="drop?schema;")????drop_schema();

else?if(ch=="drop?table;")????drop_table();

else?if(ch=="alter?table;")????alter_table();

*/

if(strcmp(ch,"create?schema;"))?????create_schema();

else?if(strcmp(ch,"create?table;"))?????create_table();

else?if(strcmp(ch,"drop?schema;"))????drop_schema();

else?if(strcmp(ch,"drop?table;"))????drop_table();

else?if(strcmp(ch,"alter?table;"))????alter_table();

else

{

printf("ch?=?%s\n",?ch);

printf("error!\n");

exit(0);

}????

}

c語言編程題

#include?stdio.h

/*?入參一:需要做處理的全字串?

*?入參二:需要刪除的字串

*?返回值:經過處理后的字串?

*?要求是指針處理?如果可以使用strlen和memcpy等會更容易理解

*/

char?*myf_delsubstr(char?*str_all,?char?*str_drop)

{?

char?*all?=?str_all;???//臨時指針?指向全字串

char?*drop?=?str_drop;?//臨時指針?指向待刪除字串

char?*tmp?=?NULL;??????//臨時指針?后面處理字串時使用

static?char?out[1024]?=?{0};?//靜態字串?作為返回值

char?*u?=?out;?????????//臨時指針?指向返回的字串

int?drop_len?=?0;??????//待刪除字串的長度

//獲取待刪除字串的長度

while?('\0'?!=?*drop)

{

drop++;

drop_len++;

}

//在獲取長度時drop這個指針的指向已被改變?重新賦值

drop?=?str_drop;

/*?雙層嵌套循環

*?第一層循環遍歷全字串直到找到可能存在待刪除的字串停止

*?第二層循環遍歷待刪除字串?并與當前的全字串對比?一旦發現完整匹配?越過(刪除)該字串

*/

while?('\0'?!=?*all)//直到全字串結尾

{

if?(*all?==?*drop)//發現第一個和待刪除字串的第一個字符相等?準備進入二層循環排除或證明懷疑

{

tmp?=?all;//臨時指針指向當前匹配的字串的首部

while?('\0'?!=?*drop)//直到待刪除字段結尾

{

tmp++;//每次循環臨時全字串和drop字串要往后偏移一位

drop++;//每次循環臨時全字串和drop字串要往后偏移一位

if?(*tmp?!=?*drop)//一旦發現其中一個字符不相等?排除懷疑

{

break;

}

}

if?('\0'?!=?*drop)//如果還未檢查到字串尾就出來了肯定是排除了懷疑

{

*u?=?*all;//既然排除懷疑那就把當前字符賦值到帶返回的字串out中

u++;//賦值后要往后偏移

drop?=?str_drop;

}

else//證實了懷疑

{

all?+=?drop_len;//全字串越過待刪除的字段長度

drop?=?str_drop;//指針的指向已被改變?重新賦值

continue;//全字串中可能不止出現一次待刪除的字串?繼續全字串的檢查

}

}

else

{

*u?=?*all;//既然不是待刪除字符那就把當前字符賦值到帶返回的字串out中

u++;//賦值后要往后偏移

}

all++;//既然是循環整個全字串檢查?檢查完一個字符后指針要往后偏移一位

}

return?out;//u只是指向out這個字串的臨時指針?我們返回的還是out本體

}

int?main(int?argc,?char?*argv[])

{

char?aa[1024]?=?{0};

char?bb[512]?=?{0};

printf("輸入一個字串:\n");

scanf("%s",?aa);

printf("輸入需要刪除的字串:\n");

scanf("%s",?bb);

char?*kk?=?myf_delsubstr(aa,?bb);

printf("處理后的字串:\n%s\n",?kk);

return?0;

}

輸入一個字串:

我覺得你是不可能愛上我的因為我是一個男孩子

輸入需要刪除的字串:

處理后的字串:

覺得你是不可能愛上的因為是一個男孩子

求c語言做的俄羅斯方塊,只要能運行成功,就給分。

C語言實例教程:俄羅斯方塊的編寫

/*

先寫原理:

本次的俄羅斯方塊代碼出其的簡單,比我去年寫的四十幾K要小得多

實際上核心代碼只有3-4K,而且很容易理解,適合有一點C語言基礎并對此

有興趣的人.

這前面只粗略講解核心算法:

這里把游戲的關鍵設計放在三個盒子和一個坐標上:

大盒子:一個兩維數組,記錄著方塊點陣的開與關(把游戲的舞臺想像

成一個點陣),在下面也把這個東西稱為地圖

兩個5*5小盒子:兩維數組,一個盛放著正在下落的方塊,一個盛放在

下一個下落的方塊(即next),當然這兩個也必須想像成一個點陣:如長條

的點陣為:

00000

00100

00100

00100

00100

現在你只要有這么一個概念:一個不斷定時下落的小盒子從大盒子頂

部下降到底部,之后再將next盒子放在下落盒子,再進行下一輪的下落...

中間的控制等尚不要太著急.

現在面臨著一個問題:

下落的盒子和地圖之間要怎么聯系起來?

一個好的方法是再定義一個坐標:x,y,保存著小盒子左上角在地圖上對應

的下標(位置),即當x = 0, y = 0時,小盒子處于地圖的左上部.如此,當

小盒子需要移動時,即只須要改變x,y的值.

現在說說旋轉.

小盒子保存著當前下落形狀的點陣,那么旋轉就只須要將這個點陣旋

轉90度:例如:

00000 00000

00100 00000

00100 - 01111

00100 00000

00100 00000

這一點實現起來還是不太難的.

判斷碰撞

通常這種情況只須要在有移動小盒或旋轉盒子時發生:也即點陣非空

是互斥的,當小盒要向下移(x++)時,如果小盒里的點陣與地圖上的點陣(非

空的地方)重疊,則不能下移,(卡住了),旋轉則轉換后的形狀與地圖有沖

突則要放棄旋轉.

到了這里,你應該有一個大概的了解了,至于怎樣在屏幕上畫出來,這

個是比較簡單的,下面的代碼會慢慢與你解釋.

*/

/*

平臺:DOS+TC2.0

*/

#include stdio.h

#include stdlib.h

#include bios.h /*這里須要讀取系統運行時間來作為定時器*/

#include graphics.h /*很不幸,TC2的簡單圖形,讓我放棄了用*/

#include conio.h /*win32+openGL來講解.*/

#define MAX_X 14 /*可見最大X*/

#define MAX_Y 21 /*可見最大Y*/

/*我們定義了最大的可見X和Y,那么即還有不

可見的部分,事實上地圖(大盒子)里的左右

兩側和底部各兩行都被1填充,這樣大大簡化

出界的判斷,事實上,在本例中沒有這樣的

代碼,因為旁邊有一圈1阻止小盒子越出大

盒子的按制范圍

*/

#define MAX_C 7 /*最大種類,這個無須解釋*/

#define KEY_UP 'w' /*定義上下左右按按鍵*/

#define KEY_DOWN 's'

#define KEY_LEFT 'a'

#define KEY_RIGHT 'd'

#define KEY_ESC 27 /*退出*/

typedef int BOOL;

#define FALSE 0

#define TRUE 1 /*這幾個TC中沒有...自己定義一下吧:)*/

/*時鐘結構*/

typedef struct { /*時鐘結構*/

BOOL enabled; /*時鐘是否開啟*/

unsigned int intervel; /*定時間隔*/

unsigned int lasttime; /*這個屬于內部使用變量*/

} Timer;

/*

*現在進入了編程的初質階段

*在開始處我會寫出所有的函數原形,以及它們的作用

*main函數在程序的最后,你可以在這里看到整個游戲的組織架構

*很好,它只有幾十行,并且非常容易理解,當然,還是先看一下函數原形

*及解釋

*/

/******************************************************\

* 函數原形及說明 *

\******************************************************/

/*以下三個函數可以參照Timer結構體.在函數聲明后面*/

int GetTickCount(); /*返回電腦或操作系統運行逝去的時間*/

/*在win32環境下已包含在windows.h里邊,返回的是4byte*/

/*在DOS(本代碼)環境下,要自己編寫,使用到BIOS.h內容*/

int setTimer(Timer *t, unsigned int intv, BOOL en);

/*設置時鐘t,參數分別為時鐘指針,時間間隔,是否活動*/

/*時間間隔,win32下為毫秒,DOS下為1/18秒(有點低)*/

BOOL testTimer(Timer *t); /*測試時鐘t是否到達定時時間*/

/*如下面這段代碼:*/

/*

setTimer(t, 1, 1); 設置1個單位的間隔

while(1) {

if(testTimer(t)) printf("Active!\n");

}

將會定時(1個單位)在屏幕上打印Active!

一般來說testTimer必須放在循環中反復執行,激活時返回1

*/

void render(void); /*唯一的繪圖函數*/

/*注意,此函數重畫整個地圖,根據地圖中的點陣,以及根據

小盒在地圖的中坐標在恰當位置畫出小盒子*/

/*DOS的圖形當然是很低的,但,全屏繪圖在這里還是過得去

的,我用的是雙緩沖,交換繪圖,這樣感覺好點*/

void initMap(void); /*初始化地圖(大盒子)*/

/*之前提到過在這個兩維數組中有一圈為1的東西來阻止

小盒子出界,這就是生成這一圈的函數*/

void newGame(); /*新建一個游戲*/

/*這個函數初始化一幾個時鐘和建造第一個下落的小盒子*/

/*當然建造完后要生成一個個的預覽*/

void rotateBox(int box1[5][5], int box2[5][5]);

/*核心函數成員,把box1逆時針旋轉90度,并保存到box2中*/

void rebuidNext();

/*核心函數成員,生成下一個方塊*/

int drop();

/*核心函數成員,將下落的盒子向下移(實際上增加下落盒

子的Y值而已,當然要判斷是否與地圖點陣重疊*/

/*與地圖重疊,無法完成下落操作,返回0*/

void putBox();

/*在這之上,下落的盒子與地圖之前是獨立的兩個兩維數*/

/*當下落失敗后,小盒子要回到頂端再次重新執行下落,這*/

/*時原來的盒子內容當然就要變成地圖上的內容了,putBox

就是將下落盒子的內容根據XY寫到地圖上*/

void clear();

/*這個函數在下落失敗并putBox后執行,掃描整個地圖*/

/*清除掉滿行的點陣,具體細節在函數內講*/

int move(int dir);

/*左右移動下落盒子,dir指出向左還是向右,這個與drop

是一樣的*/

int test(int mx, int my, int box[5][5]);

/*這個比較重點,判斷box在mx,my為坐標上,與地圖上的

非空點陣是否有重疊.很通用的一個函數*/

int rotate();

/*旋轉下落的盒子,當然如果轉了之后與地圖有沖突,會

取消轉動,返回0,但返回的值好像沒什么用~*/

int newfall();

/*創建下落元素,把"下一個"預覽的內容復制到下落盒子*/

/*并將下落的盒子移動到地圖頂部,當然這個過程,如果頂

部有沖突,會返回0,這時說明已經滿了...gameOver*/

int main();

/*終于到了最后的主函數,在這里可以看到整個游戲的架*/

/*構,包括游戲主循環,鍵盤處理等...*/

/******************************************************\

* 變量區 *

\******************************************************/

/*在上面的說明中,可能會有一些蒙,因為可能對所用到的實際變量沒

*有了解

*/

int map[MAX_Y+4][MAX_X+4]; /*地圖\大盒子...MAX_X,Y是可見面積*/

/*我已說過需要在外面布兩圈"衛兵"*/

int curbox[5][5]; /*當前下落的盒子*/

int curx, cury; /*保存著當前活動盒子在地圖上的位置*/

int nextbox[5][5]; /*保存著下一個形狀的盒子*/

/*以上就是這么幾個盒子和坐標了*/

/*這里列出了標準七種俄羅斯方塊圖形點陣,用到時它們會被復制到相*/

/*應的盒子...:)*/

int box[MAX_C][5][5] = { /*MAX_C(7)種預定義的盒子*/

{

{0,0,0,0,0},

{0,0,0,0,0},

{1,1,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,0,0},

{0,1,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,1,1,0,0},

{0,0,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,1,1,0,0},

{0,0,0,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,1,1,0,0},

{0,0,1,0,0},

{0,0,1,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,0,1,0,0},

{0,0,1,0,0},

{0,0,0,0,0}

},

{

{0,0,0,0,0},

{0,0,1,1,0},

{0,0,1,1,0},

{0,0,0,0,0},

{0,0,0,0,0}

}

};

/******************************************************\

* 時鐘 *

\******************************************************/

/*時鐘部分也非常理解的,一個用到設置時鐘,一個用來測試時鐘激活態*/

Timer tDown; /*正常下落定時時鐘intervel會比較大*/

Timer tFast; /*按KEY_DOWN時使用的快速下落*/

int speed = 13; /*控制下落時間間隔*/

#define FAST_INTV 1 /*快時鐘的間隔*/

int GetTickCount() { /*讀取BIOS時鐘*/

int ret;

ret = peek(0x0,0x46e); /*實際上讀取了內存0:046e處的內容*/

ret = 8; /*這個地方是$%#$^$%^*/

ret += peek(0x0,0x46c); /*太多新的東西了,找點書看一看吧*/

return (ret);

}

int setTimer(Timer *t, unsigned int intv, BOOL en) {

t - enabled = en; /*設置一個時鐘羅*/

t - intervel = intv;

t - lasttime = GetTickCount(); /*lasttime記錄的是上一個*/

/*tickcount返回的東西*/

/*這樣當再一次測試時間時新的tickcount產生了

它來減去上一次的tickcount就得出了一個時間

間隔,這個就可以和intervel比較從而得出是否

激活了

*/

return 0;

}

BOOL testTimer(Timer *t) { /*在上面6行的地方解釋了:)*/

unsigned int tmp, dt;

if (!(t - enabled)) return FALSE;

tmp = GetTickCount();

dt = tmp - (t - lasttime);

if(dt = t - intervel) {

t - lasttime = tmp;

return TRUE;

}

return FALSE;

}

/******************************************************\

* 渲染部分 *

\******************************************************/

/*提供render更新整個屏幕*/

/*關于這個函數,要說的東西還是比較多,為了追求漂亮和編譯*/

/*時的靈活性,這個函數被寫得頗為冗長...*/

/*現在寫一下本游戲圖形的東西...使用TC2的Graphics我也不

太樂意,畢竟它本身已過時,但鑒于實在簡單實用,它用來教學

再合適不過,這也是教學總是用TC的原因,老師們不喜歡讓學

生問一些讓他們掌握起來也困難的東西...*/

/*這里我使用了VGAMED模式,而不是 VGAHI,因為VGAMED有兩個

頁(可以想像成緩沖),這樣可以用來做到不閃動畫.即:在后臺

頁繪制圖形,完成后再顯示出來.

這里用到了兩個函數:

setactivepage(1 | 0) 參數只能是1或0,選擇繪圖頁,例如選

擇了1后,以后所有的繪圖動作將畫到頁1上.

setvisualpage(1 | 0) 這個叫做選擇可見頁,即選擇在屏幕上

顯示頁面1還是0

*/

void render(void) {

int x, y;

static int cPage = 0; /*當前頁,換頁用*/

#define STARTX 50 /*定義幾個常量*/

#define STARTY 0

#define LEN 18

setactivepage(cPage=(cPage == 0?1:0)); /*選擇頁*/

cleardevice(); /*清屏*/

setcolor(15);

rectangle( STARTX + LEN * 2 - 2,

STARTY + LEN * 3 - 2,

STARTX + LEN * (MAX_X - 2) + 2,

STARTY + LEN * (MAX_Y - 2) + 2);

/*用白色畫一個外框*/

setfillstyle(SOLID_FILL, 5);

for(y = 3; y MAX_Y - 2; y++) { /*畫地圖 */

for(x = 2; x MAX_X - 2; x++) {

if(map[y][x]) {

rectangle( x * LEN + STARTX,

y * LEN + STARTY,

x * LEN + STARTX + LEN,

y * LEN + STARTY + LEN);

bar( x * LEN + STARTX + 1,

y * LEN + STARTY + 1,

x * LEN + STARTX + LEN - 2,

y * LEN + STARTY + LEN - 2);

}

}

}

/*繪圖操作就不要作太復雜的介紹了,這只寫作用*/

/*以上段,根據地圖上的點陣情況將地圖反映到屏幕上*/

當前題目:c語言drop函數 dropout函數
本文地址:http://www.yijiale78.com/article4/dodcooe.html

成都網站建設公司_創新互聯,為您提供軟件開發企業建站建站公司移動網站建設網站內鏈商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設