1.程序=算法+数据结构
程序包括对数据的描述和对操作的描述:其中对数据的描述是数据结构对操作的描述叫算法。
而数据和操作的关系呢:数据是操作的对象,操作的目的就是对数据进行加工处理,得到预期的结果。
2.算法
算法也可以说是做事情的步骤,算法好就可以节省时间、空间的资源。
计算机算法包含两大类:
- 数值运算算法:求数值解,此类算法有固定的模型,将它们编写成册,供用户调用。
- 非数值运算算法:常见于事务管理领域,此类算法运用广泛,只有一些应用较多的有成熟的算法可以使用,更多的还需要自己来设计。
3.简单算法
- 产生一个随机数数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int array[10],*point;
for(point=array;point<array+10;point++)
{
*point=rand()%90+10; //rand()随机产生一个浮点数,但是没有区间,然后对90取余,加上10,就是0到100的整数了。
printf("%d\n",*point);
}
return 0;
}
结果:
- 随机生成五十个人的成绩,选出其中大于80的为优秀
#include <stdio.h>
#include <stdlib.h> //stdlib.h头文件是标准库函数头文件,里面有c和c++常用的系统函数
int main()
{
int array[50],*point,i;
for(i=1,point=array;point<array+50;point++,i++) //i从1开始作为学号,指针指向数组开头
{
*point=rand()%90+10; //随机生成10到100的数
printf("%d,%d ",i,*point); //输出每个人的学号和成绩
if(i%10==0) printf("\n"); //每输出十个人换行一次
if(*point>80) //成绩大于80为优秀,优秀的人输出他的学号
printf("优秀:%d ",i);
}
printf("\n");
return 0;
}
结果:
4.算法特性
- 有穷性:操作步骤有限。
- 确定性:每一步都很确定要做什么。
- 有零个或多个输入,但至少有一个输出。
- 有效性,算法的每一个步骤都能有效执行。
5.表示算法的方法
- 自然语言表示:只能表示些特别简单的东西。
- 流程图表示:用各种图框表示各种操作。
判断2000到2500年之间是闰年的年份:
- 三种基本结构
- 顺序结构
- 选择结构
- 循环结构
- 当型循环(while型)
- 直到型循环(until型,也就是do…while型)
- N-S流程图(也叫盒图)
- 顺序结构
- 选择结构
- 循环结构(分为当型和直到型)
判断是否是闰年的算法用盒图表示:
- 用伪代码表示
介于自然语言和计算机语言之间,兼有他们两个的优点,便于理解,但是不能在计算机上运行,有些地方更偏向于计算机语言。 - 用计算机语言表示
也就是那些高级语言啥的。
6.结构化程序设计方法
为保证结构化的程序:
- 自顶向下
- 逐步细化
- 模块化设计
- 结构化编码