程序设计和c语言
专业课改成c语言后,开始复习,参考书是谭浩强的c程序目录,以前学过c语言,但教材没用这本教材的,所以用这本书的目录做标题,迅速过一遍,做知识总结补充
1.1 程序设计语言
介绍了程序语言的历史,从低级到高级,机器语言-汇编语言-高级语言
执行程序,一般通过高级语言编写(少数可能直接用汇编写,对性能要求高的行业),即源程序,通过编译,转成汇编语言,再由汇编程序翻译成机器语言指令(即二进制代码),通过连接器链接生成可执行文件,然后计算机就能直接执行了
1.2 c的特点
- 语言简洁,有37个关键字,9种控制语句
- 运算丰富 &取地址 %取余 && 逻辑且 >>右移运算 ^异或运算···
- 数据类型丰富
- 完全模块化,结构化的语言,c中模块单位就是函数
- 允许直接访问地址,位操作(有失有得,正因为自由了,所以时候逻辑不对得到会有很奇怪的结果)
- 限制不严
- 一般比其他高级语言执行效率高
1.3 简单的c程序
经典的hello world程序
1 |
|
没什么好说的,先引入头文件,这个头文件是c的预处理文件,引入了输入输出异常三个流,让程序能正常运行,然后是main函数,小括号中是传给函数的参数(这里mian函数省略了参数,有的书上会写 main (int argc,char *argv[]) 这是os传给mian的两个形参,argv是个指针数组,存了输入程序路径名称,argc是这个数组中元素个数 ),花括号中是函数体,int是函数返回类型,这个函数就一行输出语句,然后返回0,一般c中0表示正确
C语言中文网的一道题目

1 | main(int argc,char *argv){ |
本例是显示命令行中输入的参数。如果上例的可执行文件名为e24.exe,存放在A驱动器的盘内。因此输入的命令行为:
C:>a:e24 BASIC foxpro FORTRAN
则运行结果为:
BASIC
foxpro
FORTRAN
该行共有4个参数,执行main时,argc的初值即为4。argv的4个元素分为4个字符串的首地址。执行while语句,每循环一次argv值减1,当argv等于1时停止循环,共循环三次,因此共可输出三个参数。在printf函数中,由于打印项*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、三次循环分别打印后二个字符串。而参数e24是文件名,不必输出。
C程序结构特点
- 函数是c的基本单位;一个C语言源程序可以由多个源文件的组成,但只能有一个主函数
- 所有用到的变量都必须先说明, 后使用
- 每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号
- 标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔
1.5 C程序步骤
上面写过
1.6 程序设计的任务
程序设计有4个要素:
算法是灵魂,数嚣结构是加工对象,语言是工具,编程采用结构化程序设计方法
一般阶段:
1.问题分析
2.设计算法数据结构
3.编写代码,得到可执行程序
4.运行分析,调试和测试
5.编写文档,软件是计算机程序和程序文档的总和
1.7 程序的灵魂——算法
1.7.1 程序是什么
一个程序应包括:
- 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。
- 对操作的描述。即操作步骤,也就是算法(algorithm)。
Nikiklaus Wirth 提出的公式:
数据结构+算法=程序
教材认为:
程序=算法+数据结构+程序设计方法+语言工具
环境程序=算法+数据结构+程序设计方法+语言工具和环境
1.7.2 算法是什么
一系列通过计算来解决问题的明确的步骤,其实就是解决问题的方法
算法的特性
- 有穷性:一个算法操作步骤要是有限的
- 确定性:算法中每一个步骤应当是确定的,不能有二义性
- 有零个或多个输入
- 有一个或多个输出
- 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果
1.7.4 怎样表示一个算法
自然语言,流程图,三种基本结构和改进的流程图,伪代码,计算机语言
1.8结构化程序设计方法
- 自顶向下
- 逐步细化
- 模块化设计
- 结构化编码