C语言程序设计
- 格式:doc
- 大小:86.00 KB
- 文档页数:6
简单地说,程序主要用于描述完成某项功能所涉及的对象和动作规则。通常,一个计算机程序主要描述两部分的内容,其一是描述问题的每个对象及它们之间的关系,及数据结构的内容;其二,是描述对这些对象进行处理的动作、这些动作的先后顺序以及它们所作用的对象,要遵守一定的规则,即求解某个问题的算法。
程序=数据结构+算法
编写程序的工具就是程序设计语言;
程序设计语言有许多种,按照程序设计语言发展的过程,大概分为3类:机器语言、汇编语言和高级语言。
下面这3行就是某计算机的机器指令,功能计算A=15+10的值;
10110000 00001111
00101100 00001010
11110100
首先,把15累加器A中,然后让10 与累加器A中的值相加,结果仍放入A中,最后结束,停机C
MOV A , 15 :把15故人累加器A中
ADD A , 10 :10与累加器A中的值相加,结果仍故人A中
HLT :结束,停机
高级语言是有表达各种意义的英文单词和数学公式按照一定的语法规则来编写程序的语言
用户不再考虑计算机及的内部结构和硬件环境,可以集中精力考虑算法和数据结构,因此编程效率大大提高。
翻译程序分为两种:一种是解释系统,另一种是编译系统,解释系统是对高级语言编写的程序翻译一句执行一句,而编译系统是将高级语言编写的程序文件全部翻译成机器语言,生成可执行文件以后再执行,高级语言几乎在每一结构都有自己的翻译程序。C语言的翻译系统属于编译系统。
(1)面向过程的语言致力于用计算机能够理解的逻辑来描述需要解决的问题和解决问题的具体方法、步骤。在程序中不仅要告诉计算机“做什么”,还要告诉计算机“怎么做”,鸡仔程序中BASIC、PASCAL、C 等。
目前应用最广泛的面向问题的语言有SQL等。
面向对象的语言是将客观视为看做具有属性和行为的对象,通过抽象找出同一类对象的共同属性和行为,形成类。通过类的继承与多态可以很方便地实现代码重用。这大大地提高了程序的复用能力和程序开发效率。面向对象语言已是程序语言的主要研究方向之一。面向对象的语言有C++、JAVA、VB等。
结构化程序设计方法具有以下特点:
(1)自顶而下
(2)逐步细化
(3)模块化设计
(4)结构化编码
(5)出于模块相互独立,因此在设计其中一个模块式,不会受到其他模块的牵连,因而可将原来较为复杂的问题简化为一系列简单模块的设计。模块的独立性还为扩充已有的系统,建立新系统带来不少的方便,因为我们可以充分利用现有的模块做积木式的扩展。
按照结构化程序设计的观点,任何模块可以通过3中基本程序结构和循环结构组合来实现。3中基本结构应具有如下良好的特征:
(1)只有一个入口,即每个模块与外部联系只有单一的入口;
(2)只有一个出口,及每个模块与外部联系只有一个单一的出口; (3)无死语句,即不存在永远都执行不到的语句;
(4)无死循环,即不存在永远都执行不完的循环;
每个模块根据其功能先编写程序框架,逐步涉入,直到精确地编写存储每一个程序结构
要用计算机解决实际问题,首先用理想模型模拟实际问题;理想模型是从实体中抽象出用数学表达式精确定义的实体。建立数学模型的过程就是把错综复杂的实际问题进行简化抽象。
一般来说,从实际问题抽象出数学模型通常是有关领域的专业工作者的任务。计算机工作人员只起辅助作用。程序设计人员的工作,最关键的一步就是设计算法。算法是指为解决某一特定的问题而进行一步一步有穷的操作过程,是一组规则的集合,可以用流程图来表示算法。编写程序代码之前,设计好算法,画出流程图,往往会起到事半功倍的效果。
算法可以分为两大类:数值计算算法和非数值计算算法。数值计算算法的目的是求数值解,其特点是少量的输入、输出,复杂的运算,如求高次方程的根,求函数的定积分等。非数值的计算算法的目的是对数据的处理,其特点是大量输入,输出,简单的运算,例如,对数据的排序,查找等算法。
如果算法正确,将他转化为任何一种高级语言程序,并不困难,这一步通常称为编码。
现在的程序设计语言一般都是一个集成开发环境,自带编辑器,方便编辑程序,编写好的程序代码通过编辑器输入到计算机内,利用编辑器可对输入的程序代码进行复制、删除、移动等编辑操作,然后以文件(源程序)形式保存。
把程序看做一个透明的白盒子,也就是完全了解程序的内部结构和处理过程。
白盒测试一般由计算机专业人员进行。
编写程序文档
在程序准确无误后,要认真编写程序文档。文档包括设计要求、设计思路、设计过程、使用的算法、数据结构、输出的信息及格式等,在源程序中用用注释预计加上必要的说明。如果没有程序文档,编制的程序一段时间后自己也看不懂,更不要说给别人看,对此要引以为戒,要学会从学习程序设计开始就养成练哪个好ide习惯。
它具有许多通常只有想汇编语言才具备的功能,如位操作、直接访问物理地址。
C语言具有丰富的运算能力。在C语言中除了一般高级语言使用的算术及逻辑运算功能外,还具有的以二进制位(bit)为单位的位于、位或、位非以及移位操作等运算。并且C语言具有如a++、b--等单项运算和+=、-=等符合运算功能。
C语言数据类型丰富,具有现代化语言的各种数据类型。C语言的基本数据类型有整形(INT)、浮点型(float)、字符型(char)、在此基础上按层次可产生各种构造类型,如数组、指针、结构体、共用体。同时还提供了用户自定义数据类型。用这些数据类型可以实现复杂的数据结构,如栈、链表、树等。因此C语言具有较强的数据处理能力。
#Include "stdio.h"
Void main(void)
{
Printf("This is a C program.\n");
}
运行结果:
This is a C program.
文件stdio.h为输入和输出提供支持,在本程序中的Printf(“This is a C program.\n};语句的执行需要stdio.h的支持,没有它,程序坚固能通过编译系统的翻译。
要熟悉格式字符串
通常我们总会把main()函数该在程序中其他函数的前面。
注释不允许嵌套。 Scanf()函数的格式
控制语句的用户与控制程序的流程,以实现程序的各种结构。
用于选择结构的控制语句
If()~~~else~~~条件语句
Switch()~~~多分支选择语句
用于循环结构的控制语句
While()~~~循环语句
Do~~~while()循环语句
For()~~~循环语句
用于辅助控制
Break终止循环或Switch流程语句
Continue 结束本次循环语句
其他语句
Return从函数返回语句
Goto标号 转向语句
空语句在语法上占据一个语句的位置,但是他不执行任何功能,空语句在程序中经常作为循环体使用,例如:for(i=0;i<1000;i++)
+、-、*、/、%、<、<=、>=、==、!=、&&、||、!、++、--、?:、<<、>>、()、[、]、.、->、+=、-=、*=、/=、^、#、sizeof
为了避免出错和增加可移植性,标识符最好前8个字符有所区别。
另外,尽量避免使用容易混淆的字符。例如。字母''l"和数字''1'',字母“o”和“0”等。
描述数据类型定义 描述存储类型 描述数据类型
Typedef Auto Char
Void Extern Const
Register Double
Static Float
Volatile int
long
short
signed
struct
union
unsigned
eunum
为了运算方便(把减法变成加法),在机器中负数有3种表示方法:原码、反码和补码。
其中,R表示基数,E表示R的幂,称为数N的阶码。阶码确定数N的小数位置。M表示N的全部有效数字,称为N的尾数。
因为在指数形式中,E前面不能没有数字,E后面必须为整数,也不能加括号。
C语言规定,字符常量不可以作为整数来处理。
C语言的字符常量代表ASCII码字符集里的一个字符,C语言中的字符常量在程序中要用单引号括起来,以便于一般的用户标识符区分,例如:
#define 是宏定义,每个#define定义一个标识符常量,并且占据一个书写行。使用#define时不要以分号结束,他不是一个语句,而是通知编译系统的预处理命令,使得在编译系统时,将程序中的所有该符号所定义的常量替换(关于预处理的详细讨论见第七章)
使用标识符代替常量有至少两个好处:其一,可以使程序清晰易读;其二,程序更易更改。
C语言中没有专门的字符串常量,如果需要把字符串存放在变量中,则要用一个字符型数组来实现。
在C语言程序运行时,变量的数值存放在一定的存储空间张。存储某变量的内存空间的首地址称为变量的地址。在C语言
定义变量的同时给变量赋初值,称为变量的初始化。
例如,有到的运算符要求有两个操作数参加运算(如+-*/),称为双目运算符,而有的运算符(如负号运算符、地址运算符&)只允许有一个操作数,称为单目运算符。
要求操作数的类型
如+-*/的运算对象可以是整形或实行数据,而求余运算符%要求参加运算的两个操作数都必须为整形数据。
表达式、C语言中的表达式是十分丰富的,表达式是有操作数和运算符组合而成的式子。
注意:自增和自减运算符都要求是整形变量。