- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[电脑基础知识]C程序设计专题辅导课第五讲-算法基础
二分法求非线性方程的根 二分法求根(自然语言描述): 假设f(x)在[a,b]内连续,且f(a)f(b)0 ,给定误差ε ; (1)若b-a ε ,返回x0=(a+b)/2作为近似根,算法结束;否则取区间中点m=(a+b)/2; 若f(m)=0, 返回x0=m,算法结束; (2)若f(a)f(m)0,在[m,b]内必有根,则调整新区间边界:b不变,a=m,转(1); (3)若f(a)f(m)0,在[a,m]内必有根,则调整新区间边界:a不变,b=m,转(1); double BiRoot(double x, double a, double b, double eps) { /* 求值函数double f(double x)需要另外定义 */ double mid, fm, fa=f(a), fb=f(b); if(fa==0.) return a; if(fb==0.) return b; if(fa*fb0.) { FatalError(“Fail”); return 0.; } while ( b-a eps ) { mid=(b+a)/2; fm=f(mid); if (fm)==0.) return mid; /*找到一个根*/ else if (fm*fa0.) {a=m; fa=fm;} /*留右半区*/ else {b=m; fb=fm;} /*留左半区*/ } } 3.2 二分法求根 3.3 常用算法举例 例1:输入n(2≤n≤5,程序不需要对此范围进行判断),再输入n个整数保存到数组a中,通过循环查找n个数中是否有重复的数,如果有则输出Yes,否则输出No。 要求在循环过程中,任何两个数的比较次数不得超过1次(比如对a[0]与a[1]比较后接下去又对a[1]与a[0]比较是不符合要求的),并且要求一旦找到有数重复则立即结束循环。 -- 08年夏考题 #include stdio.h void main() { int a[5], i, j, n; scanf(%d, n); for(i=0; in; i++) scanf(%d, a[i]); for(i=0; i=n-2; i++) { for( (1) ; j=n-1; j++) { if(a[i] == a[j]) (2) ; } if( (3) ) break; } if( (4) ) puts(No); else puts(Yes); } j=i+1 break j=n-1 i==n-1 或 i=n-1 或 in-2 3.3 常用算法举例 例2: 函数f(A,…,x) 有三个参数, 它们分别是已排序(升序)的数组A、整数n(A的当前元素个数)以及x(要插入到A中的整数)。 函数 f(…) 的功能是把 x 插入A中,而A仍然保持升序, 但n增加了1。例如, A的原来5个元素是 (2, 4, 6, 8, 10), n=5, x=1, 程序运行结束后的输出是 1#2#4#6#8#10#。 请完成下面程序。 -- 06年考题 #include stdio.h void fint A[ ], int *n, int x ) { int i; i = __(1)__; while ((i0) (xA[i-1])) { __(2)__; i--; } A[i]=x; (*n)++; } void main( ) { int i, A[10]={2, 4, 6, 8, 10}, n=5, x=1; f(______(3) _______); for(i=0;in;i++) printf(%d#, A[i]); } *n A[i] = A[i-1]; A,n,x 3.3 常用算法举例 例3:数组元素循环后移问题 一个数组中存有n(1=n=100)个整数,在不允许使用另外数组的前提下,将每个数顺序向后移m(m=0
您可能关注的文档
最近下载
- ZXR10 M6000电信级路由器硬件手册.docx VIP
- 《输液导管相关静脉血栓形成防治中国专家共识》解读PPT课件.pptx VIP
- 高中英语_Being funny without saying a word教学课件设计.ppt
- 2024版育婴师培训全套课件完整版.docx VIP
- 子网掩码相关教学 子网掩码快速算法.doc VIP
- 什么什么踏地四字成语.docx VIP
- 力士乐卷扬减速机制动器安装拆解图文.pdf VIP
- 新能源汽车充电系统检修:车载充电机的认知与检修PPT教学课件.pptx
- 2025年度食品安全风险日管控、周排查、月调度记录表.pdf VIP
- (新版)消防设施操作员(初级)消防设施操作-考试题库(含答案).docx VIP
文档评论(0)