c语言常用算法.pptVIP

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言常用算法

3.9迭代问题 例1用牛顿迭代法求方程 在1附近的根,要求精度为10-5。牛顿迭代公式为: #include stdio.h #include math.h main() { float x,x1; int n=0; scanf(%f,x1); do { x=x1; n++; x1=x-(x*x*x+2*x*x+10*x-20)/(3*x*x+4*x+10); }while (fabs(x1-x)=1e-5); printf(x=%f,n=%d\n,x1,n); } 例2 利用二分法求方程 在[-2,2]上的一个实根。 #include stdio.h #include math.h #include stdlib.h void fun(double x1,double x2) { double x,f(); do { x=(x1+x2)/2; if(f(x1)*f(x2)0) /*当区间两个端点的函数值同号的时候,无根*/ { printf(无根!\n); exit(0); } if(fabs(f(x))1e-6) { printf(方程的根是:%f\n,x); exit(0); } else if(f(x)*f(x1)0) x1=x; else x2=x; }while(1); } double f(double x) { return 4*x*x*x/3+3*x-2; } main() { fun(-2,2); } 程序运行的结果为: 方程的根是:0.579966 18 判断某个数是否为素数,满足条件的素数序列; 最值及其位置; 根据题意,输出相关的解题步骤或结果; 5种排序方法; 有规律的数字计算或者表达式; 统计某类或某个字符个数,删除某类或某个字符,字符串连接、复制、比较,子串问题,数制转换问题; 求根,查找某个数; 穷举、矩阵、递归等问题; 18 【分析】对于本函数中判素数的界限是[2,n-1],如果判素数的界限变为[2,n/2]、[2,],算法仍然正确,请读者自己实践。 18 1.本程序中输出格式的控制中采用了比较特别的方式,即k不是一直加下去,与前面的两个例题有所不同,请读者考虑。 2.本程序把素数的结果直接写入数据文件,请读者增加适当语句使得结果同时在屏幕上也显示一份。 * * 如何使用递归函数实现 18 问题看起来比较复杂,实际上只要清楚公式中符号的含义就比较明了了: ①公式中的表示的是所有元素的平均值,就是每个元素。 ②程序要求所有元素的平均值,然后再求每个元素与平均值差的平方和,最后除以总项数再开方即可。项数是n*n ③数组可以通过随机函数自动产生。项数是n*n 程序中在计算误差的时候由于不能确定两次计算得到的值x和x1哪个大,因此使用绝对值进行判断。另外x=x1;语句一定放在迭代公式的前面,否则循环一次就结束了。请读者思考:如果没有实根该如何判断。 二分法求根的基本原理见示意图。在函数的单调区间[x1,x2],如果端点的函数值异号则表明曲线与x轴有交点,该交点就是待求的根。 取区间的中点x,如果x点的函数值为0则表明它就是根,否则如果f(x)与f(x1)同号,表明根不在[x1,x]区间,此时把x1移到x,在[x,x2]之间求解,可见区间缩小到原来的一半。按这种方法求解直到区间的宽度无限逼近根为止,这就是二分法求根。 16.下面的程序是求1!+3!+5!+……+n!的和. main() {long int f,s; int i,j,n; /******SPACE******/ 【?】 scanf(%d,n); /******SPACE******/ for(i=1;i=n; 【?】) { f=1; /******SPACE******/ for(j=1; 【?】;j++) /******SPACE******/ 【?】 s=s+f; } printf(“n=%d,s=%ld\n”,n,s);} s=0 i+=2 j=i f=f*j 33.以下程序的功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。 #include conio.h #include stdio.h /*****SPACE****/ int fun(【?】 ) {int m=

文档评论(0)

shenland + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档