C语言算法和三种基本程序结构
C语言算法和三种基本程序结构是什么呢?看了下面的内容你就会了解了,快来看一下吧!
算法
做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。
算法是一个基本的概念,但也是一门深奥的学问,小到如何输出九九乘法表,如何对一组数据进行排序,大到如何控制飞行器的姿态,如何让无人机壁障。
这里主要是向大家阐述一下算法的概念,对于初学者,涉及到的算法都很简单,一般不会成为学习的障碍,我们会在后面的实例中逐渐向大家渗透具体的算法。
请大家思考一个问题:如何求1×2×3×4×5的值。
最原始方法:
步骤1:先求1×2,得到结果2。
步骤2:将步骤1得到的乘积2乘以3,得到结果6。
步骤3:将6再乘以4,得24。
步骤4:将24再乘以5,得120。
这样的算法虽然正确,但太繁。
改进的算法:
S1:使t=1
S2:使i=2
S3:使 t×i,乘积仍然放在在变量t中,可表示为 t×i -> t
S4:使i的值+1,即 i+1 -> i
S5:如果i≤5,返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。
如果计算100!只需将“S5:若i≤5”改成“i≤100”即可。
如果改成求1×3×5×7×9×11,算法也只需做很少的改动:
S1:1 -> t
S2:3 -> i
S3:t×i -> t
S4:i+2 -> i
S5:若i≤11,返回S3;否则,结束。
该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。
三种基本程序结构
几乎所有编程语言,包括C语言,都会有三种基本的程序结构:顺序结构、选择结构和循环结构。
顺序结构
顺序结构就是一条一条地从上到下执行语句,所有的`语句都会被执行到,执行过的语句不会再次执行。
例如,求1+2+3+4+5的和,就可以一个数一个数地依次累加。
选择结构
选择结构就是根据条件来判断执行哪些语句,如果给定的条件成立,就执行相应的语句,如果不成立,就执行另外一些语句。
例如,根据用户输入的年龄来输出不同的内容:
年龄 | 小于18 | 你还未成年,应该好好学习 |
大于等于18,小于等于30 | 珍惜青春,多做有益的事情 | |
大于30,小于60 | 社会中坚力量,工作的同时注意身体 | |
大于等于60 | 请您安享晚年,我们会记得您对社会的贡献 |
用户输入年龄,程序会做出判断,根据不同的年龄输出不同的内容。这四个输出语句,只有一个被执行,其他三个被跳过,没有执行。
循环结构
循环结构就是在达到指定条件前,重复执行某些语句。
例如,上面说到的计算 100! 的值,就会重复执行 S3、S4。
最后,我们用双重循环结构来输出九九乘法表:
#include int main(){int i, j;for(i=1; i<=9; i++){for(j=1; j<=i; j++){printf("%-3d ", i*j); // -3d 表示输出整数,宽度为3(占3个字符),左对齐}printf("n");}return 0;}
-
C语言中friend友元函数详细解析
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他...
-
C语言合并排序及实例代码讲解
归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并。下面是小编为大家整理的C语言合并排序及实例代码讲解,欢迎参考~仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0],A[l]…,A[n-1]...
-
C语言编程中的联合体union入门学习教程详解
联合体(union)在C语言中是一个特殊的数据类型,能够存储不同类型的数据在同一个内存位置。可以定义一个联合体使用许多成员,但只有一个部件可以包含在任何时候给定的值。联合体会提供使用相同的存储器位置供多用途的有效方式。定义联合体要定义联合体,必须使用unio...
-
C语言中递归函数的教学方法
导语:函数递归基于分治法思想,将复杂的大规模问题转化为小规模问题进行求解,在算法设计中具有重要的理论意义和实用价值,是C语言教学的难点。下面就由小编为大家介绍一下C语言中递归函数的教学方法,欢迎大家阅读!1.引言C语言是一种语法简洁紧凑、运算符丰富、可移植...