ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:22.81KB ,
资源ID:22491261      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22491261.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++常用算法归纳Word格式文档下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++常用算法归纳Word格式文档下载.docx

1、例 求1!。【分析:!=12310,累乘器在进入循环前必须获得合适初值;通常为1。累乘式格式“C=C”必须出现在循环中。注意,不要让累乘器溢出。#cludin ep st;vid ain()log C; in i;C=1; =1; while(i=10) CC*i; i+; coutusn namespe std;void man()itsh; ib,g;or(sx=;sxh99;sxh+)bsxh/100; =s/%1; g=sxh%10; if(bb*b+s*ssgg*=sx)coutsxedl; 【结论:任意一个正整数的个位数字,都可以用“该数%10”求得!【法二:三重循环】#inlud

2、e usg namepace std;oidmain()t b,s,g; for(b=1;=9;+) /时针f(=0;s=;s) /分针for(g=0;g;g+) /秒针if(b*bb+*g*g=b0+s10+g)cutb*10+s*10+genl;【发现:核心语句f被执行了900次】 、正整数的各数位上数字的获取例1:任意读入一个正整数,依次输出其低位到高位上的每一位数字。例:任意读入一个整数,依次输出其低位到高位上的每一位数字及其符号位,但若是0不输出符号位。、迭代法例1. 猴子吃桃问题。某猴子某天摘了若干只桃子,吃了一半,不过瘾,又多吃一只;第二天又吃了一半,不过瘾,再多吃一只到第十天,

3、发现只剩只桃子了。问第一天共摘了多少只桃子。#includ usi nmespae td;oi ai()int pach,d;pac=; r(ay;da1;day-) ech(peach+1)*2; outusing mespace std;od min()int peach,day; pch=1; for(day=9;dy=1;ay-) ech=(each+1)*2;第dy天的桃子数:peachendl;4、排序 ()冒泡排序法(起泡法)【算法要领:n个数据最多处理-1趟,每一趟从头到尾(或从尾到头)两两相邻的元素进行比较,升序排序时,若前者大后者小,则交换两数,每一趟比前一趟少比较一次。任

4、意读入1个整数,升序排列后输出。#iclude using nampace std;vid min()const int N=1; int aN,i,j; fr(i=;iai; /外循环处理N-1趟,控制趟数 fr(j=1;j=N-1;j+) for(i=0;N-j;i+)/内循环控制每趟比较次数 if(aiai+1) int t; =ai;ai=ai1;a+1t;fo(i=;i;i+) couai ;(2)选择法排序选择法排序是相对好理解的排序算法。假设要对含有n个数的序列进行升序排列,算法步骤是:从数组存放的个数中找出最小数的下标(算法见下面的“求最值”),然后将最小数与第1个数交换位置;

5、除第1个数以外,再从其余n-1个数中找出最小数(即n个数中的次小数)的下标,将此数与第2个数交换位置;重复步骤n-1趟,即可完成所求。任意读入10个数,然后进行升序排列。【主函数读入、调用、输出;子函数排序。#incde osamusg aespae std;vid PX(nt *p,int)/【法1:选择法】int i,j,,; fr(0;-2;i+) k=i; fr(=i+;ji; PX(a,10);/为增大子函数灵活性,将元素个数传过去 for(;i10;) couaendl;/【法:以下冒泡法】#inclde ioseamiclude using nmesace std;vi X(in

6、t p,in)int i,; in t; or(=1;-1;+) for(i=0;=-1-j; if(*(+i)*(p+i+1) t=*(p+i);*(p)=*(p+1); *(p+1);vid main()nt 10,i;for(=0;10;+)ai; PX(a,0); fo(i=0;0; cosw(4)for(i0;N;+)/正常出口出来,i为 if(ai=9)brak; i(i) ct有endl;e cu无en;【小技巧:定义一个逻辑量】#inclue istreamusing nmespace st;oid min()cntint N10; it aN,; bool fl=fals;

7、/先假设无a; o(i0;i+)/正常出口出来,i为N if(ai=9)ltr;beak; if(flag!=fale) out else ousing naesace std;vodan()cons t N10; int aN,; for(=0;;i+)cinai; =0; whe(i=1&i!9)i+; if(i=N-1) cotend; otusn amepac std;v man()int x; do cut1:n; cinx; wie(x=1); int k; fr(=2;=x-1;k+) /穷举的思维 if(%k=0)brea;f(x=k) /判断难点 coutx是素数 cut不是

8、素数n【用一个小技巧:借助一个“逻辑型”变量:“是素数时为tue,否则为false”】#cud sin namespcestd;void main() outn cix; while(xbol flag;flag=true; /首先假设x是素数! fr(k=2;=x1;+)/穷举的思维 if(xk=0) flg=fase;brek;i(lag=tre) cot ls cou不是素数;#includ k=2;ile(k!=0)k+; if(k=) ot是素数n; ee cout不是素数n【变形一:用sqrt函数,求平方根】#ncde cmathuin amespace st;nt,k; ix;

9、ool flag=r; for(k2;=rt(x);k+) if(x%=)fagfase;e; i(fag=tue) cut e ox不是素数n;、插入、删除三、数值计算经典算法:1、辗转相除法求两正整数的最大公约数任意读入个正整数,输出其最大公约数。ncldesng namepacesd;vo ma()it x,,r; d输入0、y: ny; whil(!(x0&y); =y; hile(r!0) xy;y=r;r=x%; cu【改写:用dwhile】#iclud usin nampace sd;voi an()int x,y,r; o ut inxy; whie(!&0); r=y; x=

10、y; y=r; whl(r!=0);2.级数计算(展开式的求解)例1、求+/2!+1/3!+1/n!+,直到某项的值小于0-6为止。直接法(略)】【法二:间接法(递推法)前项/项次=后项】#inclueostreamusing naespace std;fat s,t; it ; 表示项次 s0;t=1;i1; wile(t=1e6) =s+t; i+; t=t/i;coend;例2、读入0x1,计算x+x2+3+xn+直到某项的值小于06为止。直接法:直接利用项次描述通项。nclude#inclue cmathusingamespe td;vo man()flotx,s,t; ini;/能用

11、整数,不用实数cu0=1|x0); i; s00; tx;wil( =1e-6) s=+ t;i+; =pow(,i);、间接法求通项例1、读入x1,计算x2+x3+xn+直到某项的值小于06为止。递推法(间接法)求通项:利用前项求后项。本题中若前一项值为t,则后一项的值为t*】inclde usignamepace std;vod main()fltx,s;do cout0xwhile(x=1|x=0); flatt; /用t表示通项 s=00; t=; wile(1e-6) ss+t; t=t*; ctuing epacest;void mai()in f1,f2,f; f=f2=1;f1

12、 f2 inti;or(=3;=20; f3=f1+f2; f=f; f2=f3; otf3例、编程输出形如上图的等腰三角形(行数灵活读入)。 * * * *#incle =1; int i=1,;/用二重循环完成(循环的嵌套) whi(i=h)/外循环控制行数 f(=;=h-;j)/第一个循环输出每行的空格 or(j;2*1;j+)/第二个循环输出每行的星号 cu*nd; i;4、矩阵转置矩阵转置的算法要领是:将一个m行n列矩阵(即矩阵)的每一行转置成另一个矩阵的相应列。例、将以下23矩阵转置后输出。即将 1 2 3 转置成 4 5 6 2 5 3 6include #icldsing na

13、mespae st;it a,b32,j,k=;or(i;i; fr(j=0;3;j+) aij=k+;/将a转置到b中,穷举 or(0;2;i+)/以a为基准 for(0; bji=ai; r(i0; fr(=0;t(3)bij; coutinclud iomanipuing naepacsd;onst it N=0; it NN,i,; /给主对角线、第一列元素赋值 fr(i;+) a=ai0=1; /以下双循环完成其他元素赋值 or(i2;N1; fo(j=1;=i; aij=i-1-1ai-j; fo(i=0; for(j0;i; outsetw(4)i; utusingnamespce s;vi i()const int N10; intaN,i; nx; fr(i=;i+)cinai; max=a0;/假设第一个获最后一个最大 fr(i1;i+)/其余不服气 f(aimax)max=ai;MAX=axenl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1