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文章
7601浏览量
136266 -
编译器
+关注
关注
1文章
1618浏览量
49060
发布评论请先 登录
相关推荐
评论