目录
一.C语言概述
70年代初,由美国贝尔实验室的Thompson和D.M.Ritchie合作开发的UNIX操作系统和C语言诞生 了。像一对孪生姐妹,她们以自己崭新的面貌一开始就引起了人们的广泛注意。后来又经过不断改进和实践的考验,这对姐妹已迅速成长和成熟,显示出了强大的生命力,被公认为最优秀的操作系统和计算机语言之一,近30年来,C语言帮助了UNIX的成功,UNIX的发展又推动了C语言的普及和发展。C语言应用非常广泛,我们熟知的Windows操作系统基本上是用C语言编写的,办公处理常用的Word,Excel也基本上是用C语言编写的。
1977年出现了不依赖于具体机器的C语言编译文本“可移植C语言编译程序”,使C语言移植到其他机器的工作大大简化。
1983年,美国国家标准化协会(ANSI)根据C语言各种版本对C的发展和扩充,制定了新的标准ANSI C,比标准C有了很大的发展。
1988年,K & R按照ANSI C修改了他们的《The C Programming Language》。
1987年,ANSI公布了新标准-87ANSIC。
1990年,国际标准化组织接受了87 ANSI C为ISO C的标准(ISO9899-1990)。
1994年,ISO又修订了C语言标准。
1990年,ISO发布了最新的C语言规范,被称为C99,是目前C语言标准的最高版本。
目前流行的C语言编译系统大多是以ANSI C为基础进行开发的从而使C发展成一种独立于UNIX、独立于具体计算机类型的计算机语言。之后,C语言先后移植到大、中、小、微型计算机上,已独立与UNIX和PDP,风靡世界,成为了当今世界上最为流行、广大程序设计者最为喜爱的计算机语言之一。
说明:不同版本的C编译系统所实现的语言功能和语法规则又略有差别,因此读者应了解所用的C语言编译系统的特点(可以参阅有关手册),本书的叙述基本上以ANSI C为基础。
二.C语言的特点
1.C语言是一种结构化语言
2.C语言语句简洁、紧凑,使用方便、灵活
只有37个关键字,分为以下四大类。
(1)数据类型关键字12个;
(2)控制语句关键字12个;
(3)存储类型关键字4个;
(4)其他关键字9个。
9种控制语句。
数据构造能力强。
运算符丰富。共有34种运算符,可以实现其他高级语言难以实现的一些运算。
程序书写格式自由。
3.C语言程序易于移植
用C语言编写的程序可以从一种环境不加或稍加改动就能搬到另一种环境种运行。
4.C语言有强大的处理能力
5.C语言是一种中级语言,生成的目标代码质量高,运行效率高
它既具有高级语言的通用性及易写易读的特点,又具有汇编语言(低级语言)的“位处理”,“地址操作”等能力。C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
6.数据类型检查不严格,表达式易出现二义性,不具备数据越界自动检查功能,位运算符的优先级与结合性对初学者难于掌握。
7.C语言种大小写字母代表不同含义
尽管C语言有很多优点,但也存在一些缺点和不足,比如它的类型检验弱,转换比较随便:优先级太多,不便记忆等,这些都对程序设计者提出了更高的要求,也给初学者增加的难度。
说明:
c语言可以对硬件直接操作,体现在位运算上
c语言数据类型检查不严格:1.整型和字符型在一定范围内可以通用。2.对数组下标越界不报错。
三.C语言程序结构
c语言的结构和特性
//文件包含,预处理指令
#include<stdio.h>
//程序从函数main开始执行 (单行注释)
void main() //主函数
{
//下方是多行注释
/*在屏幕上输出引号内内容*/
printf("I am a programmer,I like C");
}
程序说明:main表示主函数,int函数类型,每个程序必须有且只能有一个main函数,函数体(功能语句)放在{}内。
第一行有特殊意义,它说明程序中用到C语言系统提供的标准功能,所以,一般使用标准库函数时应在程序开头一行写:#include<stdio.h>
printf是C啊语言的输出函数(第三章),它的作用是将双引号内中的内容原样输出,其中“\n”是换行符。即在输出“I am a programmer,I like C”后回车换行。
语句最后有一分号,表示语句结束。
以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。注释可以加在程序中的任何位置。
例题:求两个数的和
#include<stdio.h>
int main()
{
//定义变量
int a,b,sum;
//赋值语句
a = 123;
b = 456;
sum = a + b;
//输出函数调用语句
printf("sum=%d\n",sum);
}
说明:本程序的作用是求两个整数a和b之和sum。先定义变量,后赋值,使a和b的值分别为123和456,sum的值为a+b,其中输出“%d”是输入输出的“格式字符串”,表示“十进制整数类型”。在执行输出是,此位置上代一个十进制整数值,printf函数中括弧内最右侧sum是要输出的变量,它的值为579。
例题:求2个数中较大数
#include<stdio.h>
int main()
{
//函数声明语句
int max(int x, int y);
int a,b,c;
//输入语句
scanf("%d,%d",&a,&b);
//函数调用语句
c = max(a,b);
printf("max=%d\n",c);
}
//函数类型 函数名(形参类型 形参名)
int max(int x,int y)
//函数体
{
int z;
if(x > y)
{
z = x;
}else{
z = y;
}
return z;
}
说明:本程序包括两个函数:主函数main和被调用的max,max函数的作用是将x和y中较大值的赋给变量z。return语句将z的值返回给主调函数main。返回值是通过函数名max带回到main函数的调用处。
main函数调用max函数,再调用时将实际参数a和b的值分别传送给max函数总的形式参数x和y。经过max函数得到一个返回值(即max函数中变量z的值),把这个值赋给变量c。然后输出c的值。
C语言由以下部分构成:
1.文件包含部分
2.变量说明部分
3.函数原型声明部分
4.主函数部分
5.自定义函数部分
知识点
1.一个c程序可以由一个或多个源文件(.c)构成,一个源文件是一个编译单位;
2.C程序是由函数构成的(即c程序的基本构成单位是函数),一个C程序可以有多个函数,但必须有且只能有一个主函数即main函数。
3.一个函数由两部分构成:函数首部和函数体。
4,一个c程序总是从main函数开始执行的,结束于主函数,而与主函数的位置无关。
5.主函数能调用用户函数或系统函数,用户函数可以调用彼此但是不能调用主函数。
6.注释。注释不被编译执行,注释不能嵌套。
7.语句以分号结尾,一行可以写多条语句,一条语句可以写多行。
8.区分大小写。
9.不是每一个C语言程序都包含上面的五个部分,最简单的C语言程序可以只有文件包含和主函数部分。
四.C程序的运行
1.C语言程序要通过编译、链接后生成可加载模块(执行文件),才能在计算机上运行。
2.完整的程序生成过程如下:
3.程序开发的具体步骤如下:
(1)编译源程序,将C语言源程序用一个后缀为.c的文件保存,如:myfile.c
(2)编译。检查源程序中的语法错误,生成目标代码文件。如:myfile.obj
(3)链接。将多个目标程序(包含c语言函数库)链接到一个程序中,生成可执行文件。如:myfile.exe
(4)第四步:运行可执行文件,检验程序的正确性。
注意:编译通过程序不一定是正确的,编译只是检查有没有语法错误,逻辑错误不会检查,比如你要做加法,程序是减法也不会报错。