c语言中什么是算法?有哪些描述算法的例子?

Python038

c语言中什么是算法?有哪些描述算法的例子?,第1张

c语言中的算法是指:一系列解决问题的清晰指令,用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。通俗说就是解决问题的方法和步骤。

描述算法的例子:

问题:从上海去到北京。

其中的算法:做汽车、做飞机、或者徒步。

问题:喝茶。

其中的算法:先找到茶叶,再烧一壶开水,然后将茶叶放到杯子里,将开水倒入杯中,等茶叶泡好。

问题:开车。

其中的算法:首先要打开车门,驾驶员坐好,插上车钥匙,发动汽车。

算法的五个重要的特征:有穷性(Finiteness)、确切性(Definiteness)、输入项(Input)、输出项(Output)、可行性(Effectiveness)。

算法的时间复杂度:算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

算法的空间复杂度:算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。可以从正确性、可读性、健壮性(容错性)来分析。

#include<stdio.h>

int main()

{

/*S1 定义、初始化变量*/

int i /*循环计数变量*/

double sum /*计和*/

double average /*计平均值*/

/*S2 计算并显示平均值*/

for(i=1i<=10i++)

{/*循环计数变量i=1

S2.2 i<=10转向S2.3否则转向S2.7*/

/*S2.3 计算名学生成绩和*/

int j

sum = 0

for(j=1j<=3j++)

{/*S2.3.1 局部变量初始化计数变量j=1*/

/*S2.3.2 j<=3转向S2.3.3否则转向S2.3.6*/

printf("输入功课编号 %d 的成绩\n", j)

/*S2.3.3 提示输入功课编号*/

double inputResult

/*S2.3.4 输入功课成绩inputResult*/

scanf("%lf", &inputResult)

sum = sum + inputResult

/* S2.3.5 求和:s=s+inputResult*/

}

/*S2.3.6 循环结束*/

average = sum / 3

/*S2.4 计算该学生平均成绩*/

printf("该学生平均成绩 = %.3f\n", average)

/*S2.5 显示该学生平均成绩*/

/*S2.6 i++转向s2.2*/

}

/*S2.7 结束循环*/

return 0

/*S3 结束*/

}

不对,可以描述算法

2 讲 算法及用C语言描述算法 通过介绍算法的性质、组成要素和举例,引入流程图和N-S图来描述算法。进一步,用C语句来实现算法。 算 法2 简单算法举例算法表示如下:S1:2000→yearS2:若year不能被4整除,则输出year不是闰年,转S6S3:year能被4整除,不能被100整除,则输出year是闰年,转S6S4: year能被100整除,又能被400整除,则输出year是闰年;否则输出不是闰年。然后转S6S5:输出year不是闰年S6:year+1→yearS7:若year≤2500,转S2;否则算法停止。注意:有的问题对判断的先后次序无关;但有的问题不能任意颠倒判断的先后顺序。例2.4 求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1) ×signS5:term=sign ×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4;否则算法结束。例2.5 判断一个大于等于3的正整数是否为素数。素数:只能被1和其本身整除的数。S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:若r=0,不是素数,算法结束;否则执行S5S5:i+1→iS6:若i≤n-1,返回S3;否则是素数,结束。实际上只需判断n能否被2~ 之间的整数整除即可。所以S6可改为:S6:若i≤ ,返回S3;否则是素数,结束。3. 算法的组成要素 操作。如算术运算、逻辑运算、关系运算、函数运算等。 控制结构。用于控制组成算法的各操作的执行顺序。结构化程序设计中,顺序、选择和循环3种基本结构能组成任何结构的算法。2)选择结构(又称选取结构、分支结构)3)循环结构(又称重复结构) 分为当型循环结构和直到型循环结构。5. 伪代码与逐步细化的程序设计方法 伪代码(pseudo code):介于自然语言与计算机语言之间的文字符号算法描述工具。一般步骤为:1) 自顶向下,将问题描述为几个子问题或子功能,不要试图一下子就触及问题解法的细节。2) 在子问题一级描述算法。用C语句描述算法例. 3个数中取大数—逐步细化法设计程序③写主函数的条件已经成熟 ④仍按逐步细化的方法设计max3()的算法。设三个参数为x,y,z。 S2.1:从x, y中取出大数送m S2.2:从m,z中取出大数送m S2.3:??回m给主调函数进一步细化得: S2.1:if (x>y) m=xelse m=yS2.2:if (m>z) m=melse m=zS2.3:return(m)⑤很容易用C语言写出函数max3()。[例2.20]:用C语言表示求5!的算法 [例2.21]:用C语言表示求下列级数的算法 结构化程序设计方法