C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。

目录 [隐藏]

1 基本应用

2 发展历史

3 优点概述

4 缺点简介

5 结构特点

6 学习方法

7 顺序结构

8 分支结构

9 循环结构

10 模块化程序结构

11 C源程序的关键字

12 C语言的新标准——C99

13 相关词条

14 参考资料

c语言-基本应用

c语言

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。

常用的C语言IDE(集成开发环境)有Microsoft Visual C ,Borland C ,Watcom C ,Borland C Builder,Borland C 3.1 for DOS,Watcom C 11.0 for DOS,GNU DJGPP C ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C。

c语言-发展历史

C语言程序设计

C语言的原型ALGOL 60语言。(也称为A语言)

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。

而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。即是著名的ANSI C。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《C语言程序》(The C Programming Language),从而使C语言成为当时世界上流行最广泛的高级程序设计语言。

1988年,随着微型计算机的日益普及, C语言出现了许多版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

c语言-优点概述

c语言

1、简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2、运算符丰富

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3、数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

4、C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5、 C语法限制不太严格,程序设计自由度大

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

6、C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。

7、 C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10~20%。

8、C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。

c语言-缺点简介

c语言

1、C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C 的一大区别。

2.、C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

指针就是C语言的一大特色,可以说C语言优于其它高级语言的一个重要原因就是因为它有指针操作可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。C 在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java取消了指针操作,提高了安全性。

c语言-结构特点

c语言

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4、源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

c语言-学习方法

c语言

在初学C语言时,可能会遇到有些问题理解不透,或者表达式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面感觉是同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃。

学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。

学好C语言的运算符和运算顺序:这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。

在学习中,只要对此合理进行分类,找出它们与在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。 先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序.

c语言-顺序结构

c语言

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

例如;a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

c语言-分支结构

c语言

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。

①if(条件) { 分支体 } ;

这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,当x>=0时,其绝对值不变,而x<0时,其值是它的相反数。

if(x<0)

x=-x

②if(条件)

then {分支1}

else

{分支2}

这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2 bx c=0的根

分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)

d=b^2-4ac

{x1=(-b sqrt(d))/2a;

x2=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);

}

else

{r=-b/(2*a);

i=sqrt(-d)/(2*a);

printf(“x1=%8.4f %8.4fi\n”r,i);

printf(“x2=%8.4f-%8.4fi\n”r,i)

}

③嵌套分支语句:其语句格式为:

if(条件1) {分支1};

else if(条件2) {分支2}

else if(条件3) {分支3}

……

else if(条件n) {分支n}

else {分支n 1}

嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。

④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支…的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。

c语言-循环结构

c语言

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。

c语言-模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,

C语言程序设计 谭浩强每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数 子函数。 因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

掌握一些简单的算法:编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据的《C程序设计》教学大纲中,只要求掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求要清楚这些算法的内在含义。

c语言-C源程序的关键字

所谓关键字就是已被C语言本身使用, 不能作其它用途使用的字。例如关键字不能用作变量名、函数名等。

由ANSI标准定义的C语言关键字共32个 : auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static

根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。

数据类型关键字

A基本数据类型(5个)

void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。

char :字符型类型数据,属于整型数据的一种。

int :整型数据,通常为编译器指定的机器字长。

float :单精度浮点型数据,属于浮点数据的一种。

double :双精度浮点型数据,属于浮点数据的一种。

B 类型修饰关键字(4个)

short :修饰int,短整型数据,可省略被修饰的int。

long :修饰int,长整形数据,可省略被修饰的int。

signed :修饰整型数据,有符号数据类型。

unsigned :修饰整型数据,无符号数据类型。

C 复杂类型关键字(5个)

struct :结构体声明。

union :共用体声明。

enum :枚举声明。

typedef :声明类型别名。

sizeof :得到特定类型或特定类型变量的大小。

D 存储级别关键字(6个)

auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配。

static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。

register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。

extern :指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。

volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。

流程控制关键字

A 跳转结构(4个)

return :用在函数体中,返回特定值(或者是void值,即不返回值)。

continue :结束当前循环,开始下一轮循环。

break :跳出当前循环或switch结构。

goto :无条件跳转语句。

B 分支结构(5个)

if :条件语句。

else :条件语句否定分支(与if连用)。

switch :开关语句(多重分支语句)。

case :开关语句中的分支标记。

default :开关语句中的“其他”分治,可选。

C 循环结构(3个)

for :for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。

do :do循环结构,do 1 while(2); 的执行顺序是 1->2->1...循环,2为循环条件。

while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件。

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

c语言-C语言的新标准——C99

在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C 继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。

C99中包括的特性

1. 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节 (extern 要求支持到 31)。

2. 预处理增强了。

c语言-相关词条

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

c语言适用于大型的 复杂的软件系统开发,c语言是什么相关推荐

  1. c语言 逗号表达式,c语言逗号表达式的运算规则_后端开发

    c语言程序的调试方法_后端开发 c语言程序的调试方法:1.先进行人工检查,即静态检查:2.在人工检查无误后,再上机调试:3.改正语法错误得到可执行目标程序,运行程序,看结果是否符合预期:4.不符合预期 ...

  2. c语言中的字符串结束标志,c语言字符串结束标志是什么_后端开发

    c语言如何求余数_后端开发 在C语言中可以直接使用双目运算符"%"求余数,其语法是"a%b",其中两个参数"a.b"必须为整形,不能为浮点型 ...

  3. Go语言适用于Web开发吗

    最近在学习使用Go开发web应用,也了解了Go的一些web框架.我不禁思考,Go语言适用于web开发吗?如果是,它有什么优势呢?阅读了一些资料后,我想谈谈我粗浅的看法--Go语言适用于web开发. 一 ...

  4. 适合人工智能AI的编程语言有哪些 哪些语言适用于人工智能 人工智能开发语言排行榜

    人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言 人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言_cxq8989的博客-CSDN博客 最适合人工智能开发的六种编程语言 最适合人工 ...

  5. 哪些语言适用于人工智能 选哪个开发语言更好

    哪些语言适用于人工智能?选哪个开发语言更好?在推动人工智能产业从兴起进入快速发展的历程中,AI顶级人才的领军作用尤为重要.上至国家,下至科技巨头,无不将AI视为提升自身的核心竞争力的根本性战略.那么你 ...

  6. SCL语言适用于哪些场景?

    SCL语言适用于以下场景: 1. 控制逻辑较为复杂的自动化控制系统:SCL语言能够处理更复杂的逻辑关系和算法,因此适用于控制逻辑较为复杂的自动化控制系统. 2. 工业自动化领域:SCL语言广泛应用于工 ...

  7. 2d游戏地图编辑器_C语言实现大型2D格斗游戏,1.8万行代码!

    这个游戏是从1月初开始写的,现在已经完成了基本的对战功能,共5个角色,可以单人和AI对战,效果如下图所示: 人物动作素材由本人捕捉自FC版游戏<热血格斗>,玩法.游戏效果与<热血格斗 ...

  8. 角色扮演类大型网络游戏C++后台和纯C语言后台的差异

    因为一些原因,我从一个用c++做后台程序的工作室转到了用纯C语言作为游戏后台的工作室, 而这两套后台程序都可以号称目前中国在角色扮演类游戏中成熟的后台架构..c++的架构我已经基本已经很清晰了,因为看 ...

  9. python是一种语言还是一个软件-自动化专业想学一门语言 是学Python 还是Java ?...

    1.java语言排行榜 TIOBE发布了2019年5月份编程语言排行榜,以下是网站译文,(翻译的可能有点鬼畜,凑活看吧)5月标题:统计语言R不属于TIOBE指数前20名 在进入前20名大约3年后,统计 ...

最新文章

  1. openssl之EVP系列之2---对称加密算法概述
  2. 新员工安全生产知识学习读本
  3. 熟悉sublime text3
  4. PHP的mysqli操作DB
  5. python中的dict是什么数据类型_Python数据类型之字典(dict)
  6. mrtg监控短信报警 linux,[原]使用MRTG画图进行监控
  7. 数字图像处理笔记——Snakes算法、活动轮廓以及水平集(Snakes, active contours, and level sets)
  8. Appium iOS 自动化测试总结
  9. MYSQL--数据库约束
  10. linux系统ss命令详解,linux 下 ss命令详解
  11. 组合数 Counting Arrays
  12. 1.2. Container Overview
  13. python飞机游戏视频教程_10分钟教你用Python做个打飞机小游戏超详细教程
  14. CSS3实现图片的3D旋转效果
  15. Angular中nz-select实现两个选择框互相关联
  16. Javascript在线美化,格式化,js美化
  17. 一般可行性研究报告的主要内容和要求
  18. 《深入理解JAVA虚拟机》学习笔记(二)
  19. CSS prefers-color-scheme 与 matchMedia() 深浅色模式
  20. 带滤镜拍照的app_iPhone摄影师必备的几款滤镜APP

热门文章

  1. docker里面pytorch关于gloo地址声明
  2. 如何制作一个可以自动更新的Github个人主页
  3. access端口、trunk端口和hybird端口
  4. 安卓访客模式_如何设置Android访客模式以及为什么要这么做 | MOS86
  5. 访客管理系统 - 天天访客
  6. nginx动态黑名单配置2
  7. 软件腐化的七个特征之牢固性和粘滞性(设计模式原则的反面) (《敏捷软件开发》读书总结第二篇)
  8. 简单获取unix时间戳
  9. UESTC - 1057 秋实大哥与花 线段树
  10. 整理 刘汝佳紫书第三章习题代码 未完待续