亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Turbo C 程序設計初步

2019-11-17 05:01:29
字體:
來源:轉載
供稿:網友
 本節主要介紹Turbo C程序設計的基本步驟及如何編譯、調試和運行源程序。并給出Turbo C的常用編輯命令。最后介紹Turbo C編譯、連接和運行時的常見錯誤。  一、Turbo C程序設計基本步驟  程序設計方法包括三個基本步驟:  第一步: 分析問題。   第二步: 畫出程序的基本輪廓。   第三步: 實現該程序。   3a. 編寫程序   3b. 測試和調試程序   3c. 提供數據打印結果   下面, 我們來說明每一步的具體細節。   第一步: 分析問題   在這一步, 你必須:   a. 作為解決問題的一種方法, 確定要產生的數據(輸出)。 作為這一子步的一部分, 你應定義表示輸出的變量。   b. 確定需產生輸出的數據(稱為輸入), 作為這一子步的一部分, 你應定義表示輸入的變量。   c. 研制一種算法, 從有限步的輸入中獲取輸出。 這種算法定義為結構化的順序操作, 以便在有限步內解決問題。就數字問題而言, 這種算法包括獲取輸出的計算, 但對非數字問題來說, 這種算法包括許多文本和圖象處理操作。   第二步: 畫出程序的基本輪廓   在這一步, 你要用一些句子(偽代碼)來畫出程序的基本輪廓。每個句子對應一個簡單的程序操作。對一個簡單的程序來說, 通過列出程序順序執行的動作,便可直接產生偽代碼。然而, 對復雜一些的程序來說, 則需要將大致過程有條理地進行組織。對此, 應使用自上而下的設計方法。   當使用自上而下的設計方法時, 你要把程序分割成幾段來完成。列出每段要實現的任務, 程序的輪廓也就有了, 這稱之為主模塊。當一項任務列在主模塊時,僅用其名加以標識, 并未指出該任務將如何完成。這方面的內容留給程序設計的下一階段來討論。將程序分為幾項任務只是對程序的初步設計。整個程序設計歸結為下圖所示的流程圖1.。   ┏━━━━━━━━━━━━━━━┓   ┃ 主模塊 ┃   ┏━━━━━━━┓ ┃ 輸入數據 ┃   ┃ 主模塊 ┃ ┃ 計算購房所需的金額 ┃   ┃ ┃ ┃ 計算裝修所需的金額 ┃   ┃ 任務1 ┃ ┃ 計算總金額 ┃   ┃ 任務2 ┃ ┃ 輸出計算結果 ┃   ┃ 任務3 ┃ ┃ ┃   ┃ 任務4 ┃ ┗━━━━━━━┳━━━━━━━┛   ┃ ┃ ┏━━━━━┳━━━━━╋━━━━┳━━━━━┓   ┃ ┃ ┏━━┻━┓┏━━┻━┓┏━━┻━┓┏━┻━┓┏━━┻━┓   ┗━━━━━━━┛ ┃輸入數據┃┃購房額..┃┃裝修額..┃┃總額..┃┃輸出結果┃   ┗━━━━┛┗━━━━┛┗━━━━┛┗━━━┛┗━━━━┛   圖1. 程序初步設計 圖2. 第二級程序設計   假如把主模塊的每項任務擴展成一個模塊, 并根據子任務進行定義的話, 那么, 程序設計就更為具體了(見圖2.)。這些模塊稱為主模塊的子模塊。程序中許多子模塊之間的關系可象圖2.中那樣歸結為一張圖。這種圖稱為結構圖。   要畫出模塊的輪廓, 你可不考慮細節。假如這樣的話, 你必須使用子模塊,將各個模塊求精, 達到第三級設計。繼續這一過程, 直至說明程序的全部細節。   這一級一級的設計過程稱為逐步求精法。在編寫程序之前, 對你的程序進行逐步求精, 對你來說, 是很好的程序設計實踐, 會使你養成良好的設計習慣。   我們則才描述了程序設計中自上而下的設計方法。實際上就是說, 我們設計程序是從程序的"頂部"開始一直考慮到程序的"底部"。   第三步: 實現該程序   程序設計的最后一步是編寫源碼程序。 在這一步, 把模塊的偽代碼翻譯成Turbo C語句。   對于源程序, 你應包含注釋方式的文件編制, 以描述程序各個部分做何種工作。此外, 源程序還應包含調試程序段, 以測試程序的運行情況, 并答應查找編程錯誤。一旦程序運行情況良好, 可去掉調試程序段, 然而, 文件編制應做為源程序的固定部分保留下來, 便于你或其他人維護和修改。
  二、源程序的輸入、編譯和運行    
      C語言是一種中級語言, 用戶用C語言編寫的程序稱為源程序, 存放用C 語言所寫源程序文件名字最后的兩個字符一般必須為".c"。計算機硬件不能直接執行源程序, 必須將源程序翻譯成二進制目標程序。翻譯工作是由一個程序完成的,這個程序稱為編譯程序, 翻譯的過程稱為編譯, 編譯的結果稱為目標程序, 存放目標程序文件名字緊后的字符一般為".OBJ"或".O"。程序翻譯成目標程序后, 便可進行連接。"連接"的目的是使程序變成在計算機上可以執行的最終形式。在這一階段, 從系統程序庫來的程序要與目標程序連接, 連接的結果稱為執行程序,存放執行程序文件名字一般以".EXE"結尾。   在Turbo C集成開發環境中建立一個新程序通常有以下幾個步驟:   (1). 在編輯器中編寫源文件。   (2). 生成可執行文件。   在DOS提示符下鍵入TC, 即可進入Turbo C了。進入主TC屏后, 按F3鍵, 即可在隨之出現的框中輸入文件名, 文件名可以帶".C"也可以不帶( 此時系統會自動加上)。輸入文件名后, 按回車, 即可將文件調入, 假如文件不存在, 就建立一個新文件(也可用下面例子中的方法輸入文件名)。系統隨之進入編輯狀態。就可以輸入或修改源程序了, 源程序輸入或修改完畢以后, 按Ctrl+F9(同時按下Ctrl鍵和F9鍵), 則立即進行編譯、連接和執行, 這三項工作是連續完成的。   下面我們試著建立一個Turbo C名為"HELLO.C"的源程序(因程序很小, 這里就不畫出該程序的輪廓圖了):   1. 操作步驟:   (1). 將系統置于DOS提示符下:   (2). 鍵入命令:   tc hello.c   使系統進入Turbo C集成開發環境, 并建立一個名為HELLO.C的文件。這時, 系統進入Turbo C編輯環境。   (3). 通過鍵盤輸入程序, 例如:   main()   {   
  Turbo C 常用的編輯命令   Turbo C編輯程序大約有50條命令, 用以移動光標, 按頁查看正文, 查找并替換字符串等。如下表所示。   表1. Turbo C編輯程序命令   ━━━┳━━━━━━━━━┳━━━━━━━━━━━━━
   
   
  類別 ┃ 功能 ┃ 默認鍵   ━━━╋━━━━━━━━━╋━━━━━━━━━━━━━   ┃ 字符左 ┃ Ctrl+S或Left   基 ┃ 字符右 ┃ Ctrl+D或Right   本 ┃ 字左 ┃ Ctrl+A   光 ┃ 字右 ┃ Ctrl+F   標 ┃ 上行 ┃ Ctrl+E或Up   移 ┃ 下行 ┃ Ctrl+X或Down   動 ┃ 上滾 ┃ Ctrl+W   命 ┃ 下滾 ┃ Ctrl+Z   令 ┃ 上一頁 ┃ Ctrl+R或PgUp   ┃ 下一頁 ┃ Ctrl+C或PgDn   ━━━╋━━━━━━━━━╋━━━━━━━━━━━━━   快 ┃ 行頭 ┃ Ctrl+QS或Home   速 ┃ 行尾 ┃ Ctrl+QD或End   光 ┃ 窗口頭 ┃ Ctrl+QE   標 ┃ 窗口底 ┃ Ctrl+QX   移 ┃ 文件頭 ┃ Ctrl+QR   動 ┃ 文件尾 ┃ Ctrl+QC   命 ┃ 塊頭 ┃ Ctrl+QB   令 ┃ 塊尾 ┃ Ctrl+QK   ┃ 上次光標位置 ┃ Ctrl+QP   ━━━╋━━━━━━━━━╋━━━━━━━━━━━━━   輸 ┃ 插入模式 ┃ Ctrl+V或Ins   入 ┃ 插入行 ┃ Ctrl+N   與 ┃ 刪除行 ┃ Ctrl+Y   刪 ┃ 刪除至行尾 ┃ Ctrl+QY   除 ┃ 刪除光標左邊字符┃ Ctrl+H或Backspace   命 ┃ 刪除光標處字符 ┃ Ctrl+G或Del   令 ┃ 刪除光標右邊字符┃ Ctrl+T   ━━━╋━━━━━━━━━╋━━━━━━━━━━━━━   ┃ 標記塊首 ┃ Ctrl+KB   ┃ 標記塊尾 ┃ Ctrl+KK   ┃ 標記單個字 ┃ Ctrl+KT   塊 ┃ 復制塊 ┃ Ctrl+KC   命 ┃ 刪除塊 ┃ Ctrl+KY   令 ┃ 塊取消 ┃ Ctrl+KH   ┃ 塊移動 ┃ Ctrl+KV   ┃ 讀塊 ┃ Ctrl+KR   ┃ 寫塊 ┃ Ctrl+KW   ━━━╋━━━━━━━━━╋━━━━━━━━━━━━━   ┃ 異常結束操作 ┃ Ctrl+U或Ctrl+Break   ┃ 制表 ┃ Ctrl+L或Tab   其 ┃ 自動縮進 ┃ Ctrl+OI   ┃ 定界符配對 ┃ Ctrl+Q[或Ctrl+Q]   它 ┃ 查找 ┃ Ctrl+QF   ┃ 查找并替換 ┃ Ctrl+QA   ┃ 查找標記 ┃ Ctrl+QN   ┃ 退出編輯 ┃ Ctrl+KQ   ━━━┻━━━━━━━━━┻━━━━━━━━━━━━━   Turbo C 程序的調試   一個程序設計好了以后, 通常會有一些錯誤, 查找和修改程序中的錯誤是令人頭痛的事。Turbo C集成開發環境提供了一調試裝置, 使得這一個工作輕易了許多, 程序調試達到了編譯和運行級。   一、TC消息窗口   使用TC最好的理由之一是它答應用戶修改語法錯誤(編譯時) 和評估編譯器給出的警告。TC將編譯器和連接器發出的消息收集到一緩沖區中, 然后在消息窗口中顯示, 這樣在訪問源代碼的同時, 還能一下看到這些消息。   現將上面的HELLO.C制造一點語法錯誤, 將第一行包含語句的#去掉, 再去掉第五行printf語句中的后引號。現在程序看上去是這樣的:   include   main()   {   printf("Hello, world/n);   }   按CTRL+F9重新編譯之。編譯窗口將顯示有多少錯誤和警告: 應為兩個錯誤, 0個警告。   當看見編譯窗口中的Press anykey提示時, 按空格鍵, 消息窗口馬上被激活,亮條出現在第一個錯誤或警告上, 這時編輯窗口中也會有一亮條--- 它標志著編譯器給出的錯誤或警告在源代碼中的相應位置。   這時可用光標鍵將消息窗口中的亮條上下移動, 注重到編輯窗口中的亮條也隨著跟蹤源代碼中錯誤發生的位置。假如將亮條置于"compile"上, 則編輯器顯示文件的最后位置。   假如消息窗口太長看不見, 可用左、右光標水平滾動消息, 為了一次能夠多看點信息, 可按F5放大消息窗口。放大后, 編輯窗口不可見了, 因此不進行錯誤跟蹤?,F在, 保持分屏模式。   為了改正錯誤, 將消息窗口中的亮條置于第一個錯誤消息上, 回車, 光標移到編輯窗口中錯誤產生處, 注重, 編輯器狀態給出所選消息( 這在放大模式下是有用的)改正之。(將第一行拿走的#重新寫上)。   當不只一個錯誤時, 可用兩種方法來修改下一錯誤。   第一種方法和前面一樣, 按F6回到消息窗口選擇想修改的下一條消息。   第二種方法不用回到消息窗口, 只要按Alt+F8, 編譯器就會將光標移至消息窗口中列的下一個錯誤。按Alt+F7可移至前一個錯誤。   這兩種方法各有長短, 視情況而定。有時源代碼中一個愚蠢的錯誤把編譯弄糊涂了, 產生好多消息, 這時選擇修改第一條消息就使得其余的一些錯誤消息沒有什么意義了, 這種情況發生時, 使用方法一會方便些, 一修改完第一個錯誤之后回到消息窗口, 再滾動到下一個有意義的消息上, 選擇之。在別的情況下, 按Alt+F8會方便得多。   記住, Alt+F7和Alt+F8是熱鍵, TC中無論何時均起作用。因此在消息窗口中按Alt+F8得到的不是當前亮行消息, 而是下一個消息(按Enter選擇當前消息)。   但假如沒別的編譯消息, Alt+F8就不起作用了。   注: 可以如此法選擇連接消息, 但它們不跟蹤源文件。在修改語法錯誤的過程當中, 經常需要增加、刪除正文, 編輯器是記住的, 依然能正確定位錯誤位置。   沒有必要記住行號和增加、刪除的正文行。

  二、Turbo C集成調試器   一旦修改好語法錯誤之后程序編譯就沒什么問題了, 但還是可能不按要求運行, 因為可能有邏輯錯誤(運行錯誤)。這種錯誤跟蹤就無助于發現錯誤位置了。    
      TC有一個集成調試器可以跟蹤運行錯誤。通過調試器可以運行, 在斷點處暫停,檢查變量的值, 甚至可以改變之, 以看程序會有什么反應。   Turbo C集成調試器是源程序級的調試器, 即用同你編寫程序一樣的" 語言"來控制調試器。例如, 為了顯示數組中的一個元素的值, 可告訴調試器顯示這樣的表達式的值:   Ctrl+F4 Debug/Eavluate 計算表達式, 答應修改變量的值。   Debug/Find Function 查找函數定義, 顯示在編輯窗口中。 僅在調試時才有效。   Ctrl+F3 Debug/Call Stack 顯示調用棧, 可顯示任何函數的當前執行位置, 其方法是在調用棧中選擇相應的函數名。僅在調試時有效。   Debug/Source Debugging 控制是否答應調試: 置為On時, 集成調試器和單獨調試器均可用 ; 置為   Standalone時, 只能用單獨調試器調試, 雖然還能在TC中運行; 置為None時, 在.EXE文件不置調試信息,兩種調試均不能調試。   Ctrl+F4 Break/Watch/Add Watch 增加一監視表達式。   Break/Watch/Delete Watch 刪除一監視表達式。   Break/Watch/Edit 編輯一監視表達式。   Break/Watch/Remove All 刪除所有監視表達式。   Watches   Ctrl+F8 Break/Watch/Toggle 設置或清除光標所在行的斷點。   Breakpoint   Break/Watch/Clear 刪除程序中所有斷點。   Breakpoint   Break/Watch/Next 顯示下一斷點   Breakpoint   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━      表3. 調試器菜單命令及其熱鍵   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   熱鍵 菜單命令 功能   ───────────────────────────────────   F5 在整屏和分屏之間放大縮小活動窗口。   Alt+F5 將顯示轉到用戶屏, 擊任意鍵返回。   F6 在編輯窗口與監視窗口或消息窗口間   切換。   Alt+F6 若編輯窗口是活動的, 轉到最近一次   裝入編輯器的文件; 若下面窗口是活   動的, 則在監視窗口和消息窗口間切換。   Ctrl+F9 Run/Run 調試運行或不調試運行程序, 必要時   編譯、連接源文件, 若編譯、 連接時   Debug/Source Debuging和O/C/C/OBJ   Debug Information為On, 則運行程序   到斷點或程序末尾。   Project/Remove Messages 刪除消息窗口中的內容。   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  判定程序是否出錯或者為什么出錯是編程中最有挑戰意義的一方面。這里建義你進行預防性設計, 具體做法為:   (1). 將代碼寫清楚點, 應作適當縮進, 使用文字說明和描述性的變量名。    
      (2). 代碼應簡單, 把精力放在簡單語句中的復雜表達式, 而不是一些復雜語句。Turbo C的代碼優化機制將大大提高代碼的效率, 而且調試、閱讀、 修改起來輕易。   (3). 盡量用目的簡單、好定義的函數構建程序。 這會便于編制調試程序和分析結果, 而且閱讀、修改起來也要輕易一些。   (4). 應盡量減少各個函數要求的數據和改變數據的元素個數。 這也會便于編制測試程序和分析結果; 同樣便于閱讀、修改程序。并且還限制了出錯函數可能造成的巨大混亂的牽涉面, 便得能在一個調試節中多運行函數幾次。   (5). 要留心編寫程序中的公共函數, 或者說在其它程序中可再用的函數。   編寫、調試一個一般性的函數通常要比編寫、調試兩個或更多的非凡函數要輕易。   Turbo C編譯、連接和運行時的常見錯誤   一、編譯時的常見錯誤   1. 數據類型錯誤。此類錯誤是初學者編程時的常見現象, 下面是一些要引起注重的錯誤:   (1) 所有變量和常量必須要加以說明。   (2) 變量只能賦給相同類型的數據。   (3) 對scanf()語句, 用戶可能輸入錯誤類型的數據項, 這將導致運行時出錯, 并報出錯信息。為避免這樣的錯誤出現, 你就提示用戶輸入正確類型的數據。   (4) 在執行算術運算時要注重:   a. 根據語法規則書寫雙精度數字。要寫0.5, 而不是寫.5; 要寫1.0,而不是1。盡管C語言會自動地把整型轉換成雙精度型, 但書寫雙精度型是個好習慣。讓C語言為你做強行轉換這是一種效率不高的程序   設計風格。 這有可能導致轉換產生錯誤。   b. 不要用0除。這是一個災難性的錯誤, 它會導致程序失敗, 不管C語言的什么版本, 都是如此, 執行除法運算要非凡小心。   c. 確保所有的雙精度數(包括那些程序輸入用的雙精度數) 是在實數范圍之內。   d. 所有整數必須在整數答應的范圍內。這適用于所有計算結果, 包括中間結果。   2. 將函數后面的";"忘掉。此時錯誤提示色棒將停在該語句下的一行, 并顯示:   Statement missing ; in function <函數名>   3. 給宏指令如#include, #define等語句尾加了";"號。   4. "{"和"}"、"("和")"、"/*"和"*/"不匹配。 引時色棒將位于錯誤所在的行, 并提示出有關丟掉括號的信息。   5. 沒有用#include指令說明頭文件, 錯誤信息提示有關該函數所使用的參數未定義。   6. 使用了Turbo C保留要害字作為標識符, 此時將提示定義了太多數據類型。   7. 將定義變量語句放在了執行語句后面。此時會提示語法錯誤。   8. 使用了未定義的變量, 此時屏幕顯示:   Undefined symbol '<變量名>' in function <函數名>   9. 警告錯誤太多。忽略這些警告錯誤并不影響程序的執行和結果。 編譯時當警告錯誤數目大于某一規定值時(缺省為100)便退出編譯器, 這時應改變集成開發環境Options/Compiler/Errors中的有關警告錯誤檢查開關為off。   10. 將關系符"=="誤用作賦值號"="。此時屏幕顯示:   Lvalue required in function <函數名>

  二、連接時的常見錯誤   1. 將Turbo C庫函數名寫錯。這種情況下在連接時將會認為此函數是用戶自定義函數。此時屏幕顯示:   Undefined symbol '<函數名>' in <程序名>    
      2. 多個文件連接時, 沒有在"Project/Project name中指定項目文件 (.PRJ文件), 此時出現找不到函數的錯誤。   3. 子函數在說明和定義時類型不一致。   4. 程序調用的子函數沒有定義。   三、運行時的常見錯誤   1. 路徑名錯誤。在MS-DOS中, 斜杠(/)表示一個目錄名; 而在Turbo C 中斜杠是個某個字符串的一個轉義字符, 這樣, 在用Turbo C 字符串給出一個路徑名時應考慮"/"的轉義的作用。例如, 有這樣一條語句:   file=fopen("c:/new/tbc.dat", "rb");   目的是打開C盤中NEW目錄中的TBC.DAT文件, 但做不到。這里"/"后面緊接的分別"n"及"t", "/n"及"/t"將被分別編譯為換行及tab字符, DOS將認為它是不正確的文件名而拒絕接受, 因為文件名中不能和換行或tab字符。正確的寫法應為:   file=fopen("c://new//tbc.dat", "rb");   2. 格式化輸入輸出時, 規定的類型與變量本身的類型不一致。例如:   float l;   printf("%c", l);   3. scanf()函數中將變量地址寫成變量。例如:   int l;   scanf("%d", l);   4. 循環語句中, 循環控制變量在每次循環未進行修改, 使循環成為無限循環。   5. switch語句中沒有使用break語句。   6. 將賦值號"="誤用作關系符"=="。   7. 多層條件語句的if和else不配對。   8. 用動態內存分配函數malloc()或calloc()分配的內存區使用完之后, 未用free()函數釋放, 會導致函數前幾次調用正常, 而后面調用時發生死機現象,不能返回
操作系統。其原因是因為沒用空間可供分配, 而占用了操作系統在內存中的某些空間。   9. 使用了動態分配內存不成功的指針, 造成系統破壞。   10. 在對文件操作時, 沒有在使用完及時關閉打開的文件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美夫妻视频在线观看| 成人免费高清完整版在线观看| 国产精品成人免费视频| 久久视频在线观看免费| 欧美国产日韩一区二区在线观看| 色阁综合伊人av| 9.1国产丝袜在线观看| 中文字幕亚洲综合久久筱田步美| 亚洲精品国产精品国自产观看浪潮| 久久久久久久一区二区| 国产精品国产亚洲伊人久久| 精品久久香蕉国产线看观看gif| 成人做爰www免费看视频网站| 69久久夜色精品国产69| 国产91色在线播放| 国产精品久久视频| 欧美亚洲另类激情另类| 欧美日韩黄色大片| 国产亚洲精品成人av久久ww| 欧美性资源免费| 国产精品网红直播| 亚洲久久久久久久久久久| 国产亚洲欧洲高清一区| 欧美精品18videos性欧美| 97色在线视频| 亚洲欧美资源在线| 国产精品大片wwwwww| 亚洲欧洲午夜一线一品| 国产一区二区黄| 中文字幕少妇一区二区三区| 欧美一级淫片丝袜脚交| 日韩最新在线视频| 亚洲第一精品夜夜躁人人躁| 中文字幕免费国产精品| 日韩av快播网址| 亚洲第一免费网站| 久久久久久久91| 亚洲第一精品夜夜躁人人爽| 欧美www在线| 国产精品入口夜色视频大尺度| 欧美综合在线观看| 国产91精品网站| 亚洲天堂av在线免费观看| 98精品国产自产在线观看| 亚洲国产一区二区三区在线观看| 国产精品av在线| 欧美国产日产韩国视频| 成人精品一区二区三区电影免费| 欧美精品在线视频观看| 国产精品白丝av嫩草影院| 亚洲自拍中文字幕| 日韩中文在线观看| 国产免费一区二区三区香蕉精| 久久精品国产清自在天天线| 精品中文字幕乱| 这里只有精品视频在线| 亚洲国产精品久久| 日韩av中文在线| 日韩中文娱乐网| 黄网站色欧美视频| 国产精品第一视频| 日韩福利视频在线观看| 亚洲欧美精品中文字幕在线| 午夜精品一区二区三区av| 久久久爽爽爽美女图片| 国产欧美日韩中文字幕在线| 成人黄色免费在线观看| 久久久午夜视频| 久久精品一本久久99精品| 午夜精品久久久久久99热| 亚洲级视频在线观看免费1级| 国产成人自拍视频在线观看| 欧美伦理91i| 亚洲国产精品久久久久秋霞蜜臀| 国产精品看片资源| 久久久免费观看| 日本免费一区二区三区视频观看| 久久久免费高清电视剧观看| 国产精品麻豆va在线播放| 伦伦影院午夜日韩欧美限制| 97碰碰碰免费色视频| 国产一区二区三区免费视频| 自拍偷拍亚洲精品| 97在线免费视频| 午夜剧场成人观在线视频免费观看| 97在线观看免费高清| 伊人久久免费视频| 亚洲成人av中文字幕| 亚洲男人天堂古典| 亚洲精品美女久久久| 一色桃子一区二区| 久久99精品国产99久久6尤物| 国产精品高潮呻吟视频| 欧美精品第一页在线播放| 久久久久久香蕉网| 不卡在线观看电视剧完整版| 国产成人鲁鲁免费视频a| 久久亚洲私人国产精品va| 久久久综合av| 日韩国产激情在线| 亚洲乱码国产乱码精品精天堂| 影音先锋欧美精品| 国产精品爽爽爽| 久久久久在线观看| 激情亚洲一区二区三区四区| 亚洲国产精品热久久| 国产欧亚日韩视频| 奇米成人av国产一区二区三区| 日韩精品极品视频免费观看| 国产一级揄自揄精品视频| 亚洲高清在线观看| 亚洲精品wwwww| 粉嫩老牛aⅴ一区二区三区| 国产日本欧美一区| 精品福利在线视频| 26uuu亚洲伊人春色| 9.1国产丝袜在线观看| 在线看日韩欧美| 亚洲国产精品yw在线观看| 久久人人爽国产| 国产精品自产拍高潮在线观看| 欧美激情国产日韩精品一区18| 欧美激情久久久| 国产成人综合av| 日韩美女中文字幕| 久久久www成人免费精品| 亚洲最大激情中文字幕| 欧美一性一乱一交一视频| wwwwwwww亚洲| 欧美国产亚洲精品久久久8v| 亚洲国产精品电影| 国产精品丝袜视频| 亚洲精品日韩av| 欧美激情按摩在线| 久久九九国产精品怡红院| 欧美人在线视频| 一区二区三区久久精品| 国产精品日韩欧美大师| www.日韩免费| 久久99久久久久久久噜噜| 国产在线视频欧美| 中文字幕欧美视频在线| 欧美激情精品久久久久久久变态| 亚洲国产成人精品一区二区| 亚洲女人初尝黑人巨大| 清纯唯美日韩制服另类| 亚洲视频第一页| 欧美xxxx综合视频| 日韩视频在线一区| 久久久久亚洲精品| 成人免费黄色网| 国产精品久久久久久久久久三级| 午夜精品久久久久久久男人的天堂| 国产欧美日韩亚洲精品| 久久国产精品久久国产精品| 亚洲成人免费在线视频| 亚洲美女喷白浆| 欧美日韩国内自拍| 欧美亚洲一区在线| 国产视频自拍一区| 全色精品综合影院| 亚洲色图五月天| 久久综合久久八八| 欧美在线视频在线播放完整版免费观看|