C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的 *** 作系统等系统软件主要是用汇编语言编写的(包括 UNIX *** 作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行 *** 作),例如:对内存地址的 *** 作、位 *** 作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言。CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言。1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX *** 作系统,在PDP-7上实现。 1971年在PDP-11/20上实现了B语言,并写了UNIX *** 作系统。但B语言过于简单,功能有限。1972年至 1973年间,贝尔实验室的 DMRitchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)。C语言既保持了BCPL和B语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。 最初的C语言只是为描述和实现UNIX *** 作系统提供一种工作语言而设计的。1973年,KThom- pson和DMritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版。原来的 UNIX *** 作系统是1969年由美国的贝尔实验室的 KThompson和DMRitchie开发成功的,是用汇编语言写的)。
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用。直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意。1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX *** 作系统迅速地在各种机器上实现。例如,VAX,AT&T等计算机系统都相继开发了UNIX。随着 UNIX的日益广泛使用,C语言也迅速得到推广。C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。
以1978年发表的UNIX第7版中的C编译程序为基础,Brian WKernighan和 Dennis MRitchie(合称K&R)合著了影响深远了名著《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。K&R在1988年修改了他们的经典著作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书。1987年,ANSI C又公布了新标准--87 ANSI C 。目前流行的C编译系统都是以它为基础的。
1、编辑:编写代码,制作C语言的源文件。
2、编译:是由编译程序将C语言源文件转换成二进制中间文件,对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。
3、链接:将编译中生成的中间文件组合成二进制可执知行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。
4、执行:运行可执行文件,这一步道是编写代码的最终目的。
扩展资料:
DOS命令通常分为三类:内部命令、外部命令和批处理命令。
1、内部命令:
其包含在命令解释程序COMMAND.COM中,一旦启动DOS,这些命令就被调入内存,只要在DOS系统提示符下输入这些命令,就可立即执行。
2、外部命令:
其以文件的形式存储在系统盘上,所带扩展名为COM和EXE。DOS启动时,它们并没有被调入内存,执行前必须从系统盘读进内存。因此输入外部命令时,要了解该命令是否在当前盘上,不然DOS无法找到它们。
3、批处理命令:
实际上是个文件,该文件包含多条命令,当用户键入批处理文件名时,DOS将顺序执行其中的各条命令。注意,批处理命令必须用“.BAT”作为扩展名。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。
当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
参考资料:
百度百科-运行命令
百度百科-C语言
这是一段C语言代码实现上述功能的解答。
Copy code
#include <stdioh>
#define MAX 10 // 定义最大输入数量
int main(void) {
int n, i, sum = 0, cnt = 0;
int nums[MAX];
printf("请输入一个正整数序列:\n");
scanf("%d", &n);
if (n > MAX) {
printf("最多只能输入%d个数!\n", MAX);
return 1;
}
// 输入n个正整数
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
sum += nums[i];
}
// 统计能整除sum的元素的个数
for (i = 0; i < n; i++) {
if (sum % nums[i] == 0) {
cnt++;
}
}
// 输出结果
printf("序列全部元素之和为:%d\n", sum);
printf("能整除sum的元素的个数为:%d\n", cnt);
return 0;
}
简要解释如下:
使用宏定义 #define MAX 10 定义了最大输入数量,避免了定义大小不当造成的不必要问题。
程序先提示用户输入一个正整数序列,然后读入用户的输入 n。
如果输入超过了最大数量 MAX,程序将输出一个错误信息并退出。
然后使用循环读入 n 个正整数,同时计算它们的和,存储在 sum 变量中。
统计能整除 sum 的元素的个数。
最后输出序列的元素之和 sum 和能整除 sum 的元素的个数 cnt 的值。
此程序体现了C语言的基本输入输出以及逻辑控制、循环等语法结构。
通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。
预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理。①将所有的“#define”删除,并且展开所有的宏定义②处理所有的条件编译指令,如:“#if”“#ifdef”、“#elif”、“#else”、“endif”等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。③处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置。(注意:这个过程可能是递归进行的,也就是说被包含的文件可能还包含其他文件)。
我们在用c做开发的时候,有时候项目很大,所写的程序会很长。这样我们如果还是写在一个文件中,会出现管理上的问题和查看上的不方便,因此我们可以分多个文件写我们的程序,这样把一个功能的程序写到一个文件里,便于查看也便于管理。但是把他们合起来的时候。头文件会多次包含预编译,预编译的处理就可以用来防止头文件的重复包含和编译。
第二,使用宏定义可以提高程序的通用性和易读性,减少不一致性,减少输入错误便于修改。展开宏也是预编译处理中的一项功能。
还有条件编译处理也是预处理中的一项功能。
编译主要工作是检查一下你的源代码,看看它是否能够读懂,如果可以完全明白,就把你的源代码变成一种计算机更方便处理的文件,通常我们称为目标文件,常用后缀obj 或o,编译的工作就结束了。
链接程序的拿到目标文件后,进行装配工作。因为你设计的程序中,要不是调用自己设计的功能,要不调用系统提供的功能。链接就是把根据你程序说明的调用关系,找到相应的程序,把它们拼接起来,形成可以被 *** 作系统执行的文件,也就是可执行文件。
以上就是关于什么是c语言,有什么作用全部的内容,包括:什么是c语言,有什么作用、c语言中的编辑,编译,连接,运行分别是什么意思、c语言编译等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)