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

ARM優(yōu)化C/C++編譯器 v20.2.0.LTS

音頻子系統(tǒng)主要是用來(lái)做什么的,可以用來(lái)做PCM編碼器嗎?
TMS320C6000優(yōu)化C/C++編譯器v8.3.x

C7000優(yōu)化C/C++編譯器

評(píng)論