C语言笔记_精品文档.doc
《C语言笔记_精品文档.doc》由会员分享,可在线阅读,更多相关《C语言笔记_精品文档.doc(14页珍藏版)》请在冰豆网上搜索。
C语言笔记
C语言概诉
C语言是国际上广泛流行的高级语言。
1963年,剑桥,CPL语言,更近硬件,但规模大,难以实现.
1967年,剑桥,MartinRichards,简化,BCPL语言.
1970年,美国贝尔实验室,KenThompson,简化,B语言,写第一个UNIX系统.
1972~1973年,贝尔实验室,D.M.Ritchie,B语言基础上,设计出C语言,克服B语言的过于简单、功能有限的不足.
1973年,K.Thompson和D.M.Ritchie合作将UNIX的90%以上用C改写.
1978年以后,C语言已先后移植到大、中、小、微型机上已独立于UNIX和PDP,得以广泛应用。
1.1C语言
1.诞生:
1972年美国贝尔实验室研制
2.发展:
78年标准C(旧标准)80年代初开发产生C++83年ANSIC(新标准)
1.2C语言的特点
1.高级语言和汇编语言之间的高级语言;既能直接访问硬件,又面向用户
2.结构化程序设计语言,易读、易维护;顺序、选择和循环三种结构
3.便于模块化程序设计的语言;函数结构
4.具有丰富的数据类型和丰富灵活的运算符;数据类型:
基本类型和复合类型;运算符:
32种
5.具有预编译功能,开发效率高;
6.具有较高的移植性;不依赖于硬件的输入/输出机制
C语言程序的书写规则:
习惯用小写字母,大小写敏感不使用行号,无程序行概念;通常一个语句占一行可使用空行和空格常用锯齿形书写格式;同一层次结构的语句上下对齐。
算法与程序设计基础
计算机语言:
是规则和符号的集合,是与计算机交流的工具。
必须具有数据表达和数据处理(流程控制)的能力。
程序:
求解问题的指令序列
软件:
程序的集合
学软件:
学思想、学功能、学操作。
熟练工种
学语言:
学规则、学方法、学设计、学应用。
规范学习,灵活应用
一个程序应包括两个方面的内容:
对数据的描述:
数据结构,对操作的描述:
算法
完整的程序设计应该包括四部分:
程序设计=数据结构+算法+方法+工具
数据元素:
数据的最小单位数据结构:
数据元素的组织形式
一个正确的程序通常包含两方面的含义:
一是书写正确,二是结果正确。
书写正确是指程序语法正确,符合程序语言的规则;结果正确是指对应于正确的输入,程序能够得到所期望的输出。
1.顺序结构程序按照语句的书写次序顺序执行。
2.选择结构通过判断特定条件,选择一个分支执行。
3.循环结构在给定条件下,反复执行循环体,直到条件不满足为止.
算法的概念:
算法:
完成一项任务的具体步骤计算机语言的别名:
算法语言
一个算法,就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。
”任何解决问题的过程都是由一定的步骤组成的,把解决问题确定的方法和有限的步骤称作为算法。
算法的常用表示方法:
自然语言传统流程图结构化流程图
自然语言特点:
描述算法通俗易懂,容易产生歧义。
对复杂问题,语句繁琐、冗长,并且很难清楚地表达算法的逻辑流程,往往需要根据上下文判别其含义,尤其对描述含有选择、循环结构的算法,不太方便和直观,一般不常使用。
传统流程图缺点:
使用者可以毫不受限制地使流程随意地转向,使流程图变得毫无规律,难以阅读、修改,使算法的可靠性和可维护性难以保证。
解决办法:
必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序的进行下去。
N—S流程图
由美国学者I.Nassi和B.Shneiderman提出表示算法的图形工具。
基本单元是矩形框,用不同的形状线分割,表示三种结构。
只有一个入口,一个出口,没有流程线。
N--S图的优点
比文字描述直观、形象、易于理解;比传统流程图紧凑易画。
尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,N--S流程图中的上下顺序就是执行时的顺序。
三种基本程序结构的N–S流程图1.顺序结构2.选择结构3.循环结构
几种常用算法介绍
1.枚举法(穷举法)特点:
算法简单,容易理解,运算量大。
2.递推法(迭代法)
3.求最大值、最小值问题
结构化程序设计方法
结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则。
结构化程序设计方法主要包括:
①只采用三种基本的程序控制结构来编制程序,从而使程序具有良好的结构;
②程序设计自顶而下;
③用结构化程序设计流程图表示算法。
数据类型、运算符与表达式
C语言的基本符号
C语言的基本字符集
数字:
0123456789
字母:
abc……zABC……Z
运算符:
+-*/%=<><=>=!
=
==<<>>&|&&||^~()
[]{}->.!
?
:
;“‘
特殊符号:
_(下划线)回车(\r)换行(\n)制表符(\t)
基本标识符:
变量名、函数名、文件名、数组名、类型名
规则:
字母或下划线开头,后面是字母、下划线或数字
C语言的关键字:
保留字(32个)auto breakcasecharconst
continuedefaultdodoubleelseenumexternfloatforgotoif int longregisterreturnshort signedsizeostaticstructswitchtypedefunionunsignedvoidvolatilewhile
在程序运行中,其值保持不变的量称为常量。
常量的表示方法:
数值常量例如:
10,3,2.68等
符号常量用一个符号代表一个常量
变量:
变量通过变量名标识,变量名和内存中的存储单元相对应。
编写程序时通过变量名来存、取存储单元。
变量必须先定义,后使用。
命名规则:
变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
说明:
*变量要“先定义,后使用”
定义格式:
类型说明符标识符1,…,标识符n
例如:
intx,y,z;
floata,b,c,d;
*选变量名时,要做到“见名知义”
例如:
name,st_age,xm,nl,class,sum
许多程序设计语言都把它们能处理的数据分成若干类,这些类就是数据类型。
为什么要划分数据类型?
①不同类型的数据在计算机内表示不同;
②不同类型的数据能执行的运算不同;
③计算机能处理的问题中的数据是广义的。
变量名代表内存中的存储单元,变量的类型决定存储单元的大小。
C语言数据类型:
整型
字符型精度型
算术类型实型(浮点型)
基本类型枚举类型双精度型
指针类型
数据类型
数组
构造类型结构体类型
共用体类型
整型:
基本整型int短整型shortint长整型longint
无符号整型unsignedint无符号短整型unsignedshort无符号长整型unsignedlong
实型:
实型变量分类:
单精度、双精度和长双精度型。
实型数据在内存中的存放形式:
实型数据也称为浮点数,是指小数点位置可以任意浮动的数。
科学记数法表示:
十进制数-12345678可表示为:
-12345678=-1.2345678Í107
计算机中采用以2为底的科学记数法存储:
N=数符Í尾数Í2阶码
(其中:
数符0为正,1为负,尾数和阶码都用二进数表示)
二进制数可表示为:
110.011(B)=1.10011×2+10
尾数的位数决定数的精度,阶码的位数决定数的范围
由于机器存储位数的限制,浮点数都是近似值,多个浮点数运算会产生误差。
双精度型用于扩大存储位数,目的是增加实数的长度,减少累积误差,改善计算精度。
将实数分成两类:
浮点数(Float)和双精度数(Double)。
浮点数用32位表示:
数符1位,阶码8位,尾数23位
双精度数用64位表示:
数符1位,阶码11位,尾数52位为了处理负指数的情况
单精度浮点数机内存储格式(占4个字节,32位)
单精度实数的精度取决于小数部分的23位二进制数位所能表达的数值位数,将其转换为十进制,最多可表示7位十进制数字,所以单精度实数的有效位是7位。
实型常量(实型常数不区分单精度和双精度)
两种表示形式:
十进制数形式:
由数字和小数点及正负号组成。
(注意:
必须有小数点)例如:
23.678.67823.
指数形式:
由数字、小数点、字母e或E及正负号组成。
(注:
e或E之前必须有数字,且后指数必须为整数)例如:
3.5E-52e3
1.字符常量
用单引号括起来的一个字符(只能包含一个字符)
例如:
‘a’‘A’‘$’‘!
’‘abc’、“a”注:
‘a’与‘A’是不同的字符常量。
转义字符:
转义字符的概念:
是一种特殊的字符常量,用于表示常用的、但却难以用一般形式表示的不可显示字符。
转义字符的表示:
用一个转义标识符“\”开头,后面是需要的转义字符。
常用的转义字符序列的字符常量见下表:
转义字符功能
\n换行
\v垂直制表
\b退格
\r回车
\f走纸换页
\t跳到下一个制表位(8列)
\\反斜线字符
\'单引号字符
\