第一章 C语言概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
(1)
1970年美国AT&T公司贝尔实验室的肯.汤普森(Ken Thompson)为实现UNIX操作系统而提出一种仅供自己 使用的工作语言。 由于该工作语言的前身是英国剑桥大学的马丁· 理 查德(Martin Richards)在1967年开发的BCPL(Basic Combined Programming Language)语言,因而被作者 命名为B语言,B取自BCPL的第一个字母。使用B语言 在美国DEC公司的PDP-7计算机上编写了第一个UNIX操 作系统。 此后,在美国贝尔实验室进行的更新型小型机PDP11的UNIX操作系统的开发中,戴尼斯.M.利奇(Dennis M.Ritchie)和布朗.W.卡尼汉(Brian W.Kernighan)又 在B语言的基础上系统地引入了各种数据类型,
程序说明: 程序说明:
一对/* */表明内部为注释 不生成目标代码。 表明内部为注释, 一对/* */表明内部为注释,不生成目标代码。 定义变量名字和类型,程序运行时将在内存中开辟4块存储区, 定义变量名字和类型,程序运行时将在内存中开辟4块存储区,这 几块存储区使用变量名表示位置, 几块存储区使用变量名表示位置,变量类型表示占内存空间大小
数据类型
§1.2 C语言的基本程序结构
【例1.1】简单输出程序 1.1】 #include <stdio.h> main() { Language.\ printf("The C Programming Language.\n"); } 程序运行结果是在屏幕上显示下列一行信息: 程序运行结果是在屏幕上显示下列一行信息: The C Programming Language.
§1.1.2 C语言的特点
程序表述简洁、紧凑、生成目标代码效率高 兼有高级和低级语言的特点(中级语言), 适于编写系 统软件和应用软件 是一种结构化程序设计语言 C语言程序是由函数集合构成 数据结构丰富、运算符及其表达式种类多 基本数据类型(整型, 实型, 字符型) 构造数据类型(数组, 指针,结构体等) 逻辑表达式等 C语言具有预编译功能,使用它可提高软件的开发效率 C语言可移植性好 44种运算符:算术表达式,赋值表达式,关系表达式,
【例1.2】计算三个数之和 1.2】 #include <stdio.h> main() { int x,y,z; /*定义整型变量x,y,z*/ /*定义整型变量x,y,z*/ 定义整型变量 /*定义实型变量 定义实型变量sum*/ float sum; /*定义实型变量sum*/ /*提示输入三个数据 提示输入三个数据* printf("input x,y,z:"); /*提示输入三个数据*/ /*输入三个数 输入三个数* scanf("%d%d%d",&x,&y,&z); /*输入三个数*/ /*使用表达式语句计算和 使用表达式语句计算和* sum=x+y+z; /*使用表达式语句计算和*/ printf("\nsum=%f\n",sum);/*屏幕上显示计算结果*/ printf("\nsum=%f\n",sum);/*屏幕上显示计算结果* /*屏幕上显示计算结果 } 程序运行结果是在屏幕上显示: 程序运行结果是在屏幕上显示: input x,y,z: 输入三个数据后回车,显示结果为: 输入三个数据后回车,显示结果为: sum=xx.xxx
第一章 C语言概述
§1.1 C语言的发展与特点
随着电子计算机的迅速发展和广泛应用,C程序设计 语言已成为目前世界上最广泛使用的高级程序设计语言之 一。它在系统软件(操作系统、语言处理、系统实用程 序)、数据处理、科学计算等多个领域的软件开发中起着 越来越重要的作用。 §1.1.1 C语言的发展 C语言产生的背景:需要一种计算机语言,使它既具有高 级语言的特点,又有汇编语言的优点; 使它既能用来编写系统软件,又可用 来开发应用软件。
4、一行内可同时写一个或几个语句,语句必须用分号(;)结束。 一行内可同时写一个或几个语句,语句必须用分号(;)结束。 (;)结束 语言中没有输入输出语句, 5、C语言中没有输入输出语句,数据的输入输出由调用库函数 (scanf, printf)完成。 printf)完成。 6、注释放在 /*……*/ 中,注释不允许嵌套。 /* */ 注释不允许嵌套。 7、注意在编程过程中要形成良好的编程风格。 注意在编程过程中要形成良好的编程风格。 【例1.4】例1.3源程序被分别编辑在两个文件中。 1.4】 1.3源程序被分别编辑在两个文件中。 源程序被分别编辑在两个文件中 文件名为file1.c的第一个文件内容如下: 文件名为file1 的第一个文件内容如下: file /*找出三个数中的最大值*/ /*找出三个数中的最大值* 找出三个数中的最大值 main() /*主函数*/ /*主函数* 主函数 {int a,b,c,maxi; a,b,c,maxi; /*变量说明*/ /*变量说明* 变量说明 printf("please to input a,b,c:"); a,b,c:"); scanf("%d%d%d",&a,&b,&c); scanf("% d",&a,&b,&c); /*输入变量a、b、c的值*/ /*输入变量a 的值* 输入变量 maxi=max(a,b,c);/*调用max函数,将得到的最大值赋给maxi*/ maxi=max(a,b,c);/*调用max函数,将得到的最大值赋给maxi*/ 调用max函数 printf("\nmaximum is %d",maxi); printf("\ d",maxi); /*输出最大值maxi*/ /*输出最大值maxi*/ 输出最大值 }
现将C程序基本结构说明如下: 现将C程序基本结构说明如下: (1) C程序的组成 (2) 函数的组成 一般函数的结构如下: 一般函数的结构如下: 数据类型标识符] 函数名> 形式参数表) [数据类型标识符] <函数名>(形式参数表) { 局部变量说明部分] [局部变量说明部分] 语句部分] [语句部分] } (3) C库函数 (4) 外部说明 C程序书写格式说明如下: 程序书写格式说明如下: 程序习惯使用小写英文字母书写, (1) C 程序习惯使用小写英文字母书写 , 大写英文字母一般用作 符号常量名和其它特殊用途。 符号常量名和其它特殊用途。
பைடு நூலகம்
(2) C 程序每个语句可从任意列开始 , 不存在程序行的概念 。 一行中可以有多个语句,一个语句也可以占用多行。但是, 一行中可以有多个语句,一个语句也可以占用多行。但是,为了 使程序结构层次清楚,应当以锯齿形格式书写程序, 使程序结构层次清楚,应当以锯齿形格式书写程序,使处于同一 结构层次的语句从同一列开始, 结构层次的语句从同一列开始,从而形成层层缩进对齐的书写格 式。 标识符的命名应当“见其名知其意” (3) 标识符的命名应当“见其名知其意”。 为了增强C程序的可读性,可以使用适量的空格和空行, (4) 为了增强C程序的可读性,可以使用适量的空格和空行,但变 量名、函数名以及C语言的关键字( for,switch等 量名、 函数名以及 C语言的关键字( 如for , switch等 ) 中间不 能加入空格。除此之外的空格和空行可以任意设置, 能加入空格。除此之外的空格和空行可以任意设置,C语言编译 系统不理会这些空格和空行。 系统不理会这些空格和空行。 为了帮助读者了解函数、程序块或某几个语句的功能, (5) 为了帮助读者了解函数 、 程序块或某几个语句的功能 , 可以适 当的使用注释。 当的使用注释。 P8
scanf是C函数库中的标准输入函数。"%d%d%d"是格式串,表明输 scanf是 函数库中的标准输入函数。"%d%d%d"是格式串, 是格式串 入的是十进制整数。输入的数据存放到&x,&y,&z表示的x,y,z &x,&y,&z表示的x,y,z所 入的是十进制整数。输入的数据存放到&x,&y,&z表示的x,y,z所 对应的存储单元。 对应的存储单元。 sum=x+y+z是赋值语句。=是赋值运算符,表示将算术表达式 sum=x+y+z是赋值语句。 是赋值运算符, 是赋值语句 x+y+z的值赋给 的值赋给sum. x+y+z的值赋给sum. 1.3】 【例1.3】求三个数中的最大值 main() { /*变量maxi用来存放得到的最大值 变量maxi用来存放得到的最大值* int a,b,c,maxi; /*变量maxi用来存放得到的最大值*/ printf("please to input a,b, c:"); /*输入时使用空格隔开三个数 输入时使用空格隔开三个数* scanf("%d%d%d",&a,&b,&c); /*输入时使用空格隔开三个数*/ /*函数调用可以当作表达式的运算对象 函数调用可以当作表达式的运算对象* maxi=max(a,b,c); /*函数调用可以当作表达式的运算对象*/ printf("\ printf("\nmaxnum is %d",maxi); }
文件名为file2.c的第二个文件内容如下: 文件名为file2 的第二个文件内容如下: file /*在三个数中找最大值的函数 在三个数中找最大值的函数* int max(int x,int y,int z) /*在三个数中找最大值的函数*/ {int m; if (x>y) m=x; m=x; else m=y; m=y; if (m<z) m=z; m=z; return(m); /*将最大值 通过max函数返回调用处* 将最大值m max函数返回调用处 return(m); /*将最大值m通过max函数返回调用处*/ } 这实际上是把上例C程序中的两个函数分别放在了file1.c 这实际上是把上例C程序中的两个函数分别放在了file1 file file2 两个源文件中,每个源文件是一个编译单位, 和file2.c两个源文件中,每个源文件是一个编译单位,编译时 应分别进行。 应分别进行。 环境下进行多文件编译、连接的操作过程见P Turbo C环境下进行多文件编译、连接的操作过程见P7。
程序说明: 程序说明:
程序必须有一个main()命名的主函数, 程序必须有一个main()命名的主函数,小括号表明这是一个函数 main()命名的主函数 并且可以在这里定义形式参数。 并且可以在这里定义形式参数。 形式参数 成对出现的一对花括号定界函数体的开始和结束。 成对出现的一对花括号定界函数体的开始和结束。 printf是 函数库中的标准输出函数,在调用(使用)函数时, printf是C函数库中的标准输出函数,在调用(使用)函数时,小 括号中放的是实参。 括号中放的是实参。 语句后使用分号作结束标志。 C语句后使用分号作结束标志。 #include是编译预处理中的文件包含命令,表示后面的文件放在 #include是编译预处理中的文件包含命令, 是编译预处理中的文件包含命令 这里。 这里。
int max(int x,int y,int z)/*函数的类型表明的是返回值类型*/ z)/*函数的类型表明的是返回值类型* /*函数的类型表明的是返回值类型 /*变量 存放得到的最大值,函数返回它* 变量m { int m; /*变量m存放得到的最大值,函数返回它*/ if(x>y) m=x; else m=y; if(m<z) /*使用控制语句形成分支结构 判断求出最大值* 使用控制语句形成分支结构, m=z; /*使用控制语句形成分支结构,判断求出最大值*/ return(m);/*语句return(m)将变量m的值返回函数调用的地方* /*语句return(m)将变量 return(m);/*语句return(m)将变量m的值返回函数调用的地方*/ } 程序说明: 程序说明: 1、C程序由函数构成 一个函数由两部分组成(函数说明、函数体) 2、一个函数由两部分组成(函数说明、函数体) 一个C程序总是从主函数main开始执行, main开始执行 3、一个C程序总是从主函数main开始执行,无论主函数在程序中 的位置如何,主函数只能有一个。函数说明分别写出。 的位置如何,主函数只能有一个。函数说明分别写出。程序以函 数的嵌套调用关系组织结构。 嵌套调用关系组织结构 数的嵌套调用关系组织结构。
从而使B语言的数据结构类型化,于1972年至1973年间 推出了一种新型的程序设计语言,该语言被命名为C语 言,C取自BCPL的第二个字母。可见,C语言名字的由 来反映了C语言诞生所经历的两个过程。 1983年,美国国家标准化协会(ANSI)根据C语言问世 以来的各种版本对C语言的发展和扩充,制定了新的标 准,称为ANSI C。1987年,ANSI又公布了新标准-87 ANSI C。 当前,国内最流行的IBM PC系列微机上使用的C版 本有Turbo C、MicroSoft C、Quick C等。不同版本略 有差异,因此,学生可查阅有关手册来了解所用计算机 系统的C编译的特点和规定。