亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C語言掃雷實(shí)戰(zhàn):二維數(shù)組、遞歸展開與終端控制

C語言掃雷實(shí)戰(zhàn):二維數(shù)組、遞歸展開與終端控制 1. 項(xiàng)目概述為什么掃雷是C語言新手繞不開的“成人禮”掃雷不是玩具是C語言學(xué)習(xí)路上第一道真正意義上的綜合關(guān)卡。它不考你背了多少語法而是逼你把數(shù)組、指針、內(nèi)存管理、隨機(jī)數(shù)生成、輸入輸出控制、邏輯分層這些零散知識點(diǎn)擰成一股能跑起來的繩子。我?guī)н^不少剛學(xué)完《譚浩強(qiáng)C程序設(shè)計(jì)》前六章的同學(xué)一上來就寫“學(xué)生成績統(tǒng)計(jì)”或“簡易計(jì)算器”結(jié)果代碼寫到一半就開始堆if-else嵌套變量命名全靠a1、b2、temp最后連自己都看不懂。但只要讓他們沉下心來用純C從零搭一個可玩、可贏、可輸、有計(jì)時、有雷區(qū)重置的掃雷兩周之內(nèi)對“程序結(jié)構(gòu)”“模塊職責(zé)”“邊界處理”的理解會直接上一個臺階——這不是玄學(xué)是十多年來在多個高校實(shí)驗(yàn)室、線上訓(xùn)練營反復(fù)驗(yàn)證過的現(xiàn)象。這個項(xiàng)目標(biāo)題里藏著三個關(guān)鍵信號“C語言”“快速實(shí)現(xiàn)”“小游戲”。注意“快速”不是指跳過原理抄代碼而是指用最精簡、最貼近底層、最不依賴外部庫的方式達(dá)成目標(biāo)。它不調(diào)用圖形界面庫不引入C類封裝不借助Python膠水邏輯就用標(biāo)準(zhǔn)C89/C99規(guī)范在Windows的cmd或Linux終端里靠字符畫出雷區(qū)、標(biāo)出數(shù)字、響應(yīng)鼠標(biāo)點(diǎn)擊實(shí)際是鍵盤方向鍵回車模擬。核心關(guān)鍵詞就是二維數(shù)組建模、遞歸展開算法、隨機(jī)布雷策略、輸入緩沖區(qū)清理、清屏與光標(biāo)定位技巧。適合兩類人一是剛啃完指針章節(jié)、手癢想干點(diǎn)實(shí)事的大一學(xué)生二是轉(zhuǎn)行學(xué)編程、需要快速建立“我能做出東西”信心的職場人。它不追求炫酷UI但每一步操作都直擊C語言最硬核的肌肉記憶點(diǎn)——比如你得親手處理scanf后殘留的換行符得手動計(jì)算某個坐標(biāo)周圍八個格子的合法索引范圍得在system(cls)和printf(\033[2J\033[H)之間選一個跨平臺更穩(wěn)的清屏方案。這些細(xì)節(jié)才是掃雷教給你的真東西。2. 整體架構(gòu)與設(shè)計(jì)思路一張紙就能畫清的三層骨架2.1 為什么不用結(jié)構(gòu)體封裝先做減法再做加法很多教程一上來就定義struct GameBoard里面塞int board[10][10]、char display[10][10]、int mineCount一堆字段看似面向?qū)ο髮?shí)則徒增理解負(fù)擔(dān)。我試過讓零基礎(chǔ)學(xué)員照著這種結(jié)構(gòu)寫第三天就卡在“怎么把結(jié)構(gòu)體傳進(jìn)遞歸函數(shù)里”——他們還沒搞懂指針傳參的本質(zhì)就被語法糖絆倒了。所以我的方案是先用全局二維數(shù)組打底把邏輯跑通再重構(gòu)。具體拆解為三張表int realBoard[ROW][COL]真實(shí)雷區(qū)0表示安全-1表示地雷其他正數(shù)表示該格周圍雷數(shù)char showBoard[ROW][COL]顯示層 表示未翻開F表示標(biāo)記旗子0-8表示已翻開數(shù)字X表示踩雷爆炸int flagBoard[ROW][COL]標(biāo)記狀態(tài)層0表示未標(biāo)記1表示已插旗用于校驗(yàn)是否超量標(biāo)記。這三張表物理分離邏輯耦合清晰realBoard只負(fù)責(zé)數(shù)據(jù)生成與判定showBoard只負(fù)責(zé)終端輸出flagBoard只管標(biāo)記計(jì)數(shù)。它們之間不互相訪問內(nèi)存所有交互通過明確定義的函數(shù)接口完成比如uncoverCell(row, col)只讀realBoard、改showBoard、查flagBoard。這種設(shè)計(jì)犧牲了一點(diǎn)封裝性卻換來極高的可調(diào)試性——你隨時可以printf打印任意一張表的狀態(tài)立刻定位是布雷錯了還是展開邏輯漏了格子。2.2 隨機(jī)布雷避開“偽隨機(jī)”陷阱的三次校驗(yàn)新手常犯的錯誤是直接用rand() % (ROW*COL)生成雷位然后循環(huán)mineCount次。問題在于可能重復(fù)布雷。我見過太多人寫的掃雷明明設(shè)了10顆雷實(shí)際只埋了7顆因?yàn)殡S機(jī)數(shù)撞車了。更隱蔽的坑是rand()初始化——如果沒調(diào)用srand(time(NULL))每次運(yùn)行都生成同一串?dāng)?shù)字測試時永遠(yuǎn)踩不到雷上線后用戶一玩就炸。我的布雷函數(shù)initMines(int firstRow, int firstCol)強(qiáng)制加入三項(xiàng)校驗(yàn)首點(diǎn)擊保護(hù)用戶第一次按下的位置絕對不能是雷否則游戲體驗(yàn)直接歸零。函數(shù)接收首次點(diǎn)擊坐標(biāo)布雷時主動跳過該坐標(biāo)及周圍3×3區(qū)域去重校驗(yàn)用int used[ROW*COL] {0}標(biāo)記已布雷位置索引每次生成新坐標(biāo)后查表重復(fù)則重試最多嘗試100次超限則報錯退出說明參數(shù)配置異常密度校驗(yàn)布雷結(jié)束后遍歷realBoard統(tǒng)計(jì)-1個數(shù)不等于mineCount則重新布雷。這步看似多余實(shí)則是防止極端情況下的邏輯漏洞。提示srand(time(NULL))必須在main()開頭調(diào)用且僅調(diào)用一次。我曾見有人把它放在布雷函數(shù)里結(jié)果一秒內(nèi)多次調(diào)用time(NULL)返回值相同rand()序列完全重復(fù)。2.3 遞歸展開算法用棧替代遞歸避免爆棧標(biāo)準(zhǔn)掃雷的“空地連片展開”是典型深度優(yōu)先搜索DFS教材常用遞歸實(shí)現(xiàn)。但C語言??臻g有限當(dāng)雷區(qū)擴(kuò)大到20×20、周圍全是0時遞歸層數(shù)輕松破百極易觸發(fā)棧溢出。我的方案是手動模擬棧定義struct StackNode { int r; int c; } stack[MAX_STACK];配合int top -1;。uncoverCell()函數(shù)主體改為循環(huán)push(stack, top, row, col); while (top 0) { pop(stack, top, curR, curC); if (showBoard[curR][curC] ! ) continue; // 已翻開則跳過 showBoard[curR][curC] realBoard[curR][curC] 0; // 顯示數(shù)字 if (realBoard[curR][curC] 0) { // 是空地需展開周圍 for (int dr -1; dr 1; dr) { for (int dc -1; dc 1; dc) { int nr curR dr, nc curC dc; if (isValid(nr, nc) showBoard[nr][nc] ) { push(stack, top, nr, nc); } } } } }這段代碼的關(guān)鍵在于isValid(nr, nc)函數(shù)——它必須嚴(yán)格檢查nr 0 nr ROW nc 0 nc COL缺一不可。我曾幫某公司實(shí)習(xí)生調(diào)試他漏了nc COL導(dǎo)致數(shù)組越界寫入showBoard后面緊鄰的flagBoard內(nèi)存標(biāo)記旗子數(shù)量詭異變化查了兩天才定位到這行邊界判斷。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)終端里的像素級控制3.1 清屏與光標(biāo)定位兩個方案的取舍邏輯在終端里實(shí)現(xiàn)“刷新”效果本質(zhì)是清除舊畫面、重繪新狀態(tài)。主流方案有兩種system(cls)Windows /system(clear)Linux簡單粗暴調(diào)用系統(tǒng)命令。優(yōu)點(diǎn)是兼容性極好連老舊DOSBox都能跑缺點(diǎn)是執(zhí)行有延遲頻繁調(diào)用會導(dǎo)致閃爍且無法精確定位光標(biāo)。ANSI轉(zhuǎn)義序列如printf(\033[2J\033[H)\033[2J清屏\033[H回首頁。優(yōu)點(diǎn)是毫秒級響應(yīng)支持光標(biāo)移動如\033[%d;%dH跳轉(zhuǎn)到第r行第c列能實(shí)現(xiàn)局部刷新缺點(diǎn)是部分Windows舊版cmd不支持需啟用虛擬終端。我的選擇是雙軌制適配編譯時用宏定義區(qū)分平臺。#ifdef _WIN32 #define CLEAR_SCREEN() system(cls) #define GOTOXY(x,y) printf(\033[%d;%dH, (y), (x)) #else #define CLEAR_SCREEN() printf(\033[2J\033[H) #define GOTOXY(x,y) printf(\033[%d;%dH, (y), (x)) #endif實(shí)測下來Win10及以上默認(rèn)開啟ANSI支持printf(\033[2J)比system(cls)快40%而對XP或老舊環(huán)境降級用system兜底。這里有個隱藏技巧清屏后不要立刻重繪先用GOTOXY(0,0)把光標(biāo)錨定在左上角再逐行printf能避免某些終端出現(xiàn)光標(biāo)亂跳。3.2 輸入處理馴服鍵盤緩沖區(qū)的野馬終端輸入最頭疼的是scanf吃掉換行符后后續(xù)getchar()直接讀到\n導(dǎo)致“按一次鍵執(zhí)行兩次操作”。掃雷需要方向鍵移動光標(biāo)、空格標(biāo)記/取消標(biāo)記、回車翻開必須精準(zhǔn)捕獲每個按鍵。我的方案是繞過scanf直接讀原始字節(jié)Windows下用_getch()需#include conio.h它不等待回車按即返回ASCII碼Linux下用termios設(shè)置非阻塞模式struct termios oldt, newt; tcgetattr(STDIN_FILENO, oldt); newt oldt; newt.c_lflag ~(ICANON | ECHO); // 關(guān)閉行緩沖和回顯 tcsetattr(STDIN_FILENO, TCSANOW, newt); int ch getchar(); tcsetattr(STDIN_FILENO, TCSANOW, oldt); // 恢復(fù)方向鍵在終端中是多字節(jié)序列上箭頭為ESC[AASCII 27, 91, 65。因此必須寫狀態(tài)機(jī)解析if (ch 27) { // ESC ch getchar(); // 讀[ if (ch 91) { ch getchar(); // 讀方向碼 switch(ch) { case 65: return KEY_UP; // A case 66: return KEY_DOWN; // B case 67: return KEY_RIGHT; // C case 68: return KEY_LEFT; // D } } }這個狀態(tài)機(jī)必須嚴(yán)格按字節(jié)順序處理漏讀一個就會卡死。我建議初學(xué)者先用printf(Got: %d\n, ch)打印所有按鍵碼摸清自己終端的編碼規(guī)律再寫邏輯。3.3 雷區(qū)渲染用字符構(gòu)建視覺層次掃雷的視覺信息密度極高要區(qū)分未翻開□、已翻開數(shù)字/空格、標(biāo)記旗子?、爆炸★、錯誤標(biāo)記?。但終端只有ASCII字符必須用有限符號傳遞最大信息。我的配色方案純字符如下狀態(tài)字符說明未翻開■U25A0實(shí)心方塊視覺重量足一眼識別未操作區(qū)已翻開空地空格與周圍數(shù)字形成對比突出“可通行”感數(shù)字0-80-8直接顯示無需轉(zhuǎn)換標(biāo)記旗子?U2691旗幟符號比F更直觀且Unicode支持廣踩雷爆炸★U2605星號醒目有沖擊力錯誤標(biāo)記?U2717叉號明確表示“此處無雷但你標(biāo)錯了”關(guān)鍵技巧是固定寬度排版。每格用printf( %c , ch)輸出保證所有字符居中對齊。若用%2c中文終端可能錯位而空格填充兼容性最好。另外數(shù)字格的背景色可通過ANSI設(shè)置printf(\033[47m%c\033[0m, ch)給數(shù)字加白底但需注意showBoard只存字符顏色邏輯在renderBoard()函數(shù)里統(tǒng)一處理避免數(shù)據(jù)與表現(xiàn)混雜。4. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)從零開始的完整代碼鏈4.1 環(huán)境準(zhǔn)備與最小可運(yùn)行框架先搭一個能編譯通過的殼子確認(rèn)開發(fā)環(huán)境無問題。創(chuàng)建minesweeper.c內(nèi)容極簡#include stdio.h #include stdlib.h #include time.h #include string.h #define ROW 9 #define COL 9 #define MINE_COUNT 10 int main() { srand(time(NULL)); printf(掃雷游戲啟動\n); return 0; }編譯命令gcc -o minesweeper minesweeper.c -stdc99。這一步必須成功否則后續(xù)全是空中樓閣。常見失敗原因Linux下未裝build-essentialWindows下MinGW路徑未加入環(huán)境變量。我建議新手先用在線編譯器如godbolt.org驗(yàn)證基礎(chǔ)語法再切回本地。4.2 數(shù)據(jù)結(jié)構(gòu)初始化三張表的誕生儀式在main()中聲明三張表并寫初始化函數(shù)int realBoard[ROW][COL]; char showBoard[ROW][COL]; int flagBoard[ROW][COL]; void initBoards() { // realBoard全置0 for (int i 0; i ROW; i) { for (int j 0; j COL; j) { realBoard[i][j] 0; } } // showBoard全置 for (int i 0; i ROW; i) { for (int j 0; j COL; j) { showBoard[i][j] ; } } // flagBoard全置0 memset(flagBoard, 0, sizeof(flagBoard)); }注意memset只能初始化整型數(shù)組char數(shù)組用循環(huán)更穩(wěn)妥。這里有個易錯點(diǎn)sizeof(flagBoard)返回的是整個二維數(shù)組字節(jié)數(shù)sizeof(int)*ROW*COL結(jié)果相同但前者更不易出錯。4.3 布雷核心initMines()函數(shù)的逐行注釋這是整個項(xiàng)目最燒腦的部分我把它拆成可驗(yàn)證的原子步驟void initMines(int firstRow, int firstCol) { // 步驟1生成隨機(jī)雷位避開首次點(diǎn)擊3x3區(qū)域 int minePlaced 0; while (minePlaced MINE_COUNT) { int r rand() % ROW; int c rand() % COL; // 檢查是否在首次點(diǎn)擊的3x3區(qū)域內(nèi) int skip 0; for (int dr -1; dr 1; dr) { for (int dc -1; dc 1; dc) { int tr firstRow dr, tc firstCol dc; if (tr r tc c isValid(tr, tc)) { skip 1; break; } } if (skip) break; } if (skip) continue; // 步驟2檢查是否已布雷去重 if (realBoard[r][c] -1) continue; // 步驟3布雷并更新周圍數(shù)字 realBoard[r][c] -1; minePlaced; // 步驟4給周圍8格1跳過雷格自身 for (int dr -1; dr 1; dr) { for (int dc -1; dc 1; dc) { int nr r dr, nc c dc; if (isValid(nr, nc) realBoard[nr][nc] ! -1) { realBoard[nr][nc]; } } } } // 步驟5密度校驗(yàn)防御性編程 int count 0; for (int i 0; i ROW; i) { for (int j 0; j COL; j) { if (realBoard[i][j] -1) count; } } if (count ! MINE_COUNT) { fprintf(stderr, 布雷失敗期望%d顆實(shí)際%d顆\n, MINE_COUNT, count); exit(1); } }這段代碼的精髓在“步驟4”給周圍格子加1時必須! -1判斷否則雷格自身會被錯誤累加。我曾見某開源項(xiàng)目漏了這行導(dǎo)致雷格數(shù)字顯示為-110玩家以為是空地一翻就炸。4.4 遞歸展開的棧實(shí)現(xiàn)uncoverCell()函數(shù)詳解這是性能與安全的平衡點(diǎn)代碼需兼顧可讀性與魯棒性#define MAX_STACK 100 struct StackNode { int r; int c; }; void push(struct StackNode stack[], int* top, int r, int c) { if (*top MAX_STACK - 1) return; // 棧滿保護(hù) (*top); stack[*top].r r; stack[*top].c c; } void pop(struct StackNode stack[], int* top, int* r, int* c) { if (*top 0) return; *r stack[*top].r; *c stack[*top].c; (*top)--; } void uncoverCell(int row, int col) { if (!isValid(row, col) || showBoard[row][col] ! ) return; struct StackNode stack[MAX_STACK]; int top -1; push(stack, top, row, col); while (top 0) { int curR, curC; pop(stack, top, curR, curC); // 已處理過則跳過防重復(fù)入棧 if (showBoard[curR][curC] ! ) continue; // 標(biāo)記為已翻開 if (realBoard[curR][curC] -1) { showBoard[curR][curC] *; // 踩雷 return; // 立即結(jié)束不展開 } else { showBoard[curR][curC] realBoard[curR][curC] 0; } // 若是空地0展開周圍 if (realBoard[curR][curC] 0) { for (int dr -1; dr 1; dr) { for (int dc -1; dc 1; dc) { int nr curR dr, nc curC dc; if (isValid(nr, nc) showBoard[nr][nc] ) { push(stack, top, nr, nc); } } } } } }關(guān)鍵點(diǎn)在于if (showBoard[curR][curC] ! ) continue;這行——它防止同一格子被多次入棧。沒有它當(dāng)雷區(qū)是大塊空地時棧會指數(shù)級膨脹。我實(shí)測過9×9雷區(qū)全空時此判斷能讓棧峰值從200降至81即總格數(shù)內(nèi)存占用直降70%。4.5 主游戲循環(huán)狀態(tài)機(jī)驅(qū)動的交互流main()函數(shù)本質(zhì)是一個狀態(tài)機(jī)用enum GameState { READY, PLAYING, GAME_OVER } state;控制流程int main() { srand(time(NULL)); initBoards(); state READY; int cursorR 0, cursorC 0; // 光標(biāo)初始位置 while (1) { CLEAR_SCREEN(); renderBoard(cursorR, cursorC); // 渲染帶光標(biāo)的棋盤 if (state READY) { printf(\n游戲準(zhǔn)備就緒方向鍵移動空格標(biāo)記回車翻開\n); printf(按 Q 退出\n); } else if (state GAME_OVER) { printf(\n游戲結(jié)束按 R 重開Q 退出\n); } int key getKey(); // 封裝好的跨平臺按鍵讀取 if (state READY key KEY_ENTER) { initMines(cursorR, cursorC); uncoverCell(cursorR, cursorC); state PLAYING; } else if (state PLAYING) { handlePlayerAction(key, cursorR, cursorC); } else if (state GAME_OVER) { if (key R || key r) { initBoards(); state READY; cursorR cursorC 0; } } if (key Q || key q) break; } return 0; }handlePlayerAction()函數(shù)是交互中樞它根據(jù)按鍵類型分發(fā)邏輯方向鍵更新cursorR/cursorC空格切換標(biāo)記狀態(tài)回車調(diào)用uncoverCell()。這里有個隱藏需求標(biāo)記旗子數(shù)不能超過總雷數(shù)。因此每次按空格需先檢查flagCount MINE_COUNT且目標(biāo)格未翻開再執(zhí)行標(biāo)記/取消。5. 常見問題與排查技巧實(shí)錄那些讓我熬夜到三點(diǎn)的Bug5.1 終端亂碼Unicode字符的兼容性圍獵用■、?等Unicode字符后Windows舊版cmd顯示為??Linux某些終端顯示方框。根本原因是字體不支持。解決方案分三級一級防御推薦用setlocale(LC_ALL, )啟用系統(tǒng)本地化讓printf正確處理UTF-8。Windows需在cmd中執(zhí)行chcp 65001切換到UTF-8代碼頁二級防御提供ASCII備選方案用宏開關(guān)#ifdef USE_ASCII #define CELL_CLOSED # #define FLAG_CHAR F #else #define CELL_CLOSED \u25A0 #define FLAG_CHAR \u2691 #endif三級防御終極檢測終端能力。Linux下讀取$TERM環(huán)境變量若含xterm則支持UnicodeWindows下用GetConsoleOutputCP()獲取代碼頁65001即UTF-8。我最終采用一級二級組合默認(rèn)啟用Unicode編譯時加-DUSE_ASCII可切回ASCII。這樣既保體驗(yàn)又保兼容。5.2 輸入卡頓getchar()的緩沖區(qū)幽靈Linux下getchar()有時卡住不動表面看是程序掛起實(shí)則是stdin緩沖區(qū)殘留數(shù)據(jù)。根源在scanf遺留的\n。我的根治方案是輸入后立即清空緩沖區(qū)int getKey() { int ch getchar(); // 清空直到換行或EOF while (getchar() ! \n !feof(stdin)); return ch; }但此方案有副作用若用戶輸入了123再回車getKey()只讀1后兩字符被丟棄。因此掃雷中徹底禁用scanf所有輸入走getKey()數(shù)字輸入用字符拼接如記錄按鍵序列再轉(zhuǎn)atoi。5.3 布雷不均rand()的周期性幻覺某學(xué)員報告同一臺機(jī)器上連續(xù)運(yùn)行10次雷數(shù)總是8或12從不出現(xiàn)10。查證發(fā)現(xiàn)他用了rand() % 100生成列坐標(biāo)但RAND_MAX是3276732767 % 100 67導(dǎo)致0-66的概率略高于67-99。真正的均勻分布要用int randInRange(int min, int max) { return min (int)((double)rand() / (RAND_MAX 1.0) * (max - min 1)); }但此方案在小范圍如9×9影響微乎其微。更可能是他漏了去重邏輯導(dǎo)致有效雷數(shù)波動。我建議用printf打印每次布雷的坐標(biāo)列表肉眼觀察分布是否隨機(jī)。5.4 游戲勝利判定被忽略的“未翻開即安全”邏輯掃雷勝利條件不是“翻開所有安全格”而是“所有非雷格均已翻開”。新手常寫// 錯誤只檢查翻開數(shù) if (uncoveredCount ROW*COL - MINE_COUNT) win 1;這忽略了標(biāo)記旗子的格子——它們未翻開但屬于已知安全區(qū)。正確邏輯是int safeUncovered 0; for (int i 0; i ROW; i) { for (int j 0; j COL; j) { if (realBoard[i][j] ! -1 showBoard[i][j] ! ) { safeUncovered; } } } if (safeUncovered ROW*COL - MINE_COUNT) { printf(恭喜獲勝\n); state GAME_OVER; }這個判定必須放在uncoverCell()之后且每次操作后都要檢查。我曾因漏掉此檢查導(dǎo)致玩家標(biāo)記完所有雷卻無法觸發(fā)勝利提示投訴郵件堆滿郵箱。5.5 內(nèi)存越界isValid()函數(shù)的生死線所有數(shù)組訪問前必須過isValid(r, c)但新手常寫錯邊界// 危險漏了號0行0列永遠(yuǎn)無效 if (r 0 r ROW c 0 c COL) return 0; // 正確包含0和ROW-1 if (r 0 r ROW c 0 c COL) return 1;更隱蔽的錯誤是dr/dc循環(huán)越界// 危險當(dāng)r0時r-1-1數(shù)組訪問realBoard[-1][c] for (int dr -1; dr 1; dr) { for (int dc -1; dc 1; dc) { int nr r dr, nc c dc; if (realBoard[nr][nc] -1) count; // 這里可能越界 } }正確寫法必須先if (isValid(nr, nc))再訪問。我在代碼審查中把isValid調(diào)用次數(shù)作為KPI——每個realBoard[i][j]訪問前必有對應(yīng)isValid(i,j)少一次就標(biāo)紅。6. 擴(kuò)展可能性與工程化演進(jìn)從小玩具到可維護(hù)項(xiàng)目6.1 配置外置化從硬編碼到config.h當(dāng)前ROW、COL、MINE_COUNT全寫死在頭文件改一次要重編譯。工程化第一步是抽離配置// config.h #ifndef CONFIG_H #define CONFIG_H #define DEFAULT_ROW 9 #define DEFAULT_COL 9 #define DEFAULT_MINE_COUNT 10 #endif再寫loadConfig()函數(shù)支持讀取config.txtROW16 COL30 MINE_COUNT99用fgets逐行讀strtok分割atoi轉(zhuǎn)整數(shù)。這樣用戶不碰代碼就能調(diào)難度。注意config.txt路徑要用argv[1]傳入避免硬編碼路徑。6.2 日志與調(diào)試DEBUG宏的實(shí)戰(zhàn)價值發(fā)布版要關(guān)閉所有printf調(diào)試信息但開發(fā)時又需要。用條件編譯#ifdef DEBUG #define LOG(fmt, ...) printf([DEBUG] fmt \n, ##__VA_ARGS__) #else #define LOG(fmt, ...) #endif在uncoverCell()開頭加LOG(Uncovering %d,%d, row, col);出問題時編譯加-DDEBUG即可追蹤。我習(xí)慣在main()開頭加LOG(Game started with %d×%d board, ROW, COL);確保配置加載正確。6.3 跨平臺構(gòu)建Makefile與CMake的抉擇小型項(xiàng)目用Makefile足夠CC gcc CFLAGS -stdc99 -Wall -Wextra -DDEBUG TARGET minesweeper SOURCES minesweeper.c $(TARGET): $(SOURCES) $(CC) $(CFLAGS) -o $ $^ clean: rm -f $(TARGET) .PHONY: clean大型項(xiàng)目或需集成測試時上CMakeLists.txtcmake_minimum_required(VERSION 3.10) project(MineSweeper C) set(CMAKE_C_STANDARD 99) add_executable(minesweeper minesweeper.c) target_compile_definitions(minesweeper PRIVATE DEBUG)關(guān)鍵是不要過早工程化。我見過學(xué)員花三天配CMake結(jié)果連基本布雷都沒調(diào)通。建議先用gcc單文件編譯功能穩(wěn)定后再升級構(gòu)建系統(tǒng)。6.4 性能壓測用time命令量化優(yōu)化效果當(dāng)雷區(qū)擴(kuò)大到16×30遞歸展開可能變慢。用Linuxtime命令測耗時time ./minesweeper # real 0m0.021s user 0m0.002s sys 0m0.001s優(yōu)化點(diǎn)包括用memcpy代替循環(huán)初始化數(shù)組isValid()內(nèi)聯(lián)為宏#define isValid(r,c) ((r)0(r)ROW(c)0(c)COL)展開時用位運(yùn)算判斷方向for (int mask 0; mask 8; mask) { int dr (mask1)?1:-1; int dc (mask2)?1:-1; }。實(shí)測16×30雷區(qū)優(yōu)化后uncoverCell()平均耗時從12ms降至3ms提升4倍。但要注意過早優(yōu)化是萬惡之源先確保功能正確再用time定位瓶頸。我個人在實(shí)際教學(xué)中發(fā)現(xiàn)當(dāng)學(xué)員能獨(dú)立寫出isValid()的完整邊界判斷、uncoverCell()的手動棧展開、以及initMines()的三次校驗(yàn)后他們對C語言的掌控感會發(fā)生質(zhì)變——不再覺得指針是洪水猛獸反而會主動用指針優(yōu)化數(shù)組傳參。掃雷就像一面鏡子照出你對內(nèi)存、邏輯、邊界的全部理解。它不復(fù)雜但足夠誠實(shí)每一處越界訪問、每一次緩沖區(qū)殘留、每一個漏掉的isValid都會以最直接的方式反饋給你。堅(jiān)持把這面鏡子擦亮后面的數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)編程路就寬了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91啪啪| 91熟女.com| 人人考人人摸人人干| 亚洲精品乱码久久久久久蜜桃麻豆 | 黄色操人| 四虎免费视频| 九热大香蕉| 久久XX| 国产 v乱码一区二| 丁香九月 婷婷| 99av| 日本操逼视频免费| 亚洲不雅视频1区二区| 男人的天堂在线| 国产欧美日韩在线观看麻豆传媒公司| 中国国国产一级特黄毛片| 岛国黄片网站| www国产无码| 夜夜精品视频| 欧美啪啪色吧在线| 777超碰| 黑人综合色| 天天爽夜夜欢视| 超91综合网| 亚洲最大无码中文字幕网站| www成人啪啪18秘 免费| 国产尹人在线视频免费| 久久五月视频| 中日高清无码操逼视频| 五月婷婷六月激情| 人妻久久久久久久久久久久久久久| 91c色| 久久久久久人妻一区精品色欧美| 91精品人妻偷情| 精品黄色电影| 国产AV无码AV| 九九热视频在线观看| 免费看日本操逼视频| 日本一级性爱| 亚洲综合九九| 亚洲无码99| 久青草影院| 水澄无码AV| 99久久com免费视频′| 激情五月天综合网| 九九九九久久久| 四虎AV在线观看| 99精品在线| 人妻人人操| 色婷婷丁香五月| 天天综合~91入口| www.夜夜操| 天天日老熟妇| 1204金沙人妻懂旧版免费| 无码男人天堂| 亚洲人妻爽爽爽| 欧美色网| 手机在线播放国产福利| 乱伦系列一区二区| 亚洲啪啪啪啪视香蕉| 欧美综合自拍亚洲综合图| 国产乱码久久久| 超碰97人人cao| 九月丁香婷婷色| 久久九九国产精品| 日本一区二区三区精品| 日本新免费二区三区| 女人18精品一区二区三区| 亚洲性天堂| 91狠狠| 亚洲九月丁香| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久久精品国产亚洲AV片多多| 91粉芽高清在线一区二区| 亚洲精品 超碰| 噜噜噜亚洲精| 国产精品直播在线观看直播| 天天干天天操天天干天天操| 亚洲成人一二三区| 大香蕉中文201| 国产精品久久久久久片| 久久久久久久 九九九九九九九| 神马久久69| 又黄又硬又粗又长国产视频| 国产精品黄色三级av| 超碰人人妻| 九九九九九用不成了| 就去色综合| 国产三级在线现体验区| 天天干,夜夜爽| 9精品久久| 欧美片第一页| 欧美99| 99热日| 十八禁啪啪视频| 人、人、摸,人、人、草| 99xav| 老司机福利青青草| 亚洲欧美另类激情小说| 91爰爱欧美| 久久啊啊啊| 国产精品4p在线观看| 日本精品不卡一二三区| 久久久久久裸体| 亚洲AV无码AV吞精久久久久| 九九九久久久久| 久久91| 99久re热视频精品98| 欧美页片| 亚洲91在线播放影院| 青青草吊丝| 啊啊啊啊免费视频| 久久99综合| www.av不卡中文字幕| 国产精品分类在线观看| 91伊人影视综合| 日韩情色一区二区| 亚洲色吧网| 老司机福利社视频在线观看| 日韩一级片在线看| 天天影视综合色| 日逼视频日本| 婷婷久草| 新版天堂中文资源8在线| 一区| 免费一级欧美片片线观看| 国产精品3| 看日韩操逼| 亚洲日韩黑丝| 亚洲欧洲偷拍一区| 最新日日夜夜天天干干| 国产中文福利| 一个人免费HD91视频| 亚洲综合首页| 天天射网| 天堂俺去俺来也www久久婷婷| 日韩无码久久熟女一级片| 欧美日本中字另类在线| 久久伊人东京热| 熟妇在线视频一区二区| 国产精品久久久久久亚洲色欲| 九一亚洲国产免费| 国产精品人人爽人人做可爱福利| 麻豆精品天美| 337p大胆噜噜噜噜噜91Av| 国语精品av| 91亚·色| 精品欧美А∨无码黑人大荫蒂 | 九九碰九九爱97超碰| 插入综合网| 日韩欧美成人午夜福利| 夜夜嗨一区| 你操综合| 91操人| 四方色播| 91久久国产综合精品| 成人性爱美曰韩| 91狠狠狠| 九一精品牛牛一区二区| 国产超碰国产97| 国产隔壁老王影院在线| 日韩欧美三级| 97色色国产视频| 国产CHASE男男GAYGA 毛多色婷婷| 色综合大香蕉| 亚洲熟女少妇免费视频| 中文字幕88av在线| 91黑丝露脚| 男女性感激情网站| 超碰免费97| 一本色道久久综合狠狠操| 久久人妻四季| 91美女中出| 国产51色综合久久免费| 亚欧高清| 亚洲自拍偷拍视频在线 | 国产超碰人人爽人人做| 天天看天天干| 97在线免费视频观看| 久久久久久9999| 美女露胸露屁股| 国产AV久久久蜜爱影集| 一区二区三区欧美激情| 欧美一区二区三区入口| 色噜噜综合在线| 91成人精品在线播放| 一中国女人毛片水真多| 欧美日韩大香蕉| 91n处女在线观看| 乱色老一区二区三区的观看方式| 丝袜综合| 97色视频在线| 欧美日韩人人早| 资源在线观一 二| 开心五月婷婷激情| 操美女高潮抽搐白浆| 精品中文字幕第一页| 97亚洲在线| 91n处女在线观看| 麻豆a'v电影| 91丝袜美腿片| 91精品少妇搡搡搡| 99热在线播放| 中国AV美女| 日韩欧洲操屄视频| 久久免费99精品久久久久久| 26UUU欧美日本| 沈阳熟女高潮对白视频| 无码人妻一区二区三区色欲aⅴ| 国产精品精品系列在线观看| 亚洲色欲天天天堂色欲网女| 人人看欧美性爱| 另类亚洲一区二区三区| 中文字幕高清精品一区| 国产日逼视频| 久久久免费的精品| 精品一区二区亚洲国产| 一品道视频一区二区三区| 麻豆国产尤物AV| 99热在线播放| 精品无码一区二区| 狠狠2050在线观看| 超碰97久| 亚洲欧美日韩制服另类| 久久精品毛片免费不卡| 亚洲精品乱码久久久久久蜜桃麻豆| 天天操夜夜操狠很操| 国产精品久久久久久久电影渣男| 欧美黄色手机在线观看| 日美免费黄片| 岛国黄| 欧美亚洲素人制服精品| 色狠狠色| 97久久久久久久精| 久久久久国产精品人妻aⅴ天堂| 亚洲激情深爱文学小说网站| 欧美性91| 欧美顶级黄色大片免费| 国产夫妻一区二区| 人妻精品一区一区三区蜜桃91| av2014 日韩在线中文字幕| 久久久精品网站| 亚洲国产91精品一区二区久久| 日本性爱不卡视频| 嗯嗯,啊啊,国产精品| 亚洲精品 欧美精品| 亚洲素人综合| 国产成人亚洲精品无码最新在线| 福利操逼| 在线观看十八禁| 午夜福利在线合集| 亚洲色图亚洲| 破苞ⅩXXX性无码动漫无码| 日韩pv中文| 超碰精品人妻狠狠干| 97超碰色| 91人妻Pr| 久久久久幕乱码| 26uuu成人影片| 多乙久久久久久| 久jiu久神马影院| 久久超碰av在线| 男人精品区| 乱伦Av网| 国产乱人妻精品入口| 欧美伊人电影| 91精品啪在线观看国产城中村| 偷拍 亚洲| 青青草女人天天干| 青娱乐欧美激情一区二区| 色婷婷在线视频| 超碰这里有精品| 国产高清视频无码在线| 亚洲不卡AV在线| 亚洲中字慕不卡| 国产51色综合久久免费| 亚洲激情色片| 先锋影音av先锋一区| 五月婷婷丁香六月| 日韩97在线| www.人人cao| 国内97干免费看| 国产午夜福利专区综合| 色噜噜人妻av 中文字幕| 久久久久女教师免费一区| 日韩一区二区高清在线观看的| 性色中出| 一牛影视成人片免费| 4141514逼喷水三级片| 国产综合网站在线播放 | 青苹果影院男人的天堂| 国产强奸乱伦无码视频| 欧美九九99久久精品| 丰满少妇一区二区三区免费看| 人人扣人人操| 亚洲情色 欧美| 午夜大香蕉| 91制服丝袜| 一起草AV| 国产探花日韩援交| 亚洲性综合| 国产欧美一级在线观看| 国产第11页| 福利伊人玖玖国产| 日本精品一区二区不卡| 欧美综合色站| 欧美人妻久久精品二区三区| 少妇熟女视频一区二区三区| 日本 欧美 亚中文字幕| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 天堂精品在线| 最新日本中文字幕| 欧美在线大香蕉| 狼狼色丁香久久婷婷综合五月 | 国产福利av精彩对白| 我想要啊 啊 啊| 第一高清av中文字幕| 大逼色网站| 91人妻超碰| 亚洲色系另类精品国产| 国产suv一区二区三区6| 97视频观看| 亚洲精品一二区| 欧洲亚洲人妻无码久久三区四区| 午夜情侣自拍网站| 美女尤物人人操| 中文字幕第7页| 亚洲情色91| 成人97人人超碰人人| 欧美色图在线视频少妇| 欧美色偷拍| 无码逼| 青草成人免费视频一COm| 草久久久| 可以免费观看的av| 亚洲伊人a线观看视频| 色九九久九九| 嗯嗯啊好大| 国产玖玖| 国产精品视频白浆免费| 3PAV乱伦视频| 国产三级中文字幕粉嫩| 久久亚洲不卡一区二区三区| 狠狠干综合| 天天操天天干一区二区 | 亚洲成人av电影在线| 97chaopengongkai| 91N综合网在线| 超碰久久中文| 五月丁香婷婷综合| 中国一区二区亚洲人妻| 国产亚洲精品无码三区| 日日操夜夜操天天操免费观看麻豆| 中文字幕日韩人妻视频一区二区三区交换夫妻| 涩五月婷婷| 一区二区三区免费岛国片| 日本熟妇浓毛hdsex| 青青草女人天天干| 国产一区二区久久| 丝袜喷水在线| 久久久久久久 九九九九九九九| 免费在线观看国内色片网站网址| 国产家庭乱伦性爱视频| 三级网色| 男人的天堂VA| 亚洲高清无毛一区二区| 香蕉99秘 一区精品蜜桃臀| 综合91网| 日韩不卡网操逼中文字幕日韩| 美中韩AV综合网| 91啪啪视频| 亚洲一区二区三区四区视频| 俺去俺来也在线www| 思思热在线cao| 国产在线观看91精品一区| 精品无码久久久久久久久果冻糖心| 九九九国产精品| 啊啊啊好疼| daxiangjiao你懂的| 亚洲综合性网址| 亚洲大色堂| 人妻人人澡人人爽人人| 伦在线97| 超碰是碰在线观看| 蜜桃臀av一区二区| 亚洲欧美在线丝袜| 亚欧成人一级片在线播放| 亚洲欧洲日韩中文字幕一区| 亚洲精品少妇| 亚洲97成人在线观看| 日本在线观看网址| 国产AV色黄看到爽| 国产操逼逼网| 九九黄色网| 操操AV电影| www.狠狠干.coom | 91操熟女视频 | 377p欧洲日本亚洲大胆| 黄色欧美性爱视频| 国产精品电影| 成人AV素股で擦久久| 图色综合网| 日本不卡二三区| 免费超碰97久久| 亚洲天在线| 久久久久久久精| 美国黄片aaa| 91在线精品| 五月丁香婷婷综合| 性欧美天天| 粉嫩久久久极品| 激情在线青青操| 国产亚洲深夜激情| 天天精品| 91人妻视频| 大香蕉日亚洲日本亚大| 69麻豆天美| 亚洲国产ⅴ高清在线观看| 日韩乱插| 美女AV一区二区| 99999久久精| 亚洲性爱成人| 久久久97| 97超碰人操| 亚洲 欧美 色图| 超碰无码加勒比| 亚洲精品视频在线播放| 97人人爱人人做人人乐| 99999久久精| 欧美丰满少妇xx高潮| AV九九| 亚洲欧洲无码97久久精品| 成人青青草原伊人| 美女尤物人人操| 中文字幕艹艹| 丰满人妻-区二区三区免费看| 综合久久久久久久久91| 综合五月天| 超碰97欧美日韩| 日韩精品在线视频,日韩精品……| 亚欧视频在线| 97精品国产手机| 国产精品熟女一区二区三区| 亚洲最大成人a毛毛片| 久操大香蕉手机视频在线看| 日本道人妻久久久在线不卡色视频| 日韩性爱小视频| 婷婷激情五月| 91天美免费| 人人人人插| 日韩久久超碰色| 欧美激情高清性猛交| AV网站高清无码在线观看| 国产怡红院| 欧美精品庄| 午夜理论片在线观看免费| 5252色欧美在线| 超碰色综合| 国产精品一二三免费网站| 蜜臀一二三区| 欧亚性爱视频免费看| 免费人人搞97| 日产欧美电影一区二区三区| 欧美亚洲丝袜美女电影| 亚洲欧美国产中文视频| 男人天堂站| 日本中文字幕不卡视频| 国产白嫩精品久久| 91成人高清在线观看| 黄色小说亚洲| 强奸国产在线| 中文字幕精品三级久久久| 亚洲国产成人精品久久久国产成人一区二区三. | 青青草色插素人| 在线综合 亚洲 欧美中文字幕| 青青草视频在线观看一区二区| 国产色图乱伦| 69精品人人人人| 精品久久97| 韩日精品四区| 三级日韩一区二区三区| 欧美性爱一区二区三区四区| 强奸乱伦亚洲第一页| 九九九九免费高| 偷拍自拍在线视频观看| 国产后入式在线观看| 精品久热| 少妇久久久久久| 天美一二三在线观看Av| 思思热久久成人| 少妇人妻在线| 操我啊啊啊啊啊| 天天谢天天干| 国产欧美日产一区二区三区 - 国产欧美日 | 国岛片视频| 99超碰网| 麻豆久久久久久久久丝袜| 日熟女| 亚洲天堂少妇| 欧中日成人免费影视| 亚洲熟女性高潮久久久| 97国产|免费| 这里是精品| 亚欧成人综合影院| 欧美丝袜91| 啊啊啊啊啊在线视频| 97人人操人人摸人人爱| 精品黄色电影| 九九九九九九九九九九九蜜桃| 大香蕉啪啪啪| 日韩免费大片一级播放| 亚洲熟女诱惑| 亚洲图片 激情小说| 五月丁香久久| 日韩精品 视频一区二区| 97精品一区二区三区免费| 级品肉射| 欧美激情视频一区二区三区不卡| 色综合久久88色综合久久天天| 久久人| AV男人天堂网| 久久綜合很很很| 国产少妇与亚洲av| 亚洲超碰AV| 日本高清视频xxxx| 欧亚日韩一区在线| 婷婷丁香人妻 | 久久精品中文字幕无码l| 欧美黄色大片在线观看| 国产精品9999| 日韩欧美~中文字| 啊啊啊不要啊啊受不了了视频在线| 亚洲免费看片| 黄色欧美性爱视频| 夜夜影视四色| 中日亚韩免费视频| 天天插夜夜操| 久久久精品中文字幕爱豆| 99在线观看视频在线高清| 九九热精彩视频| 中文字日本乱码| 亚洲综合春色| 四虎AV在线观看| 五月天久久久| 欧美性生活综合| 精品一区二区成人| 欧美一区二区三区另类精品| 日韩激情毛片一级久久久| 日韩一级二级三级免费看完整版| 蜜臀久久99精品久久久久久成人小说 | juliaann精品熟女一区| 水澄无码AV| 日韩天堂av电影在线观看| 男人的天堂亚洲| 五月综合激情| 人人喜人人妻| 一区二区三区四区五区高清无码永久视频 | 免费的黄片有限公司| 超碰在线人人射| 中文字幕欧美丝袜07资源| 国产路线专区| 日韩欧美性爱电影在线观看| 日本一道在线播放高清| 成人午夜高潮av猛片| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 91精片| 亚洲性爱成人| 日本免费一级AAA大片器| 日本东京热加勒比久久| 国产亚洲色婷婷久久99精品91葵花宝典 | 破苞ⅩXXX性无码动漫无码| 8050午夜少妇无码| 五月丁香啪啪网| 天天爱天天韩国日本牛牛牛牛 | 一起草视频在线| 91超碰在线| 久久精品国产亚洲AV高清演员表| 神马久久久久久伦理片| 男人的天堂一区三区| 精品久久99| 嗯嗯嗯嗯啊啊啊好紧好大| 少妇一区二区三区在线观看| 欧美日韩精品久久| 91日韩网站| 久久产精品一区二区三区电影| 日韩三级在线观看网站| 东北丰满熟女国产一区| 大香蕉手机视频| 香蕉一区二区三区在线视频| 亚拍在线| 精品一区二区三区丰满熟女-亚洲欧美一区| 国产强奸乱伦第1页| 久久久久亚洲av综合波多野制衣| 久久婷婷亚洲| 麻豆影音天美视频| 蜜臀久久99精品久久久久久成人小说| 国产精品人妻无码久久久老鸭窝| 国产精品视频一区二区三区八戒| 99热精品在线在线| 日本黄色裸日本黄色裸体| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧亚日韩三区| 精品对白久久不卡| 熟女五十路一区二区三| 啊啊啊好爽快点啊啊啊嗯嗯| 欧美91网站| 综合久久2017| 乱伦3P视频| 日本一二三高清| 久久久久成人网| 免费人成在线观看网站品爱网| 天天色粽合合合合合合合| 欧美亚洲AN| 免费试看60秒| 色情综合网| 欧美青青草视频| av网站免费线看| www99热| 操死我了啊啊啊| 亚洲欧美一区二区网址| 色婷婷综合网| 亚洲 欧美 日韩另类 麻豆| 26UUU欧美激情一区二区| 色嘟嘟人妻天堂网| 亚洲无码日韩电影| 人人透人人操| 欧美一二级| 国产欧美日韩一区二区三区| 宅男午夜在线视频| 男人的午夜天堂| 五月婷婷AV| 91美女高潮| 天天搞在线综合网| 91成人社区| 黄片国产精品一区二区| 闷骚老熟女15P| 久久产精品一区二区三区电影| 91蜜桃婷婷狠狠久久综合9色| 91色伦| 欧美麻豆成人同性GⅤ在线| 97操在线| 亚洲欧综合另类无码一区| 97超碰亚洲| 欧美日日操| 久啪| 亚洲国产精品成人无码久久久| 成人一区二区三区四区| 国产日韩精品人妻久久久久色欲网站| 国产午夜福利视频在线| 超碰在线人妻中文字幕| 成人A片男人的天堂| 天天夜躁日日躁狠狠2002| 熟妇一区二区三区| 国产一区自拍欧美日韩| 天天综合网AV91| 日本视频在线观看污污污| 欧美一二级| 91超级碰| 91激情| 亚洲综合99999| 日韩精品一区二区日韩| 97国产精品久久久久| 性色av婷婷久久一区二区点复制| 色色97爱| 婷婷激情一区二区三区俺也去| 欧美Aⅴ| 操老熟女AV| 丁香啪啪| 久久 国产 无码| 亚洲精品久久一区二区三区蜜桃臀| 免费中文在线| 欧美在线啊啊| 欧美日韩国产男人| 天天色综亚洲91污| 99re视频这里只有精品| 欧美性区| 搡老熟女老女人老熟妇免费视频| 少妇无码999| 四季AV综合网址| 免费强奸av| 69天堂| 日韩综合97P| 发朗少妇买婬全视频中文| 内射夫妻三片| 久超碰这里只有精品| 殴美,日韩国产伦精品| 男人天堂黄片| 女生久久网| jiujiujiujingpin| 999在线电影香蕉| 噜噜噜在线视频| 无码免费精品高清| 嗯嗯不要视频| 操淫穴亚洲五月丁香| 美女刺激久久国产欧美| 美女极品一区二区三区| 免费国产视频| 9997se| 亚州乱码中文字幕综合久久久| 色青青久久影视| 亚洲无码超碰免费| 日本欧美不卡| 91视频综合在线| 久草视频制服诱惑| 一起草av| 国产一级黄色片在线观看| www熟女乱伦com| 怡红院久久老司机| 九九热精彩视频| 91逼逼女人91| 91色情黑丝搞鸡在线观看一区二区三区三州| 性暴力欧美猛交在线直播| 96麻豆精品一区二区三区| 伊人亚洲综合| 青青草啪啪网| 熟妇人妻一区二区三区| 人人操AV| 极品极品色影院| 国产精品成人福利在线| 久久久久亚洲三级电影| 97在线观看| 中国特猛少妇色xxx| 日韩无码服务区| 操少妞在线视频| 久啪| 精品9区| 欧洲精品人妻| 免费网站观看www在线观| 久久熟女人| 久久久久久人妻| 日韩婷婷| 婷婷激情四射| 91大学精品激情戏| 狠狠干狠狠色| 激情丁香五月| 天美传媒国产原创中文字幕亚洲欧美另类 | 亚洲97综| 人妻精品视频一区二区三区| 97色97干| 久久产精品一区二区三区电影| 91亚洲欧洲| 91综合在线| 亚洲另类欧美精品| 国产操逼视频在线观看| 在线色导航| 3D污黄视频在线观看| 美女国产一区二区久久| 在线视频日韩欧美国产| 97久久视频| 精品精品精品| 国产精品 亚洲情色| 亚洲综合888| 啊啊啊不要好爽日韩无码一区| se,,,亚洲欧美| 久久久久久久久久久久欧美日| 日本中文字幕一区| 日本亚欧爱爱| 天久久久噜噜噜久久国产精品爽爽 | 成人线上超碰| 最新亚洲人成网站在线影院| 太久视频| 超碰久热| 超碰97色色| 色五月激情AV在线| 0755午夜福利视频| 国产精品福利资源在线尤物| 18禁中文字幕| 五月丁香色色网| 青青草在线成人视频| 抽插爽| 舔人妻中文免费视频| 2017天天插| 人人摸.人人色| 丁香九月激情啪| 91美腿丝袜在线观看| 久久夜夜夜| 超碰在线免费一区二区三区| 操啊国产| 99热精品在线| 丝袜无码a片| 国产综合久| 欧美日韩性爱电影在线| 欧美婷婷五月天| 日韩精品熟妇| 欧美综合色,www| 午夜精品久久久久久久男人的天堂 | 国产熟女完整版中字| 五月婷婷影院| 欧美超碰人妻97| 久久产精品一区二区三区电影| 国产高清MV操逼视频| 蜜桃色色网站视频三区| 青青草日韩免费观看高清在线| 欧美色图亚洲激情| 国产亚洲日本精品在线| 很黄很污的免费网站| 久久这里只精品| 九九综合久久中文字幕| 欧美成人9797| 国产精品夜夜夜| 在线观看成人性爱免费小视频| 亚洲婷婷五月天| 毛片麻豆91糖心精品毛情片| 成人小说另类在线| 熟女精品一区二区三区| 天天天操天天天爱| 国产日韩欧美中文在线播放| 国模限制级电影| 91制服丝袜| 欧亚性爱视频免费看| 二级久久网| 偷拍 欧美 日韩| 丝袜美腿欧美| 色爱天堂| 激情av| 超碰久草| 五月婷婷丁香中文字幕| 国产精品久久久999| 成人一道本免费视频| 少妇99成人麻豆| 九九草| 日本三级中国三级99人妇网站| 欧美日韩精品青青| 日本色色色视频| 老司机免费视频在线91| 1人人看人人摸人人操| 亚洲丝袜天堂| 精品亚洲成人免费在线| 国产白领连续中出在线观看| 日本一区二区三区四区五区六区七区八区九区| 国产版a级片直播在线| 亚洲人精品午夜不卡| 黄色免费网页无码| 一区二三区四区视频大全套| 强奸乱伦Av网| 97热视频在线观看| 操逼无码一区| 国产精品久久久久999| 日本视频在线观看污污污| 国产性爱欧美性爱在线| 亚洲成人福利电影免费| 国产热av| 9色在线| 亚洲色电影在线| 日韩一级二级| 麻豆三极片| 啊啊啊啊啊在线视频| 亚洲无码国产精品久久| 都市激情人妻一区二区青青操视频 | 日韩丰满熟妇| 亚洲在线A| 99热官网| 家庭乱伦麻豆| 夜夜操一区二区| 搡老熟女老女人老熟妇免费视频| 欧美色九九| 天天透伊人| 欧美性爱无码一区二区三区| 超碰97在线中文| 女人高潮抽搐喷水视频网站| 精品久久久久久久| 91国产大片| 久久久久久国产精品免费网站| 成人情色综合网| 亚洲色天堂日韩中| 人人做天天爱| 亚洲AV永久无码精品成人调教| 五月丁香色婷婷| Sekablack无码一区| 91 亚洲情侣偷拍 久久| 亚洲成人在线播放| 亚洲精品一区二区精华| 茄子社区国产精品| 日韩乱码av| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 有码人妻系列| 懂色AV蜜臀无码精品APP| 天堂综合网| 人人妻人人玩人人澡人人爽| 欧美在线啊啊啊 | 91熟女视频网| 麻豆区99999| 韩国三级理论在线| 懂色aV一区二区天美传媒| 久久精品高清无码一区| 亚洲 图片 综合91| 岛国视频免费在线观看| 天天激清| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 国产女人操逼视频| 99无码狠狠久久| 超碰97资源网亚洲| 综合网久久| 大香蕉伊人色偷偷在线| 欧美性爱三区二区| 国产在线综合福利网站| 99色热| 日韩综合97P| 久久av色| 国产精品爽爽v| 97视频新免费| 久久久一二三四区| AV天堂丝袜| 精品中文字幕一区二区| 亚州,欧美在线| 精品国产污一区二区三区| 午夜男女爽爽爽在线视频| 中文字幕精品一区二| 亚洲黄色| 我要色综合网站| 亚洲精品 欧美精品| 欧美最婬乱婬爆婬性视频 | 天天操人人操骚逼网站| 日韩一999精品| 婷婷综合五月天| 精品国产久热在线观看| 亚洲一区二区三区中文字幕| 欧美国产精品久久九九| 国产精品噜噜噜日日日| 天天久久久久久| 91处女在线视频| 牛牛久久国产精品视频一二三 | 无码免费在线观看黄色片| 91视频在线观看18| 婷婷激情丁香| 日韩欧美三级| 欧美在线大香999| 久久国产精品视频| 四虎精品一区| 天天综合站| 亚洲熟妇自偷自拍另欧美| 成人国产精品三级A片| 岛国AB视频| 久久精品国产亚洲AV无码做| 老司机深夜18禁污污网站| 久久精品一区二区一8| 东京热男人的天堂| 国产 日韩,欧美 自拍| 日本精品999| 亚洲精品国产精品成人| 国产高清亚洲日韩一区| 欧美日韩国产一区二区小黄片大全| 久久精品熟女亚洲AV麻豆软件| 色综合加勒比| 极品销魂美女一区二区| 特级特黄一级毛片免费| 在线a v| 亚洲日韩美国人妻| 五月综合婷婷久久网站| 日韩av乱伦| 国产精品一二三免费网站| 久操B网| 麻豆天美制片厂网站视频| 欧美夜色| 亚洲熟女少妇免费视频| 日韩欧美三级| 蜜臀久久99精品久久久电影| 13小男生GAY自慰脱裤子| 天天谢天天干| 免费看久久久性性| 3571色综合一区二区二区| 亚洲国产综合久久久性感熟妇| 操学生天天| 中出在线视频| 97干97色| 操逼免费视频无码国产| 日亚韩精品视频二区三| 日本免费中文一区二区三区四区 | 啪啪视频免费在线观看| 欧美日韩国产三级黄色| 一级免费啪啪片| 久久久影院| x97av| 久久九色| 亚洲少妇综合在线播放| 亚洲性爱高潮影院| 伊人久久久日韩一区| 亚州高清AV| 欧美高清无码免费视频高清版| 国产精品嫩草影院免费| 女优免费一区二区永久| 超碰天天操| 国产熟女无套内射| 91精品国产日韩欧美综合| 人妻久久久久久| 2000亚洲男人天堂| 91久| 国产这里只有精品| 免费人人搞97| 国产精品不卡少妇白| 午夜福利无毒不卡| 欧洲色色| 伊人久久亚洲色欲综合网站 | 91少妇通奸网站| 日日夜夜摸| 国产高潮AA片免费看| 欧美精品偷拍| 上特色A在线| 女人双腿搬开让男人桶| 伊人久久大香蕉线AV五月天| 91热热色| 国产AV久久野战精品| 久久国产视频专区一二三 | 日韩乱码Av| 超碰欧美COM| 亚洲欧洲精品视频发布| 超碰在线974| 久久东京热久久| 欧美性爱另类综合| 97网址97| 欧美激情性爱视频网站| 啊a一区在线| 91欧美网| 极品尤物在线观看| 天天操美美| 91丨九色丨国产丨人妻在线 | 老熟女天天操| 色青青久久影视| 中文字幕诱惑制服人妻丝袜美丝袜美 | 黄色网址在线免费观看| 1204av韩国| www.亚洲黄色| 日韩av熟女一区二区三区成人| 青草精品视频日本久久久久网站在线| 爱媛媛久久国产福利| 日韩不卡一二三四| 国产女人高潮嗷嗷嗷叫小说| 欧美狠狠鲁| 内射夫妻三片| 91欧美偷拍| 日韩成人性日韩成人性爱视频在线免费观看| 91久久久久久久| 久久久久久久久女黄| 亚洲中文字母在线播放| 人妻无码一区二区三区久久99| 欧美日韩亚洲一区二区在线观看| 熟女自慰久久久| 老子午夜伦不卡影院| 97久久精品国产| 黄片视频,下载| 久久久久元码视频| 亚洲AV秘 精品久久老牛影视| 天天操人人操骚逼网站| 青娱乐国产精品| 久久精品一区一起草| 欧美国产日韩高清在线| 一本大道青青| 日韩一级二级| 午夜国产成人精品视频| 国产精品网站免费| 天天色天天干天天爱| 久草精品一区| 日韩AC| 人妻精品一区二区| 男人的天堂.com| 国产精品国产自产高清AV| 加勒比少妇AV婷婷六月天超碰超碰| 国产小黄片在线免费观看| 国产精品久久久午夜夜伦鲁鲁| 五月香婷婷| 97超碰站| 搞中出视频在线观看| 99久久精品无码一区二区| 欧美综合色| 久久精彩视频9| 被男人添B超爽视频| 天天搞欧美| 91美女视屏| 自拍视频一区在线观看| 蜜区区视频79 | 亚洲 欧美综合| 佐山爱中文字幕| 久久精视频美日韩在线视频| 大香蕉日韩| 久久av色| 日本肉体xxxx裸交| 天天草天天日| 人妻素股| 日本天天吊| 国产精品一区二区三区,亚洲综合| 国产精品丝袜在线| 久久99手机免费视频| 亚洲精品日日夜夜52| 成人国产视频在线观看| 激情情色五月天| 色女综合| 综合色久| 18禁免费视频| 色悠久| 91精品人妻五十路| 人妻一区二区三区| 欧美中出1| 91丨豆花丨熟女| 一区二区三| 欧洲一区二区三区四区在线观看| 日韩pv中文| 精品国产肉丝袜在线拍国语| 亚洲97成人在线观看| 少妇的嫩逼图片| 欧美人人天天网| 九九视品黄色| 激情看片网站| 黄片免费久久久久久久| 国产精品午夜AV完会免费| 蜜桃网熟妇| 色色色色色色色色综合| 丰满少妇人妻久久久久久| 思思热免费视频观看| .精品人妻一区二区三| 久久系列| 激情婷婷黑人91| 蜜桃一区二区三区| 国产大片精久久久久久| 久久久久免费少妇| av资源在线观看少妇| av在线一区二区三区| 黄人人操人人操| 国产后入| 天天综合中文字幕 91| 欧美色图自拍| 97视频在线视频| 久久999久| 日韩成人午夜精品久久高潮| 91亚洲人电影| 日韩久久三区| 亚洲成人在线播放| 中文字幕 国产 精品| 亚洲影视第一页| 日本97久久| 91丝袜在线视频| 国产熟妇一区二区| 日韩二三区| 国产视频一区二区三区久久亚洲天堂| 25国产精品免费观看| 国产免费永久精品无码| 8050无码八戒| JIZZJIZZ国产精品喷水| 温婉少妇玩3p| 91爆操视频| 3p国产色噜噜一区| 日韩久久激情精品| 国产一级αv免费看片| 小情侣高清国产在线视频| 加勒比久久综合网高清| 色久桃花影院在线观看| 老司机射| 亚洲aV性爱| 五月丁香啪啪| 淮穴色AV| 人人手机欧洲亚洲国产人妻| 欧美精品在线观看| 日韩激情视频| 亚洲999综合| 精品久久久一本一道| 婷婷激情丁香| 国产精品美女| 久久无码一区二区二三区性色| 国产久久免费精品视频| 啪啪AV导航| 97久久超碰|