




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C程序简介2.1C语言的历史及其特点2.2C程序示例2.3printf和scanf的一般使用2.4C程序的运行习题22.1C语言的历史及其特点
C语言是从BCPL(BasicCombinedProgrammingLanguage)语言和B(取BCPL的第一个字母)语言的基础上演化而来的。BCPL和B语言最初都是为编写操作系统软件和编译器而开发的语言,它们都是“数据无类型”语言,即每个数据项都占用内存中的一个字,处理具体数据项的责任是由程序员来承担的。贝尔实验室在B语言的基础上开发出的C语言,最初是用来编写Unix操作系统的。但由于C语言具有严格的设计,与具体硬件无关及其他许多优点,使它的应用很快就超越了贝尔实验室的范围,迅速地在全球传播。C语言之所以备受青睐,是和它具有的许多优点分不开的。这些优点主要有:
(1)丰富的数据类型。它不仅有基本类型,而且还有构造类型、指针类型等,能用来实现各种复杂的数据结构。
(2)丰富的运算符。C语言运算符相当多,许多操作都可以用运算符表示。由运算符和运算对象可以组成表达式,因而C语言中表达式的类型也是相当丰富的。
(3)具有结构化的控制语句。三种类型的结构化控制在C语言中都有相应的语句加以体现,因此可以用C语言进行结构化程序设计。C语言还以函数作为程序的基本单位,便于实现程序的模块化。
(4)具有位(bit)操作的功能,可以直接对硬件进行操作。这使得C语言既具有高级语言的所有优点,又具有低级语言的许多功能,成为所谓的“中间语言”。用C语言编写的程序质量好,目标代码执行的效率高。
(5)C语言简洁紧凑。它只有32个关键字和9种控制语句,而且书写形式自由,所以C语言入门比较容易。正因为C语言具有诸多优点,它才能够风靡全球,成为世界上应用最广泛的几种计算机语言之一。它不仅可用于编写系统软件,而且也可以用于编写应用软件。2.2C程序示例
C语言所用的表述方式对没有编过计算机程序的人来说可能是陌生的,因此我们先通过一些简单的例子来初识C语言。
【例2-1】打印一行文本。#include<stdio.h>main(){printf(″WelcometoC!\n″);return0;}运行输出:WelcometoC!
C语言程序是由函数组成的,任何C程序都有且只有一个主函数main(),它是程序的入口,也是程序的出口。函数的内容(称为函数体)由一对花括号括起来。本程序只有一条输出语句,其中,printf是函数名,圆括号中用双引号引起来的字符串是它的参数。该函数的功能是把这个字符串打印出来。圆括号后面的分号是语句的标志,任何语句都必须以分号结束。字符串中的“\n”是一个不可显示的字符,输出时看不见,它是个控制字符,控制换行。因此一个printf语句可以把一个字符串分多行输出,而多个printf语句也可以只输出在一行上。如语句
printf(″China\nBeijing\nTiananmen\n″);的输出为ChinaBeijingTiananmen这就是由于\n的控制作用产生的结果。下列三个语句printf(″China″);printf(″Beijing″);printf(″Tiananmen″);的输出为ChinaBeijingTiananmen因为字符串中无“\n”控制符,所以在用printf输出一个字符串后并不换行,下一个printf语句就跟着在同一行输出。
【例2-2】求两个整数的和。#include<stdio.h>main(){intint1,int2,sum;printf(″Inputaninteger\n″);scanf(″%d″,&int1);printf(″Inputanotherinteger\n″);scanf(″%d″,&int2);sum=int1+int2;printf(″sum=%d\n″,sum);return0;}在main函数体中的第一行
intint1,int2,sum;是一条声明语句,其作用是定义变量。变量是内存中的存储单元,它能够存储供程序使用的值。所有的变量在使用之前都必须先定义,定义的方法是在一个类型名后面写上变量名。这里的“int”是类型名,代表整数类型,它规定后面的变量都是整数类型,因此int1,int2和sum是三个整型变量。语句
printf(″Inputaninteger\n″);执行后会在屏幕上打印出“Inputaninteger”并把光标定位在下一行的开始位置。这条语句的作用是提示用户采取指定的动作。语句
scanf(″%d″,&int1);是用函数scanf读取用户输入的值。scanf函数用于读取来自标准输入设备(通常是键盘)的内容。上述scanf函数有两个参数:″%d″和&int1。第一个参数称为格式控制串(formatcontolstring),指示用户应该输入的数据类型,其中的转换说明符(conversionspecifier)“%d”说明输入的数据应该是一个整数。第二个参数以“&”开头,在C语言中,&称为地址运算符。&和int1连用是把存储int1的地址告诉scanf函数,则计算机就把int1的值存储到这个地址单元。初学者和使用惯其他不需要这种表示方法的程序设计语言的程序员经常把&用错(最常见的错误是丢掉&)。现在只要记住scanf语句中每个变量名的前面都加上一个&即可(指针变量等例外情况以后会提到)。执行这两个语句时,屏幕上会提示你输入一个整数,且光标在闪动,当你输入一个整数并按回车之后,输入的整数就被存到变量int1之中。语句
sum=int1+int2;是一个赋值语句,它的作用是首先计算“=”右边的表达式,再把计算结果赋给左边的变量。“=”是个赋值号,不是等号,C语言中等号有另外的表示形式。C语言中大多数计算都是用赋值语句完成的。语句
printf(″sum=%d\n″,sum);在屏幕上打印出“sum=”和变量sum的内容。这里printf函数有两个参数:第一个参数“sum=%d\n”是格式控制串,其中包含直接显示的字符“sum=”和指示打印整数的转换说明符“%d”;第二个参数sum代表要打印的值。语句
return0;是一个返回语句。这里是把整数0传送给运行该程序的操作系统环境,其作用是把程序成功执行完毕这一消息通知给操作系统,标志着程序的终止。该程序的运行结果:
Inputaninteger 8↙ Inputanotherinteger 7↙ sum=15
【例2-3】求半径为r的圆的面积。/*calculatingtheareaofacircle*/#include<stdio.h>#definePI3.14main(){floatr,area;printf(″Inputr=?\n″);scanf(″%f″,&r);area=PI*r*r;printf(″Thearea=%f\n″,area);return0;}运行输出:
Inputr=? 7.1↙ Thearea=158.2874在这个程序中出现了一些新的东西。
/*calculatingtheareaofacircle*/称为注解,说明该程序的作用。C语言中注解用“/*”和“*/”括起来,编译时不予处理。第二行的 #include<stdio.h>是一条预处理指令。在源程序被编译之前,凡由“#”开头的代码都先由预处理程序进行处理。上述的代码行是通知预处理程序把标准输入/输出头文件(stdio.h)中的内容包括到程序中。头文件stdio.h不仅包含了编译程序在编译标准输入/输出库函数(如printf、scanf等)时要用到的信息,还包含了确定对库函数的调用是否正确的信息。 #definePI3.14是一条宏定义指令,也是由预处理程序处理的。其作用是定义一个常量标识符“PI”,在程序中以它代替3.14,这样做的目的是增加程序的可读性与可移植性。语句
floatr,area;中的“float”是数据类型名,称为浮点型或实型,规定其后的变量可以取小数值。
【例2-4】用函数计算两个整数的最大值。#include<stdio.h>main(){inta,b,c;intmax(int,int);printf(″Input2integers\n″);scanf(″%d%d″,&a,&b);c=max(a,b);printf(″max=%d\n″,c);return0;}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;returnz;}运行输出:Input2integers812↙max=12这个程序中除主函数main外,又定义了一个max函数。其中: intmax(intx,inty)称为函数头,max为函数名,前面的int为函数返回值的类型,圆括号中的x、y称为参数,它们前面的int规定了参数的类型。在max函数体中,语句
intz;定义了一个临时工作变量,它只在这个函数中使用,其作用是接收x、y中的最大者,最后返回给调用函数。if(x>y)z=x;elsez=y;是一个完整的if语句,不要认为是两个语句。这是一个双分支语句,首先判断x是否大于y,如结果为真,则把x赋给z,否则把y赋给z。函数max头中的x、y称为形式参数,其本身并没有值,只有在调用max函数时由调用者提供值,调用者提供的值称为实在参数。这里调用max函数的调用者是main函数,它所提供的实在参数是a,b。a和b都是在主函数中从键盘输入的值。调用和返回的关系是: main函数abc↓↓↑
max函数xyz在main函数体中的第二个语句 intmax(int,int);称为函数声明。函数声明指明函数名、函数返回值的类型、函数的参数个数及每个参数的类型,这里可以不出现参数名,只用类型名即可。因为max函数的完整定义出现在main函数之后,在main函数体中使用max时还不知它为何物,因此必须预先声明max函数的性质,才能使用它。2.3printf和scanf的一般使用在前面的例子中,我们已经用scanf函数和printf函数进行了输入/输出。这两个函数是由系统提供的内部函数,它们的声明包含在头文件stdio.h中,因此在使用它们之前必须在程序首部增加“#include<stdio.h>”这条预处理命令。本节先对这两个函数作一个简要的介绍,更详细的内容在后面章节中讨论。
1.printf函数
printf函数的功能是按照指定的格式控制把相应的参数值在标准输出设备上(通常是终端)显示出来。printf函数的一般使用格式是:
printf(格式控制串,参数1,参数2,…);其参数的个数是可变的,例如:
printf(″a=%d***b=%d***max=%d\n″,a,b,max);printf函数中有4个参数,第一个参数为格式控制串,后三个参数a、b、max为要输出的值。格式控制串中有两类字符,一类是转换说明符,另一类是非转换说明符。对非转换说明符均按原样输出,而每一个转换说明符都要和后面的一个参数相对应,才能发挥它的作用;反之,后面每一个要输出值的参数必须在前面的格式控制串中有一个转换说明符对它加以限制才能输出。因此上面语句的输出是(设a为8,b为12,max为其最大者):
a=8***b=12***max=12转换说明符由百分号“%”和控制字符构成。我们已见过的控制字符有“d”(代表十进制整数)、“f”(代表实数),当然还有其他的控制字符,如c、o、x等,我们在后面会详细介绍。
2.scanf函数
scanf函数的功能是接收用户从键盘上输入的数据,按照格式控制符的要求进行转换,然后送到由对应参数指示的变量单元中去。scanf函数的一般使用格式是:
scanf(格式控制串,参数1,参数2,…);其参数个数也是可变的,每一个参数都必须是一般变量的地址,也就是说其表示形式为一般变量名前面加上取地址运算符“&”。例如:
scanf(″%d%d%f″,&a,&b,&x);其中:a、b是整型变量,x是实型变量,它们分别由前面格式控制串中的“%d”、“%d”和“%f”来限定。转换说明符和变量地址之间构成前后一一对应的关系。同样,格式控制字符也还有其他的字符。执行上面的输入语句,用户可以从键盘上敲入:
8123.1416↙即各数之间用空格分开,最后按回车键,则变量a、b、x中就有了相应的值:
a=8,b=12,x=3.14162.4C程序的运行由于C语言的优点和其应用的普及性,因而产生了不少的版本和编译系统。本书是按照ANSIC(美国国家标准化协会制定的C标准)来介绍C语言的。在微机上使用的C编译系统有:TurboC、BorlandC、MicrosoftC、QuickC等,它们在具体实现上略有差别。另外,还可以使用可视化的编译工具VisualC++。上面所列的几种C编译系统都是在DOS环境下工作的,而VC++是在Windows环境下工作的。
1.DOS环境下对于在DOS环境下运行的系统,我们以TurboC为例来介绍如何运行一个C程序。其操作步骤如下:
(1)打开TurboC编译器。如TurboC安装在C盘上,则在DOS状态下执行以下命令:
C:\〉CDTC↙
C:\TC〉CDBIN↙ C:\TC\BIN〉TC↙于是打开C编译器,出现TurboC的集成开发环境。其主菜单如下:
(2)选择“File/New”命令打开一个新文件;或选择“File/Open”命令,则系统会提示输入一个文件名,如输入的文件名不存在,则就相当于打开一个新文件,比如file1.c,文件的扩展名为.c。
(3)输入源程序内容。
(4)编译源程序。有以下两种方法可以使用:①运行“Compile/Compile”命令。②用〈F9〉快捷键。如果源程序没有错误,则出现Success(成功)提示,然后按任意键继续。如果源程序中有错误,则出现Error(错误)提示,按任意键后光标会停留在出错的地方,同时在屏幕下方的Message(信息)窗口会出现对该错误的英文解释。你可以根据提示信息作相应的修改,然后再进行编译,直至把所有的错误都排除为止。
(5)运行程序。这也有两种操作可供选择:①运行“Run/Run”命令。②用〈Ctrl〉+〈F9〉快捷键。如果有数据要输入,则光标会不停地闪动,当输入完必要的数据之后,按回车键,则返回程序画面,说明程序已经运行完毕。
(6)查看运行结果。也有两种操作可供选择:①运行“Window/Userscreen”命令。②用〈Alt〉+〈F5〉快捷键。此时程序画面消失,出现运行结果画面,当查看之后,按任意键即返回源程序窗口。
(7)文件的保存。可用两种方法将程序以文件的形式保存起来:①执行“File/Save”命令,此时会显示当前目录并提示你输入文件名。目录可以改变。②执行“File/Saveas…”命令,这时会提示你输入新文件名,但不显示目录。当输入完新文件名后点击OK按钮或按回车键,文件就以新输入的名字被保存起来。
(8)在DOS提示符下运行程序。在执行完“Compile/Make”命令之后,即产生一个扩展名为.exe的可执行文件,如file1.exe。在DOS提示符下,可以把file1作为一个命令加以执行:
C:\TC\BIN〉file1↙
(9)在编辑状态下按〈F10〉就可返回主菜单。执行“File/DOSShell”命令就可进入DOS状态。在DOS状态下,在命令提示符后输入exit命令可以退出DOS状态。执行“File/Quit”命令则退出TurboC环境。
2.VC++环境下在VisualC++环境下运行一个C程序的步骤如下:
(1)按照“开始”→“所有程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++”的顺序启动VC6.0集成开发环境,关闭其中的“TipoftheDay”对话框后,出现如图2-1所示的窗口。图2-1“MicrosoftVisualC++”窗口
(2)打开“File/New”菜单,出现“New(新建)”对话框。其中有四个标签:Files(文件)、Project(工程)、Workspace(工作区)、OtherDocuments(其他文档)。单击“Files”标签后,在左边的列表框中选择“C++SourceFile”,在右边的File下面输入文件名,比如mypro.c,则该文件所在位置自动列在“Location(目标)”框中显示的目录下,这个位置可以修改,见图2-2。图2-2“New”对话框
(3)单击“OK”按钮,出现程序区,光标在程序区的左上角闪动。可在此输入程序,比如:#include<stdio.h>main(){printf(″ThisismyfirstCprogram\n″);return0;}程序输入完后,选择菜单“Build/Compilemypro.c”,如图2-3所示。图2-3程序的输入与编译这是对源程序的编译,可生成.Obj目标文件。此时在屏幕下方的调试信息窗口里显示出编译的结果:指出有多少致命性的错误(error(s))和警告性的错误(warning(s))。同时在屏幕的右下角显示出光标所在的行(Ln)和列(Col)。在调试程序时,可以根据这里显示的行数和编译后给出的错误信息所在的行号尽快地找到错误的语句。当编译无误后,接着执行菜单“Build/Buildmypro.exe”可生成可执行文件(.exe)。如图2-4所示。图2-4可执行文件的生成
(4)运行可执行程序。执行菜单“Build/Execute
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业外包司机合同范本
- 企业公益性工程协议书
- 偿收垃圾服务合同范本
- 农村农田占用合同范本
- 农房地基维护合同范本
- 出售房屋民宿合同范本
- 公路劳务清包合同范本
- 企业场地转让合同范本
- 公司职工解聘合同范本
- 代理集成墙板合同范本
- 小学数学 冀教课标版 四年级上册 典型问题 典型问题(例题5)课件
- 2022年万豪国际酒店委托管理合同
- 精选四川高中信息技术选修网络技术学业水平考试真题含答案
- 水分测定原始记录表
- 电子商务客户服务5套综合测试题带答案
- 2022年助产人员培训计划
- 交通警察大队选定车辆、痕迹类检验鉴定服务机构项目合同书
- 起重机轨道修理方案
- Jinan Vantage-碳碳复合材料-应用领域简介
- 办公室七大浪费管理手册
- 轴类零件实用工艺工序卡片
评论
0/150
提交评论