當前位置:首頁 » 編程軟體 » 畫出編譯程序的工作過程圖

畫出編譯程序的工作過程圖

發布時間: 2025-06-29 21:38:43

❶ 怎麼編寫c語言程序,如:Helloworld的

代碼如下:

#include<stdio.h>

intmain(void)

{

printf("Hello,world!");

return0;

}

一、首先,打開我們的Visual C++ 6.0軟體,我使用的為中文版,軟體主界面如下圖所示:


(1)畫出編譯程序的工作過程圖擴展閱讀

C語言的基本構成:

1、數據類型。C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。

2、常量與變數。常量其值不可改變,符號常量名通常用大寫。變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。

3、數組。如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。

4、指針。

(1)、如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一

(2)、指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。

(3)指針是一把雙刃劍,許多操作可以通過指針自然的表達,但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。

5、字元串。C語言的字元串其實就是以''字元結尾的char型數組,使用字元型並不需要引用庫,但是使用字元串就需要C標准庫裡面的一些用於對字元串進行操作的函數。它們不同於字元數組。使用這些函數需要引用頭文件<string.h>。

6、文件輸入/輸出在C語言中,輸入和輸出是經由標准庫中的一組函數來實現的。在ANSI C中,這些函數被定義在頭文件<stdio.h>;中。

❷ [C語言] 運行C程序的步驟

(1)上機輸入和編輯源程序。通過鍵盤向計算機輸入程序,如發現有錯誤,要及時改正。最後將此源程序以文件形式存放在自己指定的文件夾內(如果不特別指定,一般存放在用戶當前目錄下),文件用.c作為後綴,生成源程序文件,如f.c。

(2)對源程序進行編譯,先用C編譯系統提供的「預處理器」(又稱「預處理程序」或「預編譯器」)對程序中的預處理指令進行編譯預處理。例如,對於#include<stdio.h>指令來說,就是將stdio.h頭文件的內容讀進來,取代#include<stdio.h>行。由預處理得到的信息與程序其他部分一起組成一個完整的、可以用來進行正式編譯的源程序,然後由編譯系統對該源程序進行編譯。
編譯的作用首先是對源程序進行檢查,判定它有無語法方面的錯誤,如有,則發出「出錯信息」,告訴編程人員認真檢查改正。修改程序後重新進行編譯,如果還有錯,再發出「出錯信息」。如此反復進行,直到沒有語法錯誤為止。這時,編譯程序自動把源程序轉換為二進制形式的目標程序(在Visual C++中後綴為.obj,如f.obj)。如果不特別指定,此目標程序一般也存放在用戶當前目錄下,此時源文件沒有消失。
在用編譯系統對源程序進行編譯時,自動包括了預編譯和正式編譯兩個階段,一氣呵成。用戶不必分別發出二次指令。
(3)進行連接處理。經過編譯所得到的二進制目標文件(後綴為.obj)還不能供計算機直接執行。前面已說明:一個程序可能包含若干個源程序文件,而編譯是以源程序文件為對象的,一次編譯只能得到與一個源程序文件相對應的目標文件(也稱目標模塊),它只是整個程序的一部分。必須把所有的編譯後得到的目標模塊連接裝配起來,再與函數庫相連接成一個整體,生成一個可供計算機執行的目標程序,稱為可執行程序(executive program),在Visual C++中其後綴為.exe,如f.exe。
即使一個程序只包含一個源程序文件,編譯後得到的目標程序也不能直接運行,也要經過連接階段,因為要與函數庫進行連接,才能生成可執行程序。
以上連接的工作是由一個稱為「連接編輯程序」(linkage editor)的軟體來實現的。
(4)運行可執行程序,得到運行結果。
以上過程如圖1.2所示。其中實線表示操作流程,虛線表示文件的輸入輸出。例如,編輯後得到一個源程序文件f.c,然後在進行編譯時再將源程序文件f.c輸入,經過編譯源程序,找出問題,修改源程序,並重新編譯,直到無錯為止。有時編譯過程未發現錯誤,能生成可執行程序,但是運行的結果不正確。一般情況下,這不是語法方面的錯誤,而可能是程序邏輯方面的錯誤,例如計算公式不正確、賦值不正確等,應當返回檢查源程序,並改正錯誤。
為了編譯、連接和運行C程序,必須要有相應的編譯系統。目前使用的很多C編譯系統都是集成開發環境(IDE)的,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,功能豐富,使用方便,直觀易用。

❸ 涓轟粈涔堢▼搴忚佸厛緙栬瘧錛屾墠鑳借繍琛屽晩錛

褰撶紪鍐欏畬涓涓紼嬪簭鍚庯紝闇瑕侀栧厛榪涜岀紪璇戱紝鐒跺悗鍐嶈繍琛屻

濡備笅鍥炬墍紺猴紝紼嬪簭緙栧啓瀹屾瘯鍚庯紝鐐瑰嚮宸ュ叿鏍忎腑鐨凟xecute,閫夋嫨compile(緙栬瘧錛

濡傛灉娌℃湁閿欒錛屽啀閫夋嫨Execute,閫夋嫨run錛堣繍琛)

鎵╁睍璧勬枡

緙栬瘧灝辨槸鎶婇珮綰ц璦鍙樻垚璁$畻鏈哄彲浠ヨ瘑鍒鐨2榪涘埗璇璦錛岃$畻鏈哄彧璁よ瘑1鍜0錛岀紪璇戠▼搴忔妸浜轟滑鐔熸倝鐨勮璦鎹㈡垚2榪涘埗鐨勩緙栬瘧紼嬪簭鎶婁竴涓婧愮▼搴忕炕璇戞垚鐩鏍囩▼搴忕殑宸ヤ綔榪囩▼鍒嗕負浜斾釜闃舵碉細璇嶆硶鍒嗘瀽錛涜娉曞垎鏋愶紱璇涔夋鏌ュ拰涓闂翠唬鐮佺敓鎴愶紱浠g爜浼樺寲錛涚洰鏍囦唬鐮佺敓鎴愩備富瑕佹槸榪涜岃瘝娉曞垎鏋愬拰璇娉曞垎鏋愶紝鍙堢О涓烘簮紼嬪簭鍒嗘瀽錛屽垎鏋愯繃紼嬩腑鍙戠幇鏈夎娉曢敊璇錛岀粰鍑烘彁紺轟俊鎮銆

緙栬瘧璇璦鏄涓縐嶄互緙栬瘧鍣ㄦ潵瀹炵幇鐨勭紪紼嬭璦銆傚畠涓嶅儚鐩磋瘧璇璦涓鏍鳳紝鐢辮В閲婂櫒灝嗕唬鐮佷竴鍙ヤ竴鍙ヨ繍琛岋紝鑰屾槸浠ョ紪璇戝櫒錛屽厛灝嗕唬鐮佺紪璇戜負鏈哄櫒鐮侊紝鍐嶅姞浠ヨ繍琛屻傜悊璁轟笂錛屼換浣曠紪紼嬭璦閮藉彲浠ユ槸緙栬瘧寮忥紝鎴栫洿璇戝紡鐨勩傚畠浠涔嬮棿鐨勫尯鍒錛屼粎涓庣▼搴忕殑搴旂敤鏈夊叧銆



❹ 編譯原理

C語言編譯過程詳解
C語言的編譯鏈接過程是要把我們編寫的一個C程序(源代碼)轉換成可以在硬體上運行的程序(可執行代碼),需要進行編譯和鏈接。編譯就是把文本形式源代碼翻譯為機器語言形式的目標文件的過程。鏈接是把目標文件、操作系統的啟動代碼和用到的庫文件進行組織形成最終生成可執行代碼的過程。過程圖解如下:

從圖上可以看到,整個代碼的編譯過程分為編譯和鏈接兩個過程,編譯對應圖中的大括弧括起的部分,其餘則為鏈接過程。
一、編譯過程
編譯過程又可以分成兩個階段:編譯和匯編。
1、編譯
編譯是讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,源文件的編譯過程包含兩個主要階段:
第一個階段是預處理階段,在正式的編譯階段之前進行。預處理階段將根據已放置在文件中的預處理指令來修改源文件的內容。如#include指令就是一個預處理指令,它把頭文件的內容添加到.cpp文件中。這個在編譯之前修改源文件的方式提供了很大的靈活性,以適應不同的計算機和操作系統環境的限制。一個環境需要的代碼跟另一個環境所需的代碼可能有所不同,因為可用的硬體或操作系統是不同的。在許多情況下,可以把用於不同環境的代碼放在同一個文件中,再在預處理階段修改代碼,使之適應當前的環境。
主要是以下幾方面的處理:
(1)宏定義指令,如 #define a b。
對於這種偽指令,預編譯所要做的是將程序中的所有a用b替換,但作為字元串常量的 a則不被替換。還有 #undef,則將取消對某個宏的定義,使以後該串的出現不再被替換。
(2)條件編譯指令,如#ifdef,#ifndef,#else,#elif,#endif等。
這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉
(3) 頭文件包含指令,如#include "FileName"或者#include <FileName>等。
在頭文件中一般用偽指令#define定義了大量的宏(最常見的是字元常量),同時包含有各種外部符號的聲明。採用頭文件的目的主要是為了使某些定義可以供多個不同的C源程序使用。因為在需要用到這些定義的C源程序中,只需加上一條#include語句即可,而不必再在此文件中將這些定義重復一遍。預編譯程序將把頭文件中的定義統統都加入到它所產生的輸出文件中,以供編譯程序對之進行處理。包含到C源程序中的頭文件可以是系統提供的,這些頭文件一般被放在/usr/include目錄下。在程序中#include它們要使用尖括弧(<>)。另外開發人員也可以定義自己的頭文件,這些文件一般與C源程序放在同一目錄下,此時在#include中要用雙引號("")。
(4)特殊符號,預編譯程序可以識別一些特殊的符號。
例如在源程序中出現的LINE標識將被解釋為當前行號(十進制數),FILE則被解釋為當前被編譯的C源程序的名稱。預編譯程序對於在源程序中出現的這些串將用合適的值進行替換。
預編譯程序所完成的基本上是對源程序的「替代」工作。經過此種替代,生成一個沒有宏定義、沒有條件編譯指令、沒有特殊符號的輸出文件。這個文件的含義同沒有經過預處理的源文件是相同的,但內容有所不同。下一步,此輸出文件將作為編譯程序的輸出而被翻譯成為機器指令。
第二個階段編譯、優化階段。經過預編譯得到的輸出文件中,只有常量;如數字、字元串、變數的定義,以及C語言的關鍵字,如main,if,else,for,while,{,}, +,-,*,\等等。
編譯程序所要作得工作就是通過詞法分析和語法分析,在確認所有的指令都符合語法規則之後,將其翻譯成等價的中間代碼表示或匯編代碼。
優化處理是編譯系統中一項比較艱深的技術。它涉及到的問題不僅同編譯技術本身有關,而且同機器的硬體環境也有很大的關系。優化一部分是對中間代碼的優化。這種優化不依賴於具體的計算機。另一種優化則主要針對目標代碼的生成而進行的。
對於前一種優化,主要的工作是刪除公共表達式、循環優化(代碼外提、強度削弱、變換循環控制條件、已知量的合並等)、復寫傳播,以及無用賦值的刪除,等等。
後一種類型的優化同機器的硬體結構密切相關,最主要的是考慮是如何充分利用機器的各個硬體寄存器存放的有關變數的值,以減少對於內存的訪問次數。另外,如何根據機器硬體執行指令的特點(如流水線、RISC、CISC、VLIW等)而對指令進行一些調整使目標代碼比較短,執行的效率比較高,也是一個重要的研究課題。
2、匯編
匯編實際上指把匯編語言代碼翻譯成目標機器指令的過程。對於被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。目標文件由段組成。通常一個目標文件中至少有兩個段:
代碼段:該段中所包含的主要是程序的指令。該段一般是可讀和可執行的,但一般卻不可寫。
數據段:主要存放程序中要用到的各種全局變數或靜態的數據。一般數據段都是可讀,可寫,可執行的。
UNIX環境下主要有三種類型的目標文件:
(1)可重定位文件
其中包含有適合於其它目標文件鏈接來創建一個可執行的或者共享的目標文件的代碼和數據。
(2)共享的目標文件
這種文件存放了適合於在兩種上下文里鏈接的代碼和數據。
第一種是鏈接程序可把它與其它可重定位文件及共享的目標文件一起處理來創建另一個 目標文件;
第二種是動態鏈接程序將它與另一個可執行文件及其它的共享目標文件結合到一起,創建一個進程映象。
(3)可執行文件
它包含了一個可以被操作系統創建一個進程來執行之的文件。匯編程序生成的實際上是第一種類型的目標文件。對於後兩種還需要其他的一些處理方能得到,這個就是鏈接程序的工作了。
二、鏈接過程
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。
例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠被操作系統裝入執行的統一整體。
根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者一組相關函數的代碼。
(2) 動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
對於可執行文件中的函數調用,可分別採用動態鏈接或靜態鏈接的方法。使用動態鏈接能夠使最終的可執行文件比較短小,並且當共享對象被多個進程使用時能節約一些內存,因為在內存中只需要保存一份此共享對象的代碼。但並不是使用動態鏈接就一定比使用靜態鏈接要優越。在某些情況下動態鏈接可能帶來一些性能上損害。
我們在linux使用的gcc編譯器便是把以上的幾個過程進行捆綁,使用戶只使用一次命令就把編譯工作完成,這的確方便了編譯工作,但對於初學者了解編譯過程就很不利了,下圖便是gcc代理的編譯過程:

從上圖可以看到:
預編譯
將.c 文件轉化成 .i文件
使用的gcc命令是:gcc –E
對應於預處理命令cpp
編譯
將.c/.h文件轉換成.s文件
使用的gcc命令是:gcc –S
對應於編譯命令 cc –S
匯編
將.s 文件轉化成 .o文件
使用的gcc 命令是:gcc –c
對應於匯編命令是 as
鏈接
將.o文件轉化成可執行程序
使用的gcc 命令是: gcc
對應於鏈接命令是 ld
總結起來編譯過程就上面的四個過程:預編譯、編譯、匯編、鏈接。了解這四個過程中所做的工作,對我們理解頭文件、庫等的工作過程是有幫助的,而且清楚的了解編譯鏈接過程還對我們在編程時定位錯誤,以及編程時盡量調動編譯器的檢測錯誤會有很大的幫助的。

❺ c語言流程圖是怎樣的

流程圖:

(5)畫出編譯程序的工作過程圖擴展閱讀:

基本特性

1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。

2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。

C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。

3、代碼級別的跨平台:由於標準的存在,使得幾乎同樣的C代碼可用於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。

4、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。

C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另一部分所詬病。

java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。

一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。

特有特點:

1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。

2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。

3、不同的變數類型可以用結構體(struct)組合在一起。

4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。

5、部份的變數類型可以轉換,例如整型和字元型變數。

6、通過指針(pointer),C語言可以容易的對存儲器進行低級控制。

7、預編譯處理(preprocessor)讓C語言的編譯更具有彈性。

參考資料:網路-c語言




    ❻ 編譯程序的工作過程

    編譯程序必須分析源程序,然後綜合成目標程序。首先,檢查源程序的正確性,並把它分解成若干基本成分;其次,再根據這些基本成分建立相應等價的目標程序部分。為了完成這些工作,編譯程序要在分析階段建立一些表格,改造源程序為中間語言形式,以便在分析和綜合時易於引用和加工(圖1)。
    數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程序。符號表由源程序中所用的標識符連同它們的屬性組成,其中屬性包括種類(如變數、數組、結構、函數、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程序所需的其他信息。常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。中間語言程序是將源程序翻譯為目標程序前引入的一種中間形式的程序,其表示形式的選擇取決於編譯程序以後如何使用和加工它。常用的中間語言形式有波蘭表示、三元組、四元組以及間接三元組等。
    分析部分源程序的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程序(又稱為掃描程序)完成,其任務是識別單詞(即標識符、常數、保留字,以及各種運算符、標點符號等)、造符號表和常數表,以及將源程序換碼為編譯程序易於分析和加工的內部形式。語法分析程序是編譯程序的核心部分,其主要任務是根據語言的語法規則,檢查源程序是否合乎語法。如不合乎語法,則輸出語法出錯信息;如合乎語法,則分解源程序的語法結構,構造中間語言形式的內部程序。語法分析的目的是掌握單詞是怎樣組成語句的,以及語句又是如何組成程序的。語義分析程序是進一步檢查合法程序結構的語義正確性,其目的是保證標識符和常數的正確使用,把必要的信息收集和保存到符號表或中間語言程序中,並進行相應的語義處理。

    ❼ 編譯器的工作分為哪幾個階段

    編譯器就是一個普通程序,沒什麼大不了的
    什麼是編譯器?

    編譯器是一個將高級語言翻譯為低級語言的程序。

    首先我們一定要意識到編譯器就是一個普通程序,沒什麼大不了的。

    在沒有弄明白編譯器如何工作之前你可以簡單的把編譯器當做一個黑盒子,其作用就是輸入一個文本文件輸出一個二進制文件。

    基本上編譯器經過了以下幾個階段,等等,這句話教科書上也有,但是我相信很多同學其實並沒有真正理解這幾個步驟到底在說些什麼,為了讓你徹底理解這幾個步驟,我們用一個簡單的例子來講解。

    假定我們有一段程序:

    while (y < z) {
    int x = a + b;
    y += x;
    }
    那麼編譯器是怎樣把這一段程序人類認識的程序轉換為CPU認識的二進制機器指令呢?

    提取出每一個單詞:詞法分析
    首先編譯器要把源代碼中的每個「單詞」提取出來,在編譯技術中「單詞」被稱為token。其實不只是每個單詞被稱為一個token,除去單詞之外的比如左括弧、右括弧、賦值操作符等都被稱為token。

    從源代碼中提取出token的過程就被稱為詞法分析,Lexical Analysis。

    經過一遍詞法分析,編譯器得到了以下token:

    T_While while
    T_LeftParen (
    T_Identifier y
    T_Less <
    T_Identifier z
    T_RightParen )
    T_OpenBrace {
    T_Int int
    T_Identifier x
    T_Assign =
    T_Identifier a
    T_Plus +
    T_Identifier b
    T_Semicolon ;
    T_Identifier y
    T_PlusAssign +=
    T_Identifier x
    T_Semicolon ;
    T_CloseBrace }
    就這樣一個磁碟中保存的字元串源代碼文件就轉換為了一個個的token。

    這些token想表達什麼意思:語法分析
    有了這些token之後編譯器就可以根據語言定義的語法恢復其原本的結構,怎麼恢復呢?

    原來,編譯器在掃描出各個token後根據規則將其用樹的形式表示出來,這顆樹就被稱為語法樹。

    語法樹是不是合理的:語義分析
    有了語法樹後我們還要檢查這棵樹是不是合法的,比如我們不能把一個整數和一個字元串相加、比較符左右兩邊的數據類型要相同,等等。

    這一步通過後就證明了程序合法,不會有編譯錯誤。

    ❽ 高級語言程序有兩種工作方式編譯方式和解釋方式

    具體如下。
    編譯型工作過程圖,編譯程序功能就是把高級語言書寫的源代碼譯成與之等價的目標程序(匯編語言或機器語言)。解釋型,解釋程序實現高級語言的三種方式解釋型在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行時直接執行源程序或源程序的內部形式,即解釋程序不產生源程序的目標程序,解釋程序通常可以分為兩部分:第一部分是分析部分,經語義分析後把源程序翻譯成中間代碼,中間代碼常用逆波蘭式表示。第二部分是解釋部分。
    高級語言(High-levelprogramminglanguage)是一種獨立於機器,面向過程或對象的語言。高級語言是參照數學語言而設計的近似於日常會話的語言。例如,要將2個變數相加並賦值給第三個變數,用高級語言表達為var3=var1+var2。

    熱點內容
    車內配置如何選 發布:2025-06-30 03:14:34 瀏覽:70
    緩存視頻合成軟體 發布:2025-06-30 03:10:53 瀏覽:1000
    科技周宣傳腳本 發布:2025-06-30 02:54:43 瀏覽:269
    c語言程序設計2答案 發布:2025-06-30 02:51:41 瀏覽:502
    資料庫函數和存儲過程 發布:2025-06-30 02:46:49 瀏覽:519
    c盤的存儲量是不是來源於硬碟 發布:2025-06-30 02:46:40 瀏覽:526
    安卓手機重力感應怎麼恢復 發布:2025-06-30 02:45:21 瀏覽:752
    安卓電腦觸摸屏怎麼用 發布:2025-06-30 02:38:02 瀏覽:882
    root用戶名和密碼是什麼 發布:2025-06-30 02:37:55 瀏覽:686
    perl還是python 發布:2025-06-30 02:37:20 瀏覽:234