学习目标:第一章C语言程序设计基础1)熟悉C程序的基本结构和书写格式;2)熟悉TurboC集成开发环境的使用;3)掌握基本数据类型使用方法;4)掌握变量的定义和初始化方法;5)掌握算术运算、赋值运算、逗号运算符的运算规则。11.1C语言程序结构1.1.1C语言程序的构成【例1-1】一个简单C语言程序。#includestdio.h/*预处理命令*/main()/*主函数mian()*/{printf(Hello,C.\n);/*输出一行信息*/}程序运行结果:Hello,C.21.1.1C语言程序的构成【例1-2】输入两个整数,求较大数。intmax(intx,inty)/*计算两数中较大的数的函数max()*/{/*max()函数体开始*/intz;/*定义变量*/if(xy)z=x;elsez=y;returnz;/*将z的值作为函数值带回调用处*/}/*max()函数体结束*/#includestdio.h/*预处理命令*/intmax(intx,inty);/*对函数max()的声明*/main()/*主函数main()*/{/*main()函数体开始*/inta,b,c;/*定义变量*/scanf(%d,%d,&a,&b);/*输入两个整数*/c=max(a,b);/*调用函数max(),将调用结果赋给c*/printf(max=%d,c);/*调用库函数printf()输出一个整数*/}/*main()函数体结束*/31.1.2函数结构【例1-3】输入两个整数,求两个数之和。#includestdio.hmain(){inta,b,sum;printf(Inputtwonumbers:);scanf(%d%d,&a,&b);sum=a+b;printf(Thesumis%d.\n,sum);}函数体说明语句部分执行语句部分函数说明41.1.2函数结构函数的结构:函数说明{说明语句部分执行语句部分}51.2TurboC集成环境简介1.2.1调试一个C程序编辑源程序→编译源程序,产生目标代码→连接各个目标代码和库函数,产生可执行程序→运行程序。TurboC调试程序的步骤:1)启动TurboC;2)编辑程序;3)运行程序;4)查看结果;5)退出TurboC。61.3基本数据类型程序、算法处理的对象是数据。数据以某种特定的形式存在(如整数、实数、字符),而且不同的数据还存在某些联系(如由若干整数构成的数组)。数据结构就是指数据的组织形式(逻辑结构、物理结构)。处理同样的问题如果数据结构不同,算法也不同,应当综合考虑算法和数据结构,选择最佳的数据结构和算法。C语言的数据结构是以数据类型的形式体现。也就是说C语言中数据是有类型的,数据的类型简称数据类型。例如,整型数据、实型数据、整型数组类型、字符数组类型(字符串)分别代表我们常说的整数、实数、数列、字符串。71.3基本数据类型【例1-4】输入一个整数,求以它为半径的圆的面积。#includestdio.h#definePI3.14main(){intr;floata;scanf(%d,&r);a=PI*r*r;printf(Area=%f,a);}程序运行结果:3↙Area=28.26000081.3.1常量与变量1.常量在程序运行过程中,其值不能被改变的量称为常量。1)常量有不同的类型,如3,-34是整型常量,3.0,3.12,3.1E-2是实型常量,'a','s'是字符型常量。常量的类型通过书写形式来判别。2)符号常量:用命令#define定义符号常量。定义符号常量的格式:#define符号常量名常量例如:#definePI3.1415991.3.1常量与变量【例1-5】符号常量应用#includestdio.h#definePI3.14159/*定义符号常量PI代替3.14159*/main(){intr;floata;scanf(%d,&r);a=PI*r*r;/*编译时系统用3.14159替换PI的位置*/printf(Area=%f,a);}101.3.1常量与变量2.变量在程序运行过程中,其值可以被改变的量称为变量。(1)变量的两个要素变量名。每个变量都必须有一个名字,称为变量名。变量命名遵循标识符命名规则。变量值。在程序运行过程中,变量值存储在系统给变量分配的内存中。在程序中,通过变量名来引用变量的值。(2)变量定义的一般格式数据类型说明符变量名1,变量名2,…;例如:inta,b,sum;111.3.1常量与变量3.标识符标识符是用来标识变量名、符号常量名、函数名、数组名、类型名等实体(程序对象)的有效字符序列。标识符的命名规则:1)由字母、数字和下划线组成,且以字母或下划线开头。2)ANSIC没有限制标识符长度,但各个编译系统都有自己的规定和限制(TC32个字符,MSC8个字符)。如果超长度,则超长部分被忽略。3)字母字符区分大小写。同一个字母字符的大小写,系统认为是两个不同的字符。标识符不能与“关键字”同名。例如:关键字不能作为变量名、符号常量等。系统内部使用了一些用下划线开头的标识符。建议不要定义下划线开头标识符。121.3.2整型数据1.整型常量整型常量就是整常数。不含小数点或指数的数都是整型常量。C语言中的整型常量有十进制、八进制和十六进制三种表示形式。进制书写格式实例错误写法十进制非0开头169,-64,0169.0八进制以数字0012,-027,011十六进制开头以0X或0x开头0x12,-0Xa0,0xA0132.整型变量【例1-6】求两个数45、64之和。#includestdio.hmain(){intx=45,y=64,z;z=x+y;printf(sum=%d\n,z);}1)因为参加运算的数都在基本整型(int)的数据取值范围内,所以定义了三个int型变量x、y和z,分别存储45、64和计算结果。2)定义变量时,变量可以初始化。程序运行结果:sum=109142.整型变量3)整型数据类型。数据类型类型说明符所占字节数数据取值范围短整型short[int]2-215~(215-1)基本整型int2-215~(215-1)长整型long[int]4-231~(231-1)无符号型短整型unsignedshort[int]20~(216-1)基本整型unsignedint20~(216-1)长整型unsignedlong[int]40~(232-1)说明:长整型常量可以在整型常量末尾加L(或l)表示。例如,12L、12l。151.3.3实型数据1.实型常量实型常量有十进制的小数形式和指数形式两种表示形式。表示形式书写格式实例错误的写法小数形式数字和点-2.0,2.0,2.,0.2,.22指数形式aE(或e)n0.314E1,31.4e-1,3e-2E2,e2,0.314e1.01)指数形式表示的实型常量由小数和指数部分组成,其表示形式不是唯一的。其中,小数部分的小数点前只出现1位非零数字的表示方法叫做规范化的指数形式。2)当一个数的绝对值很大或很小时,采用指数形式表示。162.实型变量【例1-7】求半径为6.5的圆的周长和面积。#includestdio.h#definePI3.14159main(){floatr=6.5,l,a;l=2*PI*r;a=PI*r*r;printf(l=%f,a=%f\n,l,a);}程序运行结果:l=40.840672,a=132.732178172.实型变量说明:1)参加运算的数都有小数部分,因此,定义了三个实型(float)变量r、l和a。2)实型变量有单精度型和双精度类型。数据类型类型说明符所占字节数数据取值范围有效数位单精度型float4-10-38~10386~7双精度型double8-10-308~1030815~16181.3.4字符型数据1.字符型常量一个字符括在两个单引号内表示字符型常量,在内存中占一个字节。例如:′a′、′A′、′5′、′%′说明:1)单引号是字符常量的定界符,不是字符常量的一部分。2)内存中字符常量存放的是相应的ASCII码值。例如,′a′和′A′的ASCII码值分别是97和65。191.3.4字符型数据2.转义字符对无法书写出来的字符常量,用以反斜杠“\”开头的转义字符表示。转义字符含义转义字符含义\n回车换行\\反斜线字符“\”\t到下一个制表位\′单引号字符“′”\v垂直跳格\双引号字符“”\b退格\a鸣铃\r回车\ddd1~3位八进制数所代表的字符\f走纸换页\xhh1~2位十六进制数所代表的字符201.3.4字符型数据3.字符型变量字符型数据类型说明符为char,系统分配一个字节。【例1-8】字符处理程序。#includestdio.hmian(){charch1=′a′,ch2=′A′;printf(\a);printf(ch1=%c\n,ch1);printf(ch2=%c\n,ch2);}程序运行结果:(听到“叮”的一声后,显示下面结果)ch1=ach2=A211.3.4字符串常量字符串常量(简称字符串)是由一对双引号括起来的0个或多个字符序列,内存中一个字符占一个字节。例如:″Hello″、″01234567″、″A″说明:1)双引号是字符串常量的定界符,不是字符串常量的一部分。2)系统存储字符串常量时,给每个字符分配一个字节外,多分配一个字节用来存储字符串结束标志′\0′。3)字符串常量中的字符个数,叫做字符串长度。4)不要混淆变量、字符常量、字符串常量的概念和表示方法。221.4常用运算符和表达式在日常生活中经常需要进行算术运算,程序中也需要计算各种数据。要在程序中实现计算功能,可以使用运算符组成表达式得到运算结果。表达式是用各种运算符把运算对象(也叫操作数)连接起来的合法式子。C语言中的运算符都有优先级和结合性,不同的运算符需要的运算对象个数也不同。运算对象为一个的运算符叫单目运算符,两个的叫双目运算符。231.4.1算术运算符和算术表达式为了解决数值计算方面的问题,C语言提供了算术运算符。运算符+-*/%++--+-作用加法减法乘法除法求余自增自减取正取负运算对象个数222221111优先级低中高结合性自左至右自右至左241.基本的算术运算符基本算术运算符有五种:+、-、*、/、%1)加、减、乘三种运算符的运算对象可以是整型和实型,它们的运算规则与数学中的规则相同。2)除法运算符的运算对象也可以是整型和实型,但是运算规则与数学中的规则不同。如果运算对象为实型(至少一个是实型)运算结果是实型的。如果两个运算对象均为整型,运算结果为整型。C语言规定:两个整型相除,结果为整型,小数部分被舍弃。可以利用这个规则,方便地解决整数运算中,求商的问题。3)求余运算符的两个运算对象只能是整型数据,不能是实型,运算结果是两数相除后得到的余数。251.基本的算术运算符【例1-9】求用23除95,所得的商和余数。#includestdio.hmain(){inta=23,b=95,s,y;s=b/a;y=b%a;printf(s=%d,y=%d\n,s,y);}程序运行结果:s=4,y=3262.自增和自减运算符C语言提供了两个有用的特殊运算符“++”、“--”。它们的作用是使变量的值增加(减少)一个单位。例如:x++(或++x)等价于x=x+1,x--(或--x)等价于x=x-1。1)自增(减)运算作为单目运算符有前置和后置两种用法。前置是先计算自增(减)运算,然后才使用操作对象的值再参加其它运算;后置是操作对象先参加其它运算,然后才计算自增(减)运算。2)在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。3)自增、自减运算符的操作对象只能变量,而不能用在常量或表达式。273.算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为算术表达式。运算对象可以是常量、变量、函数等。例如:数学表达式b2-4acC语言表达式b*b-4*a*c281.