第1章C语言概述.docx
《第1章C语言概述.docx》由会员分享,可在线阅读,更多相关《第1章C语言概述.docx(15页珍藏版)》请在冰豆网上搜索。
第1章C语言概述
第1章C语言概述
1.1C语言产生的背景
C语言是1972年由美国的DennisRitchie设计发明的,它由早期的编程语言发展演变而来,可用于编写系统软件,还可用于编写应用软件,是广泛流行的高级语言。
C语言诞生以前,系统软件主要是用汇编语言编写的,汇编语言可以实现对计算机硬件的直接操作,但是它依赖于计算机硬件,其可读性和可移植性都很差。
但一般的高级语言却难以实现对计算机硬件的直接操作,所以人们希望有一种计算机语言能有高级语言的优点,同时又有低级语言的功能,C语言就是在这种背景下产生的。
1970年,AT&T贝尔实验室的KenThompson根据BCPL(basiccombinedprogramminglanguage))设计出较先进的并取名为B的语言,最后导致了C语言的问世。
随着微型计算机的普及,出现了许多C语言版本。
由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。
为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。
目前,在微机上广泛使用的C语言编译系统有MicrosoftC、TurboC、BorlandC等。
虽然它们的基本部分都是相同的,但还是有一些差异,所以还须注意自己所使用的C编译系统的特点和规定,可以参阅相应的手册。
本书选定的上机环境是TurboCV2.0(DOS操作系统)。
1.2C语言的特点
C语言发展如此迅速,成为最受欢迎的语言之一,主要是因为它的功能强大。
许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。
C语言具有下列特点:
1.C是中级语言
它把高级语言的基本结构和语句与低级语言的实用性结合起来,C语言可以象汇编语言一样对位、字节和地址进行操作。
通常还是称C为高级语言。
2.C是结构化语言
结构化语言的特点是程序的各个部分除了必要的数据交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全
C语言具有多种数据类型,并引入了指针概念,可使程序效率更高;C语言也具有强大的图形功能;具有较强的计算功能、逻辑判断功能。
4.C语言可移植性好
与汇编语言相比,C语言程序适用范围大,可用于各种操作系统和各种型号的计算机。
1.3C语言的程序结构
C程序的基本结构
一个C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。
C程序的格式
函数名(形参表)
{
函数体
}
为了说明C语言源程序结构的特点,先看几个程序。
这几个程序由简到难,表现了C语言程序在组成结构上的特点。
虽然有关内容还未学习,但可以从这些例子中了解到C语言程序的基本架构和书写格式。
[例1.1]仅由main()函数构成的C语言程序示例
main()
{printf(“Howdoyoudo!
\n”);
}
程序运行结果:
Howdoyoudo!
重点理解:
1、C程序的基本结构是函数,函数也叫模块,是完成某个整体功能的最小单位。
2、C函数从左花括号开始,到对应的右花括号结束。
[例1.2]
Main()/*求两数之和*/
{
inta,b,sum;
a=123;b=321;
sum=a+b;
printf(“sum=%d\n”,sum);
}
程序运行结果:
sum=444
重点理解:
1、C语句是组成C程序的基本单位,具有独立程序功能,都以分号结尾。
2、注释语句不是C语句,只是对程序的说明,以/*……*/为标记,不被系统编译和执行,目的是帮助阅读程序,增强程序的可读性。
3、书写风格:
(1)、书写位置:
一行中的语句数量无限制。
注释语句可出现在任何位置。
(2)、缩进格式:
不同结构层次的语句从不同位置开始,使程序清晰易读。
[例1.3]由main()函数和1个其它函数max()构成的C语言程序示例
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
return(z);}
main()
{intn1,n2;
printf(“Inputthefirstnumber:
”);
scanf(“%d”,&n1);
printf(“Inputthesecondnumber:
”);
scanf(“%d”,&n2);
printf(“max=%d\n”,max(n1,n2));
}
程序运行情况:
Inputthefirstnumber:
3←┘
Inputthesecondnumber:
8←┘
Max=8
重点理解:
1、函数调用的功能。
max()是自定义函数。
2、printf函数是一个由系统定义的标准函数,可在程序中直接调用。
3、main()函数可以在任何位置,C程序执行时总是从main()开始。
总结:
1.函数是C语言程序的基本单位。
main()函数的作用,相当于其它高级语言中的主程序;其它函数的作用,相当于子程序。
2.C语言程序总是从main()函数开始执行。
一个C语言程序,总是从main()函数开始执行,而不论其在程序中的位置。
当主函数执行完毕时,亦即程序执行完毕。
习惯上,将主函数main()放在最前头。
3.任何函数(包括主函数main())都是由函数说明和函数体两部分组成。
其一般结构如下:
[函数类型]函数名(函数参数表)函数说明部分
{说明语句部分;
执行语句部分;}函数体部分
说明:
(1)使用的语法符号约定
[...]──方括号表示可选(即可以指定,也可以缺省)
……──省略号表示前面的项可以重复
|──多(含2)中选1
(2)函数说明
由函数类型(可缺省)、函数名和函数参数表三部分组成,其中函数参数表的格式为:
数据类型形参[,数据类型形参2……]
(3).函数体
函数体一般由说明语句和可执行语句两部分构成。
说明语句部分----说明语句部分由变量定义、类型定义、函数说明、外部变量说明等组成。
函数体中的变量定义语句,必须在所有可执行语句之前。
可执行语句----一般由若干条可执行语句构成。
4源程序书写格式
(1)所有语句都必须以分号“;”结束,函数的最后一个语句也不能省略“;”。
(2)程序行的书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。
(3)注释语句的位置,可以单占1行,也可以跟在语句的后面;如果1行写不下,可另起1行继续写;注释中允许使用汉字。
在非中文操作系统下,看到的是乱码,但不影响程序运行。
注意:
为避免遗漏必须配对使用的符号,例如注释符号、函数体的起止标识符--花括号、圆括号等等,在输入时,可成对的连续输入这些起止标识符,然后再在其中插入要编辑的内容。
1.4C程序上机步骤
1运行一个C语言程序的一般过程
TurboC是一个集源程序编辑、编译、连接、运行与调试于一体,用菜单驱动的集成软件环境。
运行一个C语言程序的一般过程:
(1)启动TC,进入TC集成环境。
(2)输入与编辑源程序。
编辑后文件的扩展名为:
.c。
(3)对源程序进行编译。
如果编译成功,则可进行下一步操作;否则,返回
(2)修改源程序,再重新编译,直至编译成功。
编译成功后文件的扩展名为:
.obj。
(4)与库函数进行连接。
如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。
连接成功后的可执行文件的扩展名为:
.exe。
(5)运行可执行的目标程序。
通过观察程序运行结果,验证程序的正确性。
如果出现逻辑错误,则必须返回
(2)修改源程序,再重新编译、连接和运行,直至程序正确。
2TC的启动、退出与命令菜单
(1)启动TurboC:
tc←┘
启动TurboC后,其主菜单条横向排列在屏幕顶端,并被激活,其中File主项成为当前项。
主菜单的下面,是Edit(编辑)窗口和Message(消息)窗口。
两个窗口中,顶端横线为双线显示的,表示该窗口是活动窗口。
进入TurboC2.0集成开发环境中后,屏幕上显示:
其中顶上一行为TurboC2.0主菜单, 中间窗口为编辑区, 接下来是信息窗 口,最底下一行为参考行。
这四个窗口构成了TurboC2.0的主屏幕,以后的编程、 编译、调试以及运行都将在这个主屏幕中进行。
主菜单在TurboC2.0主屏幕顶上一行,显示下列内容:
FileEditRunCompileProjectOptionsDebugBreak/watch除Edit外,其它各项均有子菜单,只要用Alt加上某项中第一个字母,就可进入该项的子菜单中。
编辑窗口的顶端为状态行,其中:
.Line1Col1:
显示光标所在的行号和列号,即光标位置。
.Insert:
表示编辑状态处于“插入”。
当处于“改写”状态时,此处为空白。
.d:
NONAME.C:
显示当前正在编辑的文件名。
显示为“NONAME.C”时,表示用户尚未给文件命名。
屏幕底端是7个功能键的说明,以及NumLock键的状态(显示“NUM”时,表示处于“数字键”状态;空白,表示“控制键”状态)。
(2)命令菜单的使用
1)按下功能键F10,激活主菜单。
如果主菜单已经被激活,则直接转下一步。
2)用左、右方向键移动光带,定位于需要的主项上,然后再按回车键,打开其子菜单(纵向排列)。
3)用上、下方向键移动光带,定位于需要的子项上,回车即可。
执行完选定的功能后,系统自动关闭菜单。
注意:
菜单激活后,又不使用,可再按F10/Esc键关闭,返回原来状态。
(3)退出TurboC
退出TC有两种方法:
1)菜单法:
File|Quit(先选择File主项,再选择并执行Quit子项)
2)快捷键法:
Alt+“X”(先按下Alt键并保持,再按字母键X,然后同时放开)
3.编辑并保存一个C语言源程序
按Alt+F可进入File菜单,如图:
File菜单的子菜单共有9项,分别叙述如下:
1. Load:
装入一个文件,可用类似DOS的通配符(如*.C)来进行列表选择。
也可装入其它扩展名的文件,只要给出文件名(或只给路径)即可。
该项的热键为F3,即只要按F3即可进入该项,而不需要先进入File菜单再选此项。
2.Pick:
将最近装入编辑窗口的8个文件列成一个表让用户选择, 选择后将该程序装入编辑区,并将光标置在上次修改过的地方。
其热健为Alt-F3。
3.New:
新建文件,缺省文件名为NONAME.C,存盘时可改名。
4. Save:
将编辑区中的文件存盘,若文件名是NONAME.C时,将询问是否更改文件名,其热键为F2。
5.Writeto:
可由用户给出文件名将编辑区中的文件存盘,若该文件已存在,则询问要不要 覆盖。
6. Directory:
显示目录及目录中的文件,并可由用户选择。
7.Changedir:
显示当前默认目录,用户可以改变默认目录。
8. Osshell:
暂时退出TurboC2.0到DOS提示符下, 此时可以运行DOS命令, 若想回到 TurboC2.0中,只要在DOS状态下键入EXIT即可。
9. Quit:
退出TurboC2.0,返回到DOS操作系统中,其热键为Alt+X。
以上各项可用光标键移动色棒进行选择,回车则执行。
也可用每一项的第一个大写字母直接选择。
若要退到主菜单或从它的下一级菜单列表框退回均可用Esc键, TurboC2.0所有菜单均采用这种方法进行操作。
文件名的输入有两种方法:
直接输入和选择输入。
1)直接输入
按照文件名的组成字符串,逐个字符输入即可。
如果是已经存在的文件,系统就在编辑窗口显示该文件的内容,可供编辑、修改。
如果是新文件,则给出一个空白编辑窗口,可供输入新的源程序。
如果该文件不在当前目录下,则需要冠以路径名和(或)盘符。
2)选择文件(仅适用于已经存在的源程序文件)
①空回车,打开当前目录下、后缀为.C的所有文件的文件名窗口。
②用上、下、左、右方向键,将光带定位于所需的文件名上。
③按回车键。
(3)常用编辑操作
在编辑源程序过程中,随时都可以按F2键(或File|Save),将当前编辑的文件存盘,然后继续编辑。
这是一个好的习惯!
关于在线帮助:
在任何窗口(或状态)下,按F1键激活活动窗口(或状态)的在线帮助:
.关闭在线帮助、返回原窗口(或状态)──Esc
.返回前一个在线帮助屏──Alt+F1(无论在线帮助是否被激活)
.返回在线帮助索引──F1:
激活在线帮助后,再按F1,则返回在线帮助索引,以便查询其它类别在线帮助信息。
.查询库函数的在线帮助信息──^F1:
将光标移到需要查询函数名的首字符上,然后键入^F1,即可获得该库函数的在线帮助信息。
为简化描述,用“^”代表“Ctrl”键。
^Fn就是Ctrl+Fn,下同。
编辑命令简介:
PageUp 向前翻页
PageDn 向后翻页
Home 将光标移到所在行的开始
End 将光标移到所在行的结尾
Ctrl+Y 删除光标所在的一行
Ctrl+T 删除光标所在处的一个词
Ctrl+KB 设置块开始
Ctrl+KK 设置块结尾
Ctrl+KV 块移动
Ctrl+KC 块拷贝
Ctrl+KY 块删除
Ctrl+KR 读文件
Ctrl+KW 存文件
Ctrl+KP 块文件打印
4.编译、连接──单个源程序文件
按Alt+C可进入Compile菜单,该菜单有以下几个内容,如图所示:
1. CompiletoOBJ:
将一个C源文件编译生成.OBJ目标文件, 同时显示生成的文件名。
其热键为 Alt+F9。
2.2. MakeEXEfile:
此命令生成一个.EXE的文件,并显示生成的.EXE文件名。
其中.EXE文件名是下面几项之一:
1)1) 由Project/Projectname说明的项目文件名。
2)2) 若没有项目文件名,则由PrimaryCfile说明的源文件。
3)3) 若以上两项都没有文件名,则为当前窗口的文件名。
3.3. LinkEXEfile:
把当前.OBJ文件及库文件连接在一起生成.EXE文件。
4.4. Buildall:
重新编译项目里的所有文件,并进行装配生成.EXE文件。
该命令不作过时检查 (上面的几条命令要作过时检查, 即如果目前项目里源文件的日期和时间与目标文件相同或更早,则拒绝对源文件进行编译)。
5.5. PrimaryCfile:
当在该项中指定了主文件后,在以后的编译中,如没有项目文件名则编译此项中规定的主C文件,如果编译中有错误,则将此文件调入编辑窗口, 不管目前窗口 中是不是主C文件。
6.6. Getinfo:
获得有关当前路径、源文件名、源文件字节大小、编译中的错误数目、可用空间等信息,如图:
5.运行与查看结果
(1)运行当前正在编辑的源程序文件
选择并执行Run|Run项(快捷键:
^F9),程序运行结束后,仍返回到编辑窗口。
当你认为自己的源程序不会有编译、连接错误时,也可直接运行(即跳过对源程序的编译、连接步骤)。
这时,TC将一次完成从编译、连接到运行的全过程。
(2)查看运行结果
选择并执行Run|UserScreen项(快捷键:
Alt+F5)。
查看完毕后,按任一键返回编辑窗口。
如果发现逻辑错误,则可在返回编辑窗口后,进行修改;然后再重新编译、连接、运行,直至正确为止。
6.编辑下一个新的源程序
选择并执行File|New项即可。
如果屏幕提示如下确认信息:
NONAME.Cnotsaved.Save?
(Y/N)
如果需要保存当前正在编辑的源程序,则键入“Y”,进入下一步操作;否则,键入“N”(不保存),跳转到
(2)。
(1)系统提示换名:
>\NONAME.C
直接输入你给源程序文件起的名字即可。
(2)系统给出一个空白的编辑窗口,可以开始编辑下一个新的源程序。
1.5实训认识C语言程序
实训目的:
1。
熟悉TurboC系统环境;
2.学会寻求TurboC的系统帮助;
3.认识C语言程序的基本结构和书写格式。
实训内容:
1编程求37+29的值:
(1)启动TurboC系统;
(2)在Edit窗口中输入、编辑如下程序;
main()
{
intx,y,sum;/*变量定义语句:
定义3个整型变量x、y、sum*/
x=37;/*可执行语句:
将37赋值给变量x*/
y=29;/*可执行语句:
将29赋值给变量y*/
sum=x+y;/*可执行语句:
将x+y的值赋值给变量sum*/
printf(“sum=%d\n”,sum);/*可执行语句,%d为转换格式,用以输出的十进制整sum*/
}
(3)编译、运行该程序;
(4)写出程序运行结果;
(5)保存该程序文件。
(
2编程求37+29的值:
(1)打开前面已经存盘的文件,编辑修改为如下的程序:
main()
{
intx,y;
x=37;
y=29;
intsum;
sum=x+y;
printf(“sum=%d\n”,sum);
}
(2)上机运行这个程序,得到什么结果?
(3)系统是怎么通知你所存在的问题的?
实训思考
1通过上面的练习,你对TurboC了解了多少?
2知道C程序运行过程了吗?
3两个程序的运行结果为什么不同?