c语言的基础学习_第1页
c语言的基础学习_第2页
c语言的基础学习_第3页
c语言的基础学习_第4页
c语言的基础学习_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它D.M.Ritchie于1972。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。具体以及嵌入式系统开发。1优点简洁紧凑、灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。运算符丰富 运算符:括号、赋值、强制类型转换等,共有34种运算符。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。 数据类型丰富 C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结

2、构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。C语言具有强大的图形功能,支持多种显示器和驱动器。同时对于不同的编译器也有支持引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 2语法限制不太严格,程序设计自由度大 虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。 允许直接访问物理地址,对硬件进行操作 它把高级语言的基本结构和语句与低级语言的实用性结合起来。允许直接访问物理地址:可以像汇编语言一样对位、字节和地址(这三者是计算机最基本的工作单元)进行操作。 生成目标代码质量高,程序执行效率高 一般只比汇编程序

3、生成的目标代码效率低1020%。 适用范围大,可移植性好 C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX、windows 98windows NT;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。结构式语言显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3缺点1 C语言的缺点主要表现在数据的封

4、装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C+的一大区别。 2 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。4入门1一个C语言源程序可以由一个或多个源文件组成。 2每个源文件可由一个或多个函数组成。 3一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 4源程序中可以有预处理命令(包括include 命令、if命令、pragma命令).预处理命令 通常应放在源文件或源程序的最前面。 5每一个说明,每一个语句都必须以分号 ; 结尾。但预处理命令 函数头 花括号

5、之后不能加分号。 6标识符,关键字之间必须加至少 一个空格 以示间隔。若已有明显的间隔符,也可不再加空格来间隔。5特色C:指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C+:在指针这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java:则吸取了C+的教训,取消了指针操作,也取消了C+改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于

6、C+/C。程序使用榜的前三名C,C+,java同一系的语言。6C :是最起初的语言, 更多的是面向过程.然后是C+,C#是最近微软推出的。C+:算是C的升级,但是其中一些语言发生了变化。最近微软推出.C#:微软极度不情愿用J这样的称谓,所以就出现了.最近微软推出.Java:原名OAK,从C+中脱胎而来的。目前用的比较多的是JAVA,语言简单,易编程(对人而言).纯JAVA语言编写的程序不受平台限制。足够强大,没有C+的繁杂(摒弃了多继承这点就很好).论实质JAVA其实还是称为C语言的子集比较客观(语法几乎没区别)72022/7/288C程序的执行过程 1源程序文件的建立和编辑 编写源程序,形成

7、 .C文件需用编辑工具:tc.exe、记事本2编译 编译源程序,形成目标程序 . Obj文件需用编译工具 :tcc.exe3连接 连接OBJ文件和调用的库函数,形成运行程序 .exe 文件需用连接工具 :tlink.exe4运行 .exe 文件C程序由函数构成必须有,且只能有一个main(主函数)总是从main函数开始执行函数由函数首部和函数体组成函数首部指定函数名、函数参数、类型函数体从 开始,到 结束函数内有语句语句包括说明性语句、可执行语句以 ;表示语句结束注释可以出现在程序的任何位置 用 /* 和 */ 括起来,必须成对出现书写格式C语言没有行的概念,书写格式自由。习惯小写字母,缩进格

8、式。9运算C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。运算符按优先级不同分类.C程序设计运算符可分为15种优先级:决定同级运算符的运算顺序.优先级(排名)从高到低为:1 15.右至左结合:213 14左至右结合:1312 15102022/7/2811关系、等式和逻辑运算符关于优先次序,=为同一级别, =和!=为同一级别。在同一级别中,采取由左至右的结合方向。 算术运算符关系运算符赋

9、值运算符高低例 ca+b c(a+b)ab!=c (ab)!=ca=bc a = = (bc a = (bc) 等式运算符算术运算符和算术表达式基本算术运算符: + - * / %结合方向:从左向右优先级: - -* / % - + - (2) (3) (4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据+ - * / 运算的两个数中有一个数为实数,结果是double型例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10

10、 = 1 5%1 = 0 5.5%2 ()12自增、自减运算符+ 作用:使变量值加1或减1种类:前置 :先加钱再做事(少) +i, -i (先执行i+1或i-1,再使用i值)后置 :先做事再给钱(多) i+,i- (先使用i值,再执行i+1或i-1)例j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4,j=4/3,j=4/c=20,a=4/c=15,a=413几点说明:例 -i+ i=3; printf(“

11、%d”,-i+); -(i+)/-3 + - 不能用于常量和表达式,如 5+,(a+b)+ - 结合方向: 自右向左优先级:- + - -* / % -+ - (2) (3) (4)该运算符常用于循环语句中,使循环变量加减1有关表达式使用中的问题说明不同系统对运算符和表达式的处理次序不同,尽可能写通用性强的语句不要写有歧义和不知系统如何执行的程序142022/7/2815赋值运算符和赋值表达式1.赋值运算符:“=” 。2.复合赋值运算:在赋值符号前加上其它运算符号。 +=,-=,*=,/=,%=,=,&=,=,|= 例如: a + = 3; 等价于a = a + 3; x * = y + 8;

12、 等价于x = x * ( y + 8 ); x % = 3; 等价于x = x % 3;赋值运算符仅优先于“,” ,且具有右结合性例如: a= b= b*c 等价于:a= (b=(b*c) )赋值号与数学中的等号含义不同例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a3.赋值运算中的类型转换 = 小数部分自动补0 = 自动舍去实型表达式的小数部分(注意不进行四舍五入) = = 自动截取表达式值的低字节赋值,舍去高字节 = = 自动给高字节补0 或补116数据类型、运算符与表达式 运算符和表达式4.赋值表达式: 由赋值运算符将一个变量和一个表达式连接起来的式子。 一般形

13、式为:例如:int a=12;求下列运算的结果 aaa * a aaa * a=12-12 * 12=-132)a-132aa(-132)=(-132)+(-132)=-264a=-264172022/7/2818数据类型、运算符与表达式3.10 逗号运算符和逗号表达式逗号运算符又称为“顺序求值运算符”,是所有运算符中级别最低的,它将两个表达式连接起来。 一般形式为:表达式1,表达式2求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。 例如: a=3*5, a*4; a的值为15,表达式的值为60 (a=3*5, a*4), a+5; a的值为15, 表达式的值为2

14、0 又如: x=(a=3, 6*3); x的值为18 x=a=3, 6*a x的值为3, 表达式的值为182022/7/2819数据输入输出的概念 1. 所谓输入输出是以计算机主机为主体而言的。主机向外部设备 “输出” ,外部设备向主机“输入”。 2.C语言本身不提供输入输出语句,输入和输出操作是由函数实现。 C语言通过调用四个系统函数来实现输入输出。 printf(),scanf(),getchar(), putchar() 3.在使用C语言库函数时,要用到预编译命令“#include”将有关的“头文件包括到用户源文件中。 在调用标准输入输出库函数时,文件开头应有以下预编译命令: #incl

15、ude 或 #include”stdio.h”程序包括两方面内容:1.对数据的描述:数据元素及各元素之间的关系,即数据结构。2.对操作的描述:即操作步骤,也就是算法。程序 = 数据结构 + 算法程序 =数据结构 + 算法 + 程序设计方法 + 语言工具环境说明:高级语言的数据结构是以数据类型来体现的。209种控制语句:主要用于循环/判断1.if(判断体&) 循环体 ;/不满足就到else或停止,运行(末值-初值)次/ else 循环体 ;/不满足就停止,运行(末值-初值)次/2.for(循环体初值,;判断体;循环体) 循环体; /不满足就停止,运行(末值-初值)次/3.while(a ) 循环

16、体;/a为0就停止,运行a次循环体,至少运行0次/4.do循环体;while( a);/a为0就停止,运行a次循环体,至少运行1次/215.Continue/结束本次循环,回到开头/6.Break/结束本轮循环,去到末尾/7.Switch(int/char)case 1/a:;break; case 2/b:;break;.default: ; /上面不满足就到下面/8.Goto9.return225类C语句 和其他高级语言一样,C语言的语句也是用来向计算机发出操作命令的。一条语句经过编译后生成若干条机器指令。在C语言中只有可执行语句,没有非执行语句。23 控制语句,完成一定的控制功能 if(

17、 ) else (条件语句) for( ) (循环语句) while( ) (循环语句) do while ( ) (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) Switch (多分支选择语句) goto (转向语句) return (从函数返回语句)24 函数调用语句,由一次函数调用加一个分号构成一个语句, 如:printf (“This is a C statement.”); 表达式语句,由一个表达式构成一个语句, 如: a=3 (是表达式,不是语句) a=3; (是语句) 空语句,只有一个分号,什么也不做; 复合语句,用 把一些语

18、句括起来成为复合语句。相当一条语句,哪里有语句,哪里就可用复合语句。 if (ab) max=a; min=b; 复合语句最后一个语句中最后的分号不能忽略不写。2534种运算符算术运算符 :+ - * / % + -关系运算符 : = !=逻辑运算符 :! & |位运算符 : | &赋值运算符 := 及其扩展条件运算符 :?:逗号运算符 :,指针运算符 :* &求字节数 :sizeof强制类型转换:(类型)分量运算符 :. -下标运算符 :其它 :( ) -262022/7/2827关系、等式和逻辑运算符逻辑运算符的优先级! & | 逻辑运算符 “&” 和 “|” 低于关系运算符,“!”高于算

19、术运算符 ab & xy 相当于: (ab) & (xy) a=b|x=y 相当于: (a=b) | (x=y) !a | ab 相当于: (!a ) | (ab)! 算术 关系 逻辑 赋值C语言提供的数据结构是以数据类型形式出现的数据在内存中存放的情况由数据类型决定 数据的操作要依靠运算符实现数据+运算符=表达式28常量和符号常量常量:在运行过程中,其值不能被改变的量称为常量。 4类:整型实型字符字符串符号常量:用一个标识符代表的常量。 习惯上符号常量名用大写,变量用小写,以示区别。类型示例直接常量整型常量12 、 0 、 -3实型常量4.6 、 -1.23字符常量a 、 b 符号常量PRI

20、CE 、 PAI29符号常量:用标识符代表常量一般用大写字母: PRICE 、 PI定义格式: #define 符号常量 常量其值在作用域内不能改变和再赋值。例3.1 符号常量举例#define PRICE 30#include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300运行结果:符号常量的优点是:见名知意、一改全改30标识符定义:标识变量名、符号常量名、函数名、数组名、 文件名的字符串序列名字。命名规则:只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线大

21、小写字母含义不同,一般用小写不能使用关键字TC允许最长32个字符,建议长度不超过8个字符使用:先定义、后使用标识符应该“见名知意”,如 total , max标识符应该“不宜混淆”,如 l与1 , O与031变 量变量:在程序运行过程中,其值可以改变的量称为变量。标识符:用来标识变量名、符号常量名、函数名、类型名、数组名、文件名的有效字符序列称为标识符。 由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。合法的变量名如: average,abd, a, s2, student_name, _init不合法的变量名:M.D.John, 1a, #33, abC 语言要求对变量:“

22、先定义,后使用”。32变量 定义:其值可以改变的量。 定义格式:数据类型 变量名; 变量应该有名字,并在内存中占据一定的存储单元。 变量名和变量值有不同的含义变量名实为一个符号地址 a3例 变量的使用main() int a; a=3; printf(“a=%d,a);变量名变量值存储单元33字符型数据1.字符常量:用一对单引号括起来的单个字符,称为字符常量。例如,A、等。2.转义字符:语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ”开头的字符序列。0字符串结束标志n回车换行t跳到下一个输出位置双引号字符dddddd为1到3位八进制数所代表的字符65 =A=101xhhhh为1到2位十

23、六进制数所代表的字符65=A=x4134C的数据类型C数据类型基本类型构造类型指针类型空类型 void字符型 char整 型实 型(浮点型)单精度型 float双精度型 double数组类型结构体类型struct共用体类型union短整型 short长整型 long整型 int枚举类型 enum数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 可以进行的操作35doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例 char ch; int i; float f; double d;ch/i + f*d - (f+i)in

24、tintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;36广义的语句结构顺序结构、选择结构和循环结构的联系顺序结构、选择结构和循环结构并不彼此孤立的,在循环中可以有选择、顺序结构,选择中也可以有循环、顺序结构在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序.但如果要编程的问题较大,编写出的程序往往就很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序

25、设计成模块化结构。37程序的3种基本结构顺序结构程序:按照书写顺序依次执行语句选择结构程序:按照条件判断选择执行语句循环结构程序:通过条件控制循环执行语句AB开始/入口结束/出口ABPT FPA顺序结构程序选择结构程序循环结构程序结束/出口结束/出口开始/入口开始/入口PA结束/出口开始/入口T 38顺序结构顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。 例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序(右倒入左)为:c = a; a = b; b

26、 = c;执行结果是a = 5,b = c = 3。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构.例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如选择结构中的复合语句、循环结构中的循环体等。 39选择结构(分支结构)顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程

27、序设计方法的关键:在于构造合适的分支(选择)条件和分析程序流程,根据不同的程序流程选择适当的选择语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都可以把程序设计分析与语言分开,使得问题简单化:先绘制其程序流程图:根据解题分析所绘制的程序执行流程图.然后根据程序流程写出源程序.40循环结构循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。四种循环可以用来处理同一问题.一般情况下它们可以互相代替换,但一般不提倡用goto

28、循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。 特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。 三个循环的异同点: while循环、do while循环和for循环都可用continue语句结束本次循环.break语句跳出循环循环变量的初始化的操作在循环体之前: while和dowhile循环.在语句1中进行的: for循环;先判断表达式,后执行循环体:while循环和for循环.可能一次都不执行.先执行循环体,后判断表达式: dowhile循环.最少被执行一次.注:goto语句与if构成的循环,不能用b

29、reak和 continue语句进行控制的。 41模块化程序结构C语言的模块化程序结构用函数来实现:先将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写.因此,常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。4232关键字关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等 由ANSI标准定义的C语言关键字共32个: auto double int struct break else long switch case enu

30、m register typedef charextern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 43 数据类型关键字A.基本数据类型(5个)void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种B .类

31、型修饰关键字(4个)short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型C .复杂类型关键字(5个)struct:结构体声明 union:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小D .存储级别关键字(6个)auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配 static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部 register:

32、指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数 extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变) volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值44 流程控制关键字A .跳转结构(4个)return:用在函数体中,返回特定值(或者是void值,即不

33、返回值) continue:结束当前循环,开始下一轮循环 break:跳出当前循环或switch结构 goto:无条件跳转语句B .选择结构 (5个)if:条件语句,后面不需要放分号 else:条件语句否定分支(与if连用) switch:开关语句(多重分支语句) case:开关语句中的分支标记 default:开关语句中的“其他”分支,可选。C .循环结构(3个)for:for循环结构,for(1;2;3)4;的执行顺序为1-2-4-3-2.循环,其中2为循环条件。在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次

34、都不执行。 do:do循环结构,do 1 while(2); 的执行顺序是1-2-1.循环,2为循环条件 while:while循环结构,while(1) 2; 的执行顺序是1-2-1.循环,1为循环条件 以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。45经典错误: void main()void main()的用法并不是任何标准制定的,是Microsoft制定的。大部分编译器不支持这种写法。C语言正确的语法是int main(void)。在 C+ 标准中,虽然 main 的标准型态应是int,但编译器实现中也可以自行定义型态,不过,所有实现均应接受 int main(void)的。如果坚持使用void main()会使C程序失去跨平台的移植特性。46开发环境常用的C语言IDE(集成开发环境):Microsoft Visual C+Dev-C+Code:BlocksBorland C+Watcom C+Borland C+ BuilderGNU DJGPP C+Lccwin32

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论