算法初步(基于c语言)

上传人:mg****85 文档编号:49917549 上传时间:2018-08-04 格式:PPT 页数:49 大小:189.50KB
返回 下载 相关 举报
算法初步(基于c语言)_第1页
第1页 / 共49页
算法初步(基于c语言)_第2页
第2页 / 共49页
算法初步(基于c语言)_第3页
第3页 / 共49页
算法初步(基于c语言)_第4页
第4页 / 共49页
算法初步(基于c语言)_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《算法初步(基于c语言)》由会员分享,可在线阅读,更多相关《算法初步(基于c语言)(49页珍藏版)》请在金锄头文库上搜索。

1、第3章 计算机算法初步 3.3 递推与迭代法 3.2 穷举法 3.1 算法的概念 3.1 算法的概念 利用计算机求解问题的一般过程(1)问题分析阶段 (2)数据结构设计阶段 (3)算法设计阶段 (4)编码与调试阶段 算法描述l在计算机科学的发展过程中,人们已经提出了很多种类的算法描述方法。l一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。l还有一种算法的图形描述方式流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。 起止框I/O框处理框判断框调用框连接框有向边 常用流程图符号例1:求解一元二次方程 问题分析l

2、假设一元二次方程可以书写成ax2+bx+c=0。可以看出,任何一个一元二次方程都由三个系数a、b、c惟一确定,所以,首先需要用户输入三个系数,然后再根据一元二次方程的求解规则计算最终的结果,并将结果显示输出。 算法描述 #include #include main( ) int a, b, c,t; printf( “Input a,b,c: ” ); scanf( “%d%d%d”, t = b*b 4*a*c; if (t main( ) int x, t; printf( “Enter an integer: ” ); scanf( “%d”, for (t = 2; t #includ

3、e main( ) int x, y, z;for( x=0; x main( ) long item, ratio, sum,i; printf( “nEnter the first item and ratio: ” ); scanf( “%ld%ld”, sum=item; for ( i=1; i main( ) long f1 = 1, f2 = 1, f3, i,n;scanf ( “%ld”, if (n #include main( ) int sign = 1;long i = 1; double PI= 0.0, item; do item= sign * 4.0 / (2

4、 * i+ -1); sign= -sign; PI+= item; while (fabs( item ) 1e-4 ); /* 数据项精度控制循环 */printf( “PI = %lfn”, PI ); 程序代码 递推与迭代法应用实例4:按位分解整数l要求从键盘输入一个整数,然后将它的每一位分解成独立的数字字符并输出之。 例7:按位分解整数。 问题分析l可以利用程序设计语言提供的整除和求余运算实现将整数分解的目的。例如,对于整数7326,用7326/1000就得到了最高位7,而7326%1000得到了其余的位数326。但是,这种方法要求首先获得整数最高位的权,因此,算法应该先求整数最高位

5、的权,然后从高向低逐个分离出每位数字。 算法描述 NY开始输入x计算整数最高位权nn = 1x/n的余数x n/10 n结束打印x/n#include main( ) long x, y, n; printf( “Enter an integer: ” ); scanf( “%ld”, y =x; n =1; while (y10) n *= 10; y = y/10; do printf( “%ldt”, x / n ); x=x % n; n=n / 10; while ( n = 1 ); 程序代码 例: 求两个整数的最大公约数。方法: 算法:、初始化(除数i=2最大公约数gcd=1)、

6、输入m,n、当除数i小于m,n时做如果能除尽 则:m,n 变为新值(商)最大公约数扩大 i 倍否则:除数加、输出C语言的辅助控制语句1 break 2 continuebreak语句break语句的形式:break;break语句只能用在循环语句及switch语句里,其作用是使当前的(最内层的,循环等可能出现嵌套)循环语句(或switch语句)立即停止,使程序的执行从被终止循环(或者switch)语句之后继续下去。break语句可使“死循环”结束。方法:把break放在条 件语句下,在条件成立时跳出循环。例:while (1).if (n10)break;.continue语句continue

7、语句的形式:continue;只能用在循环里,作用是使最内层循环的循环体的一 次执行结束,进入下一次循环。对while和do-while循环,随后动作应当是条件判断;对于for循环,随后动作是变量更新。Break和continue语句引起的控制转移计算cc break; .计算cc continue; .sswhile (c) s00非0非0 braek; .计算cc continue; .计算cc非0非000do s while (c)e1e2 break; e3 sfor (e1;e2;e3) se1e2 continue; e3 s#include main( ) int i=2 , m, n, gcd=1;scanf ( “%d%d” , while ( i main() int i,m,n,gcd=1;scanf(“%d%d“,for (i=2; imr=n、输出n#include main() int m,n,r;scanf(“%d%d“,while (r = m % n)!=0)m = n;n = r;printf(“%dn“,n);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号