第 2章 C语言程序设计的基础知识
2.1 简单 C语言程序的组成和格式
2.2 简单的数据类型
2.3 算 术 运 算
2.4 赋值运算、逗号运算和自加、自减运算
2.5 Turbo C 环境下的上机操作步骤
2.1 简单 C语言程序的组成和格式
2.1.1 一个简单的 C语言程序利用计算机解决各种类型,复杂程度各异的问题时,关键是用户需要编写出计算机能够,读懂,的程序,使计算机能够按照程序设计者的意愿去工作 。 C语言就是一种在计算机上实现程序的描述语言 。
它在描述一个完整的程序时,有固定的结构要求和具体的描述方法,类似于我们说话、写文章要有主谓宾基本语句部分一样,缺少一部分就不成一句话了。在这一节中将向读者介绍一些用 C语言进行程序设计的有关基本语法知识。
我们先举一个简单的程序例子,使读者对 C语言程序的构成有一个初步的了解。
例 2.1 根据圆的半径 r,计算圆面积 s。
已知求圆面积的公式为,s=r 2
源程序为:
/* 求圆面积 */
# include <stdio.h> /* 命令行 */
main () /* 主函数首部 */
{ int r ; /* 定义变量 r,说明为整型 */
float s ;
/* 定义变量 s,说明为单精度型 */
r=4 ; /* 给 r赋值为 4 */
s=3.141592 * r * r ;
/* 计算圆面积,将值赋给 s */
printf ( " 圆面积 s=%f \n ",s) ;
/*显示圆面积的值 */
}
以上程序运行后,在计算机屏幕上显示如下结果:
圆面积 s=50.265472
源程序的第一行用,/*”和,*/”符号括起来的一串字符是对程序的注释,这对符号必须成对使用,,/”和,*”之间不能有空格。注释内容可以用中文或西文,
它对程序的运行不起作用,只起注释作用。
好的注释可以使人们在阅读程序时,能较好地理解程序的功能及含义。
第二行是命令行,它的功能是在调用系统的输出函数( printf函数)时,需要写该命令行。
第三行是主函数的首部,其中,main
是主函数名,函数名后面的一对小括号是不能省略的,它的功能是:表明函数从此开始。函数具体要完成的内容放在其后一对花括号 {}中,用这对花括号括起来的部分称为函数体。,{”符号表示函数体开始,
源程序最后一行的,}”符号表示函数到此结束。
在 C语言源程序中只能包括一个主函数,在一个或多个函数组成的程序中,程序的执行都是由主函数开始。
在该主函数的函数体中共有五行,完成指定的任务:根据圆的半径,计算并输出显示该圆的面积。在这五行中,除了注释之外,每一条语句均以分号“;”号结束,完成某一项功能。
函数体中第一条和第二条语句为声明部分,分别定义了一个整型变量 r和一个单精度型变量 s。
函数体中第三条至第五条语句为执行部分。此例中分别完成了对变量 r( 圆的半径)的赋值(值为 4),然后根据变量 r的数值计算圆面积,计算后赋给变量 s。 最后通过调用系统的 printf输出函数,将圆的面积 s输出显示在屏幕上。
2.1.2 C语言程序的组成和格式
2.1.3 关键字和标识符在例 2.1的源程序中,我们遇到了诸如
main,int,r,float,s,printf等符号,它们的作用和性质并不完全相同,它们代表什么意思呢?
1.关键字关键字又称为保留字。它们是 C语言中预先规定的具有固定含义的一些单词,
如,int表示为整型数据,float表示为单精度实型数据等等。用户只能按其给定的含义来使用,不能重新定义另作它用。 C语言所提供的关键字请见附录一。
2.标识符标识符分为系统预定义标识符和用户自定义标识符两种。
( 1)系统预定义标识符这些标识符也是由一些单词所组成,
它们的功能和含义是由系统预先定义好的,
如,main代表主函数名,printf代表输出函数名等等。
它们与关键字不同的是:系统预定义标识符允许由用户赋予新的含义,这样做的结果,往往会引起一些误解,因此建议用户不要把这些系统预定义标识符另作它用,否则会带来不必要的麻烦。
( 2)用户自定义标识符用户可根据需要自行定义一些标识符,
用作为符号名、变量名、数组名、函数名、
文件名等等,如例 2.1中,r代表变量名,
用于存储圆的半径,s代表变量名,用于存储圆的面积。用户自定义标识符的命名必须遵守一定的规则。合法的用户自定义标识符应满足以下条件。
① 只能由大小写英文字母、阿拉伯数字和下划线组成。标识符的开头必须是字母或下划线,大小写字母是有区别的,视为不同的字母。
② 标识符的长度视不同的编译器规定而不同,一般可识别前 8个字符。
按照以上规则,mystery,_start,r1、
R_1都是合法的标识符,而 12b,D$?_I、
int都不是合法的用户自定义标识符。
为使程序具有较好的可读性,标识符的命名应尽可能反映出它所代表的含义,
做到“见名知义”。如:用 pi代表圆周率,
用 sum代表总和,用 name代表名字等等。
2.1.4 常量和变量在计算机处理的程序中,我们不免经常与数据打交道,根据数据的值是固定的,
还是可变的,我们将数据分为两大类:常量和变量。
1.常量在程序运行过程中其值不能改变的量称为常量。如例 2.1中的圆半径 4和圆周率
3.141592都属于常量。常量有不同的类型之分,有整型常量、实型常量、字符常量、
字符串常量等。
2.变量在程序运行过程中其值可以改变的量称为变量。如例 2.1中的表示圆半径的变量
r和表示圆面积的变量 s都属于变量。与常量相同的是,变量也有类型之分,同样有整型变量、实型变量、字符变量等。
程序中的变量由用户标识符来表示,
在 C语言中,所有变量必须遵循“先定义,
后使用”的原则。变量的定义一般放在函数体的开头,即声明部分。
变量定义语句的形式为:
类型名 变量名 1,变量名 2,… ;
其中:类型名由关键字表示,不同的关键字表示不同的数据类型,变量名是用户标识符,由用户命名。
如例 2.1中语句 int r ;,表示定义了一个整型变量,变量名为 r,而语句 float s ;,
表示定义了一个单精度型变量,变量名为 s。
通常,定义了一个变量而未赋初值时,
一般变量中存放的是随机值。因此,为使定义的变量有一确切的数值,需给定义的变量赋一初值。所以,C语言也允许在定义变量的同时为其赋初值,其形式为:
类型名 变量名 1=常量 1,变量名 2=常量 2,… ;
如例 2.1函数体中的第一条语句 int r ;语句,也可改写成 int r=4 ;,表示定义了一个整型变量 r,初值为 4。第二条语句 float s ;
语句,也可改写成 float s=0.0 ;,表示定义了一个单精度型变量 s,初值为 0.0。
一个变量代表着内存中一个具体的存储单元,用变量名来标识。存储单元中存放的数据称为变量的值,变量的值可以通过赋值的方法获得和改变。读者一定要区分开变量名和变量值这两个不同的概念。
2.2 简单的数据类型
2.2.1 为什么要区分不同的数据类型
2.2.2 整型常量和变量
2.2.3 实型常量和变量
2.2.4 字符型常量和变量
2.2.5 符号常量、不可变的变量
2.2.6 无值型
2.3 算 术 运 算
2.3.1 算术运算符和表达式
1,基本算术运算符
C语言提供的基本算术运算符见表 2-3。
说明
( 1),单目,和,双目,指的是参与运算的对象个数;
( 2) 两个整数相除,运算结果仍为整数,得到的商舍去小数部分;
( 3) 求余运算限定运算对象必须为整数,其中在运算符左侧的为被除数,右侧的为除数,两个数求余运算后的结果是取整除后的余数和被除数的符号 ( 不同的机器系统有差异 ) 。
2.算术运算符的优先级、结合性和算术表达式由算术运算符、圆括号和运算对象连接起来的式子称为算术表达式。其中运算对象可包括常量、变量和函数。
例如:数学表达式,b2– 4ac 写成 C语言算术表达式应是,b*b – 4*a*c
C语言中的表达式与数学中的表达式在书写格式上是有区别的,请读者注意以下几点:
( 1)表达式中只能使用系统允许的标识符。例如:数学表达式 2r写成 C语言表达式应是 2*3.1415926*r;
( 2) 乘法运算符,*”不能省略。例如:数学表达式 4x+2写成 C语言表达式应是,4*x+2;
( 3) C语言表达式没有分数形式,对数学表达式中的分数运算要做适当的转换。
例如:数学表达式 写成 C语言表达式应是 (a–b) / (c+d);
( 4) 在表达式中要想改变运算顺序,
优先运算哪一步,只能使用圆括号“(”
和“)”,不能使用方括号,[”和,]”
和花括号,{”和,}”,因为这两种括号 C
语言系统另有它用。
在 C语言进行表达式求值运算过程中,
各运算符均有优先级的问题,运算符与两侧的运算对象之间还有结合性的问题。有关 C语言中算术运算符的优先级和结合性内容如表 2-4所示。
在 C语言算术表达式中优先级别高的先运算,优先级别低的后运算 。
,结合性,是指当一个运算对象两侧运算符优先级别相同时,是按,从左至右,
的顺序运算 ( 称为左结合性 ) ;还是按
,从右至左,的顺序运算 ( 称为右结合性 ) 。 例如:表达式,a+b–c 运算次序应该是先进行加法运算,后再进行减法运算 。
2.3.2 数据类型的转换
2.3.3 如何使用 C语言的标准库函数标准库函数是 C语言编译系统预先编写好的函数,在附录四中给出了 C语言中常用的库函数 。 库函数的一般调用形式为:
函数名 ( 参数表 )
2.4 赋值运算、逗号运算和自加、自减运算
2.4.1 赋值运算符和表达式
1,赋值表达式当用户欲将一个数或表达式的值赋给某一指定的变量时,可以通过赋值表达式实现 。
赋值表达式的形式如下:
变量名 =表达式其中:,=”是赋值运算符,表示赋值的含义,它的功能是将运算符右侧的表达式的值放入以左边变量为标识的存储单元中。
2,复合的赋值表达式复合的赋值运算符共 5个,它们是:
+=,- =,*=,/=,%=
3,赋值运算中的类型转换
2.4.2 自加,自减运算符和表达式自加运算符,++” 和自减运算符,–
–” 的作用是:使变量的值增 1和减 1。
,++” 和,– –” 运算符为单目运算符,运算对象必须是变量,不能是常量和表达式 。 该运算符对运算对象来说,既可以作为前缀运算符,也可以作为后缀运算符,但结果有所区别 。
2.4.3 逗号运算符和表达式逗号表达式的形式如下:
表达式 1,表达式 2,…,表达式 n
其中:符号,,,为逗号运算符 。
2.5 Turbo C 环境下的上机操作步骤
2.5.1 如 何 进 入和 退 出
Turbo C 2.0
1,进入 Turbo C 2.0
在已安装 Turbo C 2.0软件的目录下,
运行 tc.exe文件 。 该文件运行完毕后,屏幕显示如图 2-1所示的界面 。
图 2-1 Turbo C 2.0软件的主界面屏幕中央显示软件的版本信息,按任一键后即可开始使用该软件 。
Turbo C 2.0软件的主界面分为四部分:
主菜单,编辑窗口,监视窗口和常用功能键提示行 。
当用户按下 E键或 Esc键,光标将定位在编辑窗口的左上角 。 此时用户可以输入
C语言的源程序了 。
2,主菜单功能介绍主菜单共有八项,包含了软件的所有功能 。
File项:文件和目录处理 。
Edit项:编辑 。
Run项:运行状态控制 。
Compile项:编译与链接 。
Project项:工程文件管理。
Option项:选项设置。
Debug项:调试处理。
Break/watch项:断点设置及变量监视。
利用左、右箭头键( ←,→ )可以在主菜单的各项之间进行选择。选中的项在亮度或颜色上与其他项有区别。
这时按回车键便可进入相应的状态或调出相应的下拉子菜单。也可按下 Alt键和主菜单某选项的第一个字母,以快捷键的方式选择某一主菜单项。
在任何情况下按下 F10键都能进入主菜单。
3,编辑窗口上方的编辑信息含义在编辑窗口的上方有一行信息,各项的含义如下 。
Line n,当前光标所在的行号 。
Col n,当前光标所在的列号 。
Insert,插入 /改写方式切换开关。反复按 Ins键,此信息会交替出现。当屏幕上有此信息时,屏幕编辑是处在“插入”状态;当屏幕上无此信息时,屏幕编辑是处在“改写”状态。
Indent,程序行缩进方式。
Tab Fill,可用 Tab键插入制表符。
C:NONAME.C,当前正在编辑的文件名。系统给新文件取的缺省文件名为
NONAME.C。
4,功能键提示行在屏幕底部的一行是功能键提示行,
各功能键的含义如下 。
F1( Help),打开一个,帮助,窗口,
用以查看各种编辑命令 。 按 Esc键返回 。
F5( Zoom),放大 /还原当前活动窗口 。
F6( Switch),在编辑窗口和信息窗口之间切换,以确定当前活动窗口 。
F7( Trace),逐行执行编辑窗口内的程序。
F10( Menu),使光标跳到主菜单。
5,退出 Turbo C 2.0
可用以下两种方法退出 Turbo C 2.0:
( 1) 执行 File下拉菜单中 Quit项 。
( 2) 直接按快捷键 Alt+X。
2.5.2 如何编辑源程序文件编辑源程序文件包括建立新文件和修改已有文件 。
1,建立新文件步骤如下 。
( 1) 选择 File下拉菜单中的 New项,
进入编辑状态 。
( 2)在编辑窗口中输入源程序。
( 3)输入结束后,可选择 File下拉菜单中的 Write to项,输入新文件名(应包括完整的路径)后,保存新文件。
2.修改已有文件步骤如下。
( 1)选择 File下拉菜单中的 Load项,
输入已有文件名(应包括完整的路径)后,
按下 Enter键确认。
( 2)被选择的文件调入编辑窗口后,
就可进行编辑和修改了。
( 3)修改结束后,可选择 File下拉菜单中的 Save项,保存已修改的文件。
注意:无论是新建立的源程序,还是进行修改的老程序,都不要急于运行,应该先将编辑的程序以文件的形式保存到磁盘上,以避免因意外导致输入的源程序丢失。
2.5.3 如何编译和运行程序
1,如何编译源程序当文件建立或修改完毕并存盘后,即可进行编译,具体方法有以下两种 。
( 1) 选择 Compile菜单中 Compile to
OBJ项,进行编译,编译后得到一个后缀为,obj的目标文件,然后再选择 Compile菜单中 Link EXE项,生成一个后缀为,exe的可执行文件 。
( 2)也可将编译和链接合为一步进行,直接选择 Compile菜单中 Make EXE
file项,生成后缀为,exe的可执行文件。
在编译过程中,屏幕的中间会出现一个信息框,显示编译处理时的信息。若编译没有错误,将出现,success”信息,按任意键后返回编辑窗口;若编译出错,在信息框中将显示错误信息。
按任意键后,光标将停在编辑窗口内的出错行上(注意:出错信息并不完全准确,需要根据前后语句进行分析)。这时应进行改错,改错后保存文件,再重新进行编译。
2.如何运行程序运行程序的方法有以下两种。
( 1)确认编译无误后,就可运行程序了。方法是直接按 Ctrl+F9键或在 Run菜单中选择 Run项,程序便可运行。
程序运行完毕后,将返回编辑窗口。
若要查看程序运行结果,应在 Run菜单中选择 User screen项或按 Alt+F5键。看完结果后按任意键返回编辑窗口。
( 2)如果经编译、链接生成了可执行文件(文件名后缀为,exe),这一文件可以独立运行。退出 Turbo C 2.0软件,直接运行该文件即可。