C語言編譯器及其實例
C語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便于實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由于C語言實現了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統軟件的開發,也適合于應用軟件的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
直接插入排序(Straight Insertion Sort)的基本思想是將新記錄插入到已經排好序的有序表中,初始有序表只有無序表的第一個數據,依次對無序表每個數據進行直接插入排序,從而得到了有序表,具體步驟為
若新記錄小于有序表高位l.r[j],則設置哨兵
有序表后移,j+1=j
重復第2步,直至新紀錄》=有序表中的j記錄,則j+1就是要插入的位置
從而得到一個新的、記錄數增加1的有序表。
#include 《stdio.h》
typedef float keyType;
typedef struct{
keyType score;
char name[20];
}student;
typedef struct{
int length=6;
student stu[6];
}sqList;
void SIS(sqList &L){
for(int i=2;i《L.length;i++){
if(L.stu[i].score》L.stu[i-1].score){
L.stu[0]= L.stu[i]://設置哨兵
int j;
for(j=i-1;L.stu[0].score》L.stu[j].score;j--)
L.stu[j + 1]= L.stu[j];//記錄后移
L.stu[j+ 1]= L.stu[0]://找到位置,插入元素
}
}
}
int main(){
sqList L;
for(int i= 1;i《L.length;i+ +){
printf(“ 請輸入第%d個學生的姓名:”,i);
gets(L.stu[i].name);
printf(“分數:”);
sCanf(“%f”,&(L.stu[j].score);
getchar();
}
SIS(L);
for(int i= 1;i《L.length;i++){
printf(“ 學生%s 分數%f 第%d 名”,L.stu[j].name,Lstce);
}
語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中并沒有定義一個完整的標準C語言,后來由美國國家標準學會在此基礎上制定了一個C 語言標準,于一九八三年發表。通常稱之為ANSI C。早期的C語言主要是用于UNIX系統。由于C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,并很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。
目前最流行的C語言編譯器有以下幾種:·GNU Compiler Collection 或稱 GCC·Microsoft C 或稱 MS C·Borland Turbo C 或稱 Turbo C這些C語言版本不僅實現了ANSI C標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。
編譯器及其主要工作流程
編譯器,是將便于人編寫,閱讀,維護的高階計算機語言翻譯為計算機能解讀、運行的低階機器語言的程序。編譯器將原始程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源代碼一般為高階語言 (High-level language), 如 Pascal、C++、Java 等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
一個現代編譯器的主要工作流程如下:
源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 匯編程序 (assembler) → 目標代碼 (object code) → 連接器 (Linker) → 可執行程序 (executables)
將C語言源代碼編譯成計算機可直接運行的目標代碼或機器碼。說白了就是把更加貼近于人類語言的程序語言翻譯成更貼近計算機的機器語言。
實現了基本高級語言所必須的語法要素,包括簡單變量聲明、函數的實現、整數和字符串運算、條件判斷語句和循環語句及跳轉語句、基本代數運算、賦值等,還支持匯編語言嵌入。本編譯器是利用編譯器生成器Parse Generator和VC6.0在Windows平臺上實現的,并開發了一個基于Windows平臺的32位編譯集成開發環境CompilerMan,提供了關鍵字彩色提示、出錯同屏提示、出錯代碼跳轉等較為完善方便的功能。由于編譯程序本身涉及到詞法分析、語法分析、代碼生成、錯誤恢復和優化等諸多模塊,要在實驗中做到面面俱到不太可能,所以本編譯器不可避免的會存在各種問題,但作為一個具有基本功能的、可擴充的系統,完全達到鞏固編譯原理的理論知識,并將其運用。
編譯程序,就是一種具有編撰和翻譯功能的程序。人們要用計算機來解決問題,首先面臨的一個問題,就是要告訴計算機解決什么問題,或者告訴計算機如何解決這個問題。這就涉及到用什么樣的語言來描述的問題,人所習慣的自然語言和計算機認識的機器語言有很大的差別,用機器語言來描述人想解決的問題十分不便,因而,計算機科學家設計一些人們比較習慣的語言來描述要解決的問題,稱之為高級語言。
用語言來描述的問題,統稱為程序。然而,用高級語言寫的程序,不能被計算機所直接認識和理解,必須經過等價的轉換,變成機器能理解并執行的機器語言的程序。進行這種等價轉換工作的工具,就是編譯程序。
-
C語言
+關注
關注
180文章
7608瀏覽量
137178 -
編譯器
+關注
關注
1文章
1636瀏覽量
49179
發布評論請先 登錄
相關推薦
評論