C语言的发展历程
C语言于20世纪70年代初问世。 C语言于1978年由AT&T贝尔实验室正式出版,同时BW和DM共同撰写了著名的《THE C》一书。 通常简称为“K&R”,也有人称之为“K&R”标准。 然而,“K&R”中并没有定义完整的标准C语言。 后来美国国家标准协会在此基础上制定了C语言标准,并于1983年发布。通常简称为ANSI C。
当代最好的编程语言
早期的C语言主要用于UNIX系统。 由于C语言强大的功能和各种优点,人们逐渐认识到,在20世纪80年代,C开始进入其他操作系统,很快在各种大、中、小型、微型计算机上得到广泛应用。 成为当代最好的编程语言之一。
C语言的特点
C语言是一种结构化语言。 它具有清晰的层次结构,便于以模块化的方式组织程序,并且易于调试和维护。 C语言的性能和处理能力极其强大。 它不仅具有丰富的运算符和数据类型,而且方便各种复杂数据结构的实现。 它还可以直接访问内存的物理地址并进行位级操作。 由于C语言实现了硬件的编程操作,因此C语言综合了高级语言和低级语言的功能。 既可用于系统软件的开发,也适用于应用软件的开发。 此外,C语言还具有效率高、可移植性强的特点。 因此,它被广泛移植到各种类型的计算机上,从而形成了C语言的各种版本。
C语言版本
最流行的C语言如下:
· C 或 MS C
· Turbo C 或 Turbo C
· 美国电话电报公司
这些C语言版本不仅实现了ANSI C标准,而且在此基础上做了一些扩展,使其更加方便和完善。
面向对象的编程语言
在C的基础上,C++由贝尔实验室的Strou-strup于1983年推出。C++进一步扩展和完善了C语言,成为一种面向对象的编程语言。 目前流行的C++最新版本是C++4.5、C++6.1和++2.0。 C++提出了一些更深入的概念,其支持的面向对象的概念可以轻松地将问题空间直接映射到程序空间,为程序员提供了与传统结构化编程不同的思维方式和编程方法。 这也增加了整个语言的复杂性,难以掌握。
C 和 C++
然而,C 是 C++ 的基础,C++ 和 C 在很多方面都是兼容的。 因此,掌握了C语言后,进一步学习C++,就可以学习语法熟悉的面向对象语言,从而达到事半功倍的效果。
C源程序的结构特点
为了说明C语言源程序的结构特点,首先看下面的程序。 这些程序由简单到困难,表现出C语言源程序的组成和结构的特点。 虽然相关内容还没有介绍,但是您可以从这些示例中了解构成C源程序的基本部分和编写格式。 主要的()
{
("C语言世界,你好!\n");
}
main是主函数的函数名,表明这是一个主函数。 每一个C源程序都必须有,并且只有一个主函数(main )。 函数调用语句,函数的作用是将要输出的内容发送到显示器上进行显示。 函数是系统定义的标准函数,可以在程序中直接调用。
#
#
主要的()
{
x,s;
(“输入:\n”);
scanf("%lf",&x);
s=sin(x);
("%lf 的正弦是 %lf\n",x,s);
}
每行评论
称为包含命令的文件 扩展名为 .h 的文件也称为头文件或头文件
定义两个实数变量供后续程序使用
显示提示
从键盘获取实数 x
求 x 的正弦值并将其赋给变量 s
显示程序运行结果
主函数结束
程序的功能是从键盘输入一个数字x,求x的正弦值,然后输出结果。 main() 之前的两行称为预处理命令(详细信息见下文)。 还有其他种类的预处理命令,这里称为文件包含命令,意思是将尖括号“”或引号中指定的文件包含到这个程序中,成为这个程序的一部分。 包含文件通常由系统提供,扩展名为.h。 因此,也称为头文件或头文件。 C语言的头文件包含了各个标准库函数的函数原型。 因此,每当程序中调用库函数时,都必须包含函数原型所在的头文件。 在这个例子中,使用了三个库函数:输入函数scanf、正弦函数sin和输出函数。 sin函数是一个数学函数,它的头文件是math.h文件,因此该命令在程序主函数之前包含math.h。 scanf是一个标准输入输出函数,它的头文件是stdio.h,stdio.h文件也包含在main函数之前的命令中。
需要注意的是,C语言规定scanf和这两个函数可以省略其头文件的命令。 所以在这个例子中,你也可以删除第二行的命令#。 同样,在例 1.1 中,使用函数时,也省略了 命令。
示例中main函数的主体分为两部分,一部分是描述部分,另一部分是执行部分。 描述是指变量的类型描述。 示例中没有使用变量,因此没有解释部分。 C语言规定,源程序中使用的所有变量必须先声明,然后使用,否则会出现错误。 这是编译型高级编程语言的一个特性,与解释型 BASIC 语言不同。 描述部分是C源程序结构中非常重要的部分。 在本例中,使用两个变量x和s来表示输入自变量和sin函数的值。 由于sin函数要求这两个量必须是双精度浮点类型,因此使用类型说明符来描述这两个变量。 描述部分之后的四行是执行部分或执行语句部分,用于完成程序的功能。 执行部分第一行是输出语句,调用函数在显示屏上输出提示字符串,要求操作者输入自变量x的值。 第二行是输入语句,调用scanf函数,接受键盘输入的数字,并将其存储在变量x中。 第三行是调用sin函数并将函数值发送给变量s。 第四行是用函数输出变量s的值,即x的正弦值。 节目结束。
(“输入:\n”);
scanf("%lf",'&x);
s=sin(x);
("%lf 的正弦是 %lf\n",',s);
运行该程序时,首先在显示屏上给出提示字符串输入,由执行部分的第一行完成。 用户根据提示从键盘输入某个数字,例如5,按下回车键,然后在屏幕上给出计算结果。
输入输出功能
前两个例子中使用了输入输出函数 scanf 和 scanf ,我们将在第 3 章详细介绍它们。这里简单介绍一下它们的格式,以供后续使用。 scanf 这两个函数分别称为格式输入函数和格式输出函数。 其含义是按照指定的格式输入和输出值。 因此,这两个函数括号内的参数表由以下两部分组成:“格式控制字符串”,参数表格式控制字符串是必须用双引号括起来的字符串,它代表数据输入和输出类型。 各种类型的格式表示法可以在第3章中找到。在函数中,格式控制字符串中也可以出现非格式控制字符,此时显示屏上将打印出原始文本。 输入或输出量在参数表中给出。 当有多个数量时,用逗号分隔。 例如:
("%lf 的正弦是 %lf\n",x,s);
其中%lf是格式字符,表示作为双精度浮点数处理。 在格式字符串中出现两次,分别对应两个变量x和s。其余字符为非格式字符,原样输出在屏幕上
int max(int a,int b);
主要的(){
整数x、y、z;
("输入两个:\n");scanf("%d%d",&x,&y);
z=max(x,y);
(“=%d”,z);
}
int max(int a,int b){
如果(a>b)a; 否则 b;
}
该函数的作用是输入两个整数,输出其中较大的数。
上例中程序的功能是用户输入两个整数,程序执行后输出较大的数。 该程序由两个函数组成,main函数和max函数。 功能之间存在平行关系。 可以从主函数中调用其他函数。 max函数的作用是比较两个数,然后将较大的数返回给主函数。 max 函数是用户定义的函数。 因此,应该在main函数(程序的第三行)中给出解释。 可见,在程序的描述部分,不仅可以有变量描述,还可以有函数描述。 关于函数的详细内容将在第五章介绍。程序每行后面的括起来的内容是注释部分,程序不执行注释部分。
上例程序的执行过程是,首先在屏幕上显示提示字符串,要求用户输入两个数字,回车后,scanf函数语句会接收这两个数字,并将其发送给变量x ,y,然后调用max函数,并将x,y的值传递给max函数的参数a,b。 max函数中比较a和b的大小,将较大的返回给主函数的变量z,最后在屏幕上输出z的值。
C源程序的结构特点
1、AC语言源程序可以由一个或多个源文件组成。
2. 每个源文件可以包含一个或多个函数。
3、一个源程序无论由多少个文件组成,它都有且只有一个主函数,即main函数。
4、源程序中可以有预处理命令(该命令只是其中之一),预处理命令通常应放在源文件或源程序的前面。
5.每一个语句,每一个语句都必须以分号结束。 但预处理命令、函数头和大括号“}”后不能添加分号。
6. 标识符和关键字必须至少用一个空格分隔。 如果有明显的间隔符,也可以不加空格来分隔。
编写程序时应遵循的规则
从书写清晰、易于阅读、理解和维护的角度出发,编写程序时应遵循以下规则:
1、一条语句或一条语句占一行。
2、用{}括起来的部分通常代表程序的某种层次结构。 {}一般与结构语句的第一个字母对齐,并单独占据一行。
3. 下级的陈述或解释可以比上级的陈述或解释缩进一定数量的空格。 为了看起来更清晰,增加程序的可读性。 编程时,应该努力遵循这些规则,养成良好的编程风格。
C语言字符集
字符是构成语言的最基本元素。 C语言字符集由字母、数字、空格、标点符号和特殊字符组成。 字符常量、字符串常量和注释中也可以使用汉字或其他可表示的图形符号。
1、小写字母a~z有26个,大写字母A~Z有26个
2. 0到9有10个数字
3、空白字符 空白字符、制表符、换行符等统称为空白字符。 空格仅适用于字符常量和字符串常量。 当它们出现在其他地方时,它们仅用作间隔,并且会被编译器忽略。 因此,程序中是否使用空格不会影响程序的编译,但在程序中适当的地方使用空格会增加程序的清晰度和可读性。
4. 标点符号和特殊字符
C语言词汇
C语言中使用的词汇分为六类:标识符、关键字、运算符、分隔符、常量、注释等。
1. 标识符
程序中使用的变量名、函数名和标签统称为标识符。 库函数除函数名由系统定义外,其余均由用户定义。 C规定标识符只能是字母(A~Z、a~z)、数字(0~9)和下划线()组成的字符串,且其第一个字符必须是字母或下划线。
以下标识符是合法的:
a,x,3x,书 1,sum5
以下标识符是非法的:
3s以数字开头
s*T 出现非法字符*
-3x 以减号开头
Bowy-1 非法字符 -(减号)
使用标识符时还必须记住以下几点:
(1)标准C并没有限制标识符的长度,但是受到各个版本的C语言编译系统的限制,同时也受到特定机器的限制。 例如,在某个版本C中,规定标识符的前八位有效,当两个标识符的前八位相同时,则认为是同一个标识符。
(2) 标识符中区分大小写。 例如,BOOK 和 book 是两个不同的标识符。
(3)虽然标识符可以由程序员自由定义,但标识符是用来标识一定数量的符号。 因此,命名应尽量具有相应的含义,以利于阅读理解,做到“顾名思义”。
2、关键词
关键字是C语言规定的具有特定含义的字符串,通常也称为保留字。 用户定义的标识符不应与关键字相同。 C语言的关键字分为以下几类:
(1) 类型说明符
用于定义和描述变量、函数或其他数据结构的类型。例如前面示例中使用的 int 等。
(2) 语句定义器
用于表示语句的功能。 例如,例1.3中使用的if else就是条件语句的语句定义器。
(3) 预处理命令字
用于表示预处理命令。 如前面的示例中所使用的。
3. 运营商
C语言包含相当多的运算符。 运算符、变量和函数共同构成表达式,代表各种算术函数。 运算符由一个或多个字符组成。
4. 分离器
C语言中使用的分隔符是逗号和空格。 逗号主要用在类型声明和函数参数列表中来分隔变量。 空格通常用作句子中单词之间的间隔符。 关键字和标识符之间必须有多个空格,否则会出现语法错误,比如写成int a; 作为 inta; C编译器会将inta视为标识符,结果必然是错误的。
5. 常量
C语言中使用的常量可以分为数值常量、字符常量、字符串常量、符号常量、转义字符等,在第二章中将会专门介绍。
6. 注意事项
C语言中的注释是以“”结尾的字符串。 “”之间是注释。 程序编译时不处理注释。 注释可以出现在程序中的任何位置。 注释用于向用户提示或解释程序的含义。 在调试程序中,暂时不用的语句也可以用注释字符括起来,这样就跳过翻译不进行处理,调试完成后将注释字符去掉。