程序设计和c语言

专业课改成c语言后,开始复习,参考书是谭浩强的c程序目录,以前学过c语言,但教材没用这本教材的,所以用这本书的目录做标题,迅速过一遍,做知识总结补充

1.1 程序设计语言

介绍了程序语言的历史,从低级到高级,机器语言-汇编语言-高级语言

执行程序,一般通过高级语言编写(少数可能直接用汇编写,对性能要求高的行业),即源程序,通过编译,转成汇编语言,再由汇编程序翻译成机器语言指令(即二进制代码),通过连接器链接生成可执行文件,然后计算机就能直接执行了

1.2 c的特点

  • 语言简洁,有37个关键字,9种控制语句
  • 运算丰富 &取地址 %取余 && 逻辑且 >>右移运算 ^异或运算···
  • 数据类型丰富
  • 完全模块化,结构化的语言,c中模块单位就是函数
  • 允许直接访问地址,位操作(有失有得,正因为自由了,所以时候逻辑不对得到会有很奇怪的结果)
  • 限制不严
  • 一般比其他高级语言执行效率高

1.3 简单的c程序

经典的hello world程序

1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("Hello, World!");
return 0;
}

没什么好说的,先引入头文件,这个头文件是c的预处理文件,引入了输入输出异常三个流,让程序能正常运行,然后是main函数,小括号中是传给函数的参数(这里mian函数省略了参数,有的书上会写 main (int argc,char *argv[]) 这是os传给mian的两个形参,argv是个指针数组,存了输入程序路径名称,argc是这个数组中元素个数 ),花括号中是函数体,int是函数返回类型,这个函数就一行输出语句,然后返回0,一般c中0表示正确

C语言中文网的一道题目

1
2
3
4
main(int argc,char *argv){
while(argc-->1)
printf("%s\n",*++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结构化程序设计方法

  • 自顶向下
  • 逐步细化
  • 模块化设计
  • 结构化编码