1、C语言的发展1972年贝尔实验室在B语言的基础上设计出了C语言,并用C语言改写了UNIX中90%的程序,直到1975年第六版的UNIX颁布后,C语言得到了计算机界的普遍认可,从此C语言便迅速发展起来,也独立于UNIX系统,成为了世界上较为流行的结构化高级编程语言之一.C语言的特点 (1)是结构化程序设计语言 (2)是模块化程序设计语言 (3)具有丰富的运算能力 (4)具有丰富的数据类型和较强的数据处理能力 (5)具有较强的移植性 (6)具有多种语言的特点 (7)具有较强的通用性C语言的基本符号 大小写英文字母各26个 阿拉伯数字09 特殊符号39个(包括运算符和操作符)Windows下的C语言
2、编译工具 Microsoft C Turbo C Quick C Borland C一个简单的C语言程序C语言的标识符标识符的作用: 在C语言中,标识符主要作为常量,变量,函数及自定义类型的名字使用.标识符的构成规则: (1)标识符必须以英文字母开头,并由字母,数字和下划线组成.如abcd,y105,year_day,d20a都是合法的标识符,而12a,a+b-c则是不合法的. (2)大小写字母的含义不同.如:abcd,ABCD,AbCd是三个完全不同的标识符. C语言的保留字 保留字又称关键字,是C语言编译系统所固有的,具有专门意义的标识符.保留字一般用做C语言的数据类型或语句名.C语言的保
3、留字只有32个. 保留字的使用说明如下:(1)所有保留字的字母均采用小写.(2)保留字不能再作为用户的常量,变量,函数和类型等的名字.(3)在语句中,因该把保留字与数据或句子的其他部分,用空格或其他语言允许的专用字符分隔开.C语言的保留字类型定义存储类型数据类型语句typedefautocharbreakvoidextrndoublecontinuestaticfloatswitchregisterintcaselongdefaultshortifstructelseuniondounsignedforconstwhileenumgotosignedsizeofvolatilereturnC语
4、言程序的基本结构#include /*头文件*/int main(void) /*主函数*/ /*函数开始*/printf(“I love hackbasen”); /*语句*/return 0; /*函数结束*/C语言程序的基本结构#头文件函数名( )变量定义;程序语句; C语言中数据类型的分类C语言中数据类型可以分为:整型,短整型,长整型,无符号整型,无符号短整型,无符号长整型,浮点型,双精度浮点型和字符型.C语言中的变量声明变量类型声明内存容量(字节)数值范围整型int2-3276832767短整型short2-3276832767长整型long4-2147483648 21474836
5、47无符号整型unsigned int2065535无符号短整型unsigned short2065535无符号长整型unsigned long404294967295浮点型float43.4*10-383.4*1038双精度浮点型double81.7*10-3081.7*10308字符型char1-128127C语言中变量声明的基本格式变量类型 变量名;变量类型 变量名=变量值;例如: int a;a=1; int a=1;C语言中的格式化输出函数C语言中的格式化输出函数printf(),可以用来输出各种类型的变量及信息,可以将指定的文字输出至屏幕上显示,并且返回输出的字符数,如果失败,将会
6、返回负值.之所以称之为格式化的输出函数,就是因为它可以定义输出变量的格式.printf函数的格式及含义格式字符(小写字母)说明d以十进制带符号的形式输出整数(对正数不输出符号)o以八进制无符号的形式输出整数(不输出前导符0)x以十六进制无符号的形式输出整数(不输出前导符0 x)u以十进制无符号的形式输出整数c输出一个字符s输出一个字符串f以小数的形式输出单,双精度实数,隐含输出6位小数e以标准指数形式输出单,双精度实数,数字部分小数位数为6位g选用f或者e格式中输出宽度比较短的一种格式,且不输出无意义的0l用于长整型数,可加在格式符d,o,x,u的前边m(一个具体的整数)数据最小的输入输出宽度
7、.n(一个具体的整数)对实数,表示输出几位小数;对字符串,表示截取的字符个数-(负号)输出的数据在域内向左对齐printf转义字符表字符说明a系统提示音(“嘀”的一声)b倒退一格f跳页n换行r机架返回t水平跳格,相当于按TAB键v垂直跳格显示单引号“显示双引号“显示反斜线ddd八进制表示的ASCII码,每个d代表一个八进制数字xdd十六进制表示的ASCII码,每个d代表一个十六进制数字printf函数使用时的注意事项格式说明符应当与所对应的表达式类型一致.比如,输出整型数据时,可以使用格式字符d,o,x,u等.m为 指定的数据输出宽度.如果数据的实际宽度大于m ,则突破m的限制,按数据的实际宽
8、度输出;如果数据的实际宽度小于m,则按m指示的宽度输出,输出时向右对其,左端补空格.负号“-”表示如果数据的输出宽度小于m,则输出时数据向左对其,右端补空格.“%m.nf”表示输出的浮点型数据共占m列(含小数点),其中小数点后有n位数字.“%m.ns”表示输出的字符串共占m列,但只取字符串左端的n个字符.这n个字符输出在m列的右侧,左侧补空格.对于o或x格式符,输出的数值不带符号位,而是将符号位也看做数值的一部分,因此不能直接输出负的八进制或十六进制数.如果想输出字符“%”,则应该在“格式控制”字符串中连续写两个“%”,即两个“%”,表示一个“%”字符.C语言中的格式化输入函数C语言中的格式化
9、输入函数scanf(),可以用来输入各种类型的变量及信息,其中格式控制符及其含义与格式化输出函数printf()的含义相同scanf函数的格式及含义格式字符(小写字母)说明d以十进制带符号的形式输入整数o以八进制无符号的形式输入整数x以十六进制无符号的形式输入整数c输入一个字符s输入一个字符串(字符串以串结束标志0作为最后的一个字符)f用来输入实数,可以用小数的形式或指数形式输入e与f作用相同,e与f可以互换h用于输入短整型数据l用于长整型数,和double型数据(%lf,%le)m(一个具体的整数)指定输入数据的宽度*表示输入项在读入后不赋值给相应变量scanf函数使用时的注意事项(1)可以
10、指定输入的数据所占的列数.系统自动按指定的域宽截取所需要的数据,如:scanf(“%3d%3d”,&a,&b);输入123456,系统自动将123赋给a,将456赋给b.(2)可以使用抑制输入法,即%*表示跳过相应的列数,如:scanf(“%2d%*3d%3d”,&a,&b);输入12345678,将12赋给a,跳过345,将678赋给b.(3)输入数据的时候不能规定精度,如scanf(“%8.5f”,&f);是不合法的.(4)scanf()函数中的“格式控制”后面应该接变量的地址,而不是变量名.(5)如果在“格式控制”串中除了格式说明外还有其他的字符,则输入这些数据的时,这些字符在相应的位置
11、上应原样输入.(6)用“%c”格式字符输入时,空格和“转义字符”都作为有效的输入字符C语言中变量类型的自动转换(1)字符型(char)和短整型(short)必定要先转换成整形(int).(2)单精度型(float)必定要先转换成双精度型(double).(3)若两个操作数之一是double型,则另一项也转换为double型,运算结果为double型;否则,如果两个操作数之一是long型,则另一项也转换成long型,结果为long型;否则,如果两个操作数之一为unsigned型,则另一个也转换为unsigned型,结果为unsigned型.(4)赋值号右边的类型转换为左边的类型,结果为左边的类型
12、.当把右边的浮点型转换成整型时,去掉小数点后的部分;把右边的双精度型转换成单精型时,进行四舍五入处理.C语言中变量类型的强制转换类型的自动转换是系统自动进行的,不需要用户的干预,但是有的时候为了达到某种目的,还必须进行类型的强制转换,不然会出现错误的运算结果.C语言中的赋值运算符赋值运算符是一个等号(=),在编程中,其用途与数学中不同.在C程序中,下面的语句:x=y;指的是将y的值赋给x,而不是x等于y.赋值语句的右边可以是任何的表达式,但是左边必须是一个变量名.C语言中的单目数学运算符单目数学运算符只需要一个操作数.C语言中有两种单目运算符,递增(+),递减(-),操作数均为1,且只能应用于
13、变量,不能用于常量,它们分别对操作数加1和减1.使用范围:+x,x+,-x,x-x为变量.采用前缀时,先执行递增或递减运算,再计算表达式的值.采用后缀时,先计算表达式的值,在执行递增或递减运算.C语言中的双目数学运算符双目运算符接受两个操作数.均为数学运算.使用范围加法x+y,减法x-y,乘法x*y,除法x/y,求模x%y.几种运算符号的顺序均为第1个操作数到第2个操作数的计算.求模运算符(%),是返回第1个操作数除以第2个操作数的余数.例如,11%4结果为3(既11=4*2+3).C语言中的复合赋值运算符符合赋值运算符包括+=,-=,*=,/=,%=,采用复合运算符号主要是为了简化程序,提高
14、编译效率,产生质量较高的目标代码.C语言中的关系运算符C语言中提供了6种关系运算,用来表示两个运算对象之间的大小关系.它们分别是:(大于),=(大于等于),=(等于),!=(不等于).C语言中的逻辑运算符C语言中提供了3个逻辑运算符,它们是!(逻辑非),&(逻辑与),|(逻辑或),C语言中的条件选择语句if语句是分支程序设计中最常用的语句,其作用是,通过对给定条件(表达式)进行判断,决定要执行的操作C语言选择语句的形式C语言中选择语句共分三种形式.if语句的第一种形式:if(表达式) 语句;if语句的第二种形式:if(表达式) 语句1;else语句2;If语句的第三种形式:if(表达式1)语句
15、1;else if(表达式2) 语句2;else if(表达式n) 语句n;else语句n+1;C语言中语句流程图表达式语句假真表达式语句1语句2真假表达式1表达式2表达式n语句1语句2语句n语句n+1假真假真假真C语言中的条件判断语句Switch语句是一个多分支的语句,称条件判断语句,也叫做开关语句.功能相当与多层if循环的嵌套.C语言选择语句的形式Switch-case条件判断语句,一般格式如下:switch(表达式)case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式3:语句3; case 常量表达式n:语句n; default:语句n+1;C语言选择
16、语句的形式使用switch语句时,应注意以下问题:(1)switch语句的表达式和常量表达式可以为任何类型,一般为整型和字符型.(2)同一个switch语句中的所有case后面的常量表达式的值,都必须是互不相同的.(3)switch语句中的各个case和default的出现次序不影响执行结果,default可以在case的前面,中间或最后.(4)由于switch语句中的“case 常量表达式”部分起语句中的标号作用,而不进行条件的判断,因此在执行完成一个case后面的语句后,流程控制会自动转到下一个case继续执行,直到遇到switch语句的又括号后者是“break”语句为止.C语言中语句流程
17、图表达式常量表达式1常量表达式2常量表达式n语句1语句2语句n语句n+1真假假真真breakbreakbreakdefaultC语言中的for循环语句循环语句是算法语言中应用最普遍也是最重要的语句,C语言的循环语句虽然和其他高级语言的循环语句有相似之处,但是在书写上更加显示了C语言的简洁和多边的特点C语言语言中for语句的形式for(表达式1;表达式2;表达式3)语句;C语言for循环的执行流程for语句首先求表达式1的值;其次判断表达式2,不为0(为真)则执行( )后的语句,后求表达式3的值,再返回来判断表达式2,不为0则再次执行( )后的语句.这样一直重复执行表达式2的值为0为止,不再重复
18、操作,而去执行for下面的语句.C语言中for语句流程图表达式1表达式2真语句表达式3假for的下一语句C语言中的循环语句while语句是先计算表达式的值,若值为0(假),则结束循环,推出while语句;若非0(真),则执行循环体中的内容,然后在次判断表达式.do-while语句是先执行语句,然后判断表达式,如果值非0(真),则继续执行语句,直到值为0(假)时,结束循环.C语言中的表现形式while(表达式)语句;do语句;while(表达式);C语言中流程图表达式语句真假语句表达式真假C语言数组的概念及基本属性在C语言当中,如果要使用变量,必须先声明他的名称与数据类型,如果要声明的变量为一群具有相同数据类型与意义的集合,那么便可以使用数组来完成这一声明.数组名称:又可称为数组起始(数组中第一个元素在内存中的地址)数组维度:数组为几维数组各维度上下极限:维度的最大及最小索引值数组类别:数组中的每一元素占内存大小,再乘以各维长度,即表示该数组占内存的大小C语言中数组的声明和初始化一维数组:数据类型 数组名称元素个数;二维数组:数据类型 数组名称列数行数;例:int abc10;float xyz23;int abc10=1,2,3,4,5,6,7,8,9,0;float xyz23=1,2,3,4,5,6;数组abc0123元素值1234数组/值01201231456