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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C++算法大全.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C++算法大全.doc

1、曾经在软通动力写过的算法题其中有一小部分是参考网上的资料,现在拿出来给大家分享! 第3章 控制语句 /* 1、打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153 = 13 + 53 + 33。 */ #include void main() { int i, a=0, b=0, c=0; for(i=100;i<1000;i++) { a=i%10; b=i/10%10; c=i/100%10; if(a*a*a+b*b*b+c*c*c==i)

2、 cout<<"i="< void main() { int i,j,sum=0,a[50],k,t; for(i=1;i<=1000;i++) { sum=0;         for(j=1;j

3、 { sum+=j; a[k++]=j; } } t=k; if(sum==i) { cout<"; for(k=0;k void main() { double

4、 a,sn=0.0,sum=0.0; int n,i; cout<<"please input a number"; cin>>a;     cout<<"please input n number"; cin>>n; sn=a; sum=a;     for(i=2;i<=n;i++)     { sum=sum*10+a; sn+=sum;     } cout<<"Sn="<

5、多高?*/ #include void main() { double h1=100,h2=100,sum=0.0; int i; for(i=1;i<=10;i++) { sum+=h2; h1=h1/2.0; h2=h1*2; } cout<<"sum="<>a;    cout<<"a的值为:"< void main() { int i,j,temp,a[10]; cout<<"please input ten numbers:\n"; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<10;i++) /

8、/每循环一次确定数组中一个数的位置 for(j=i+1;j<10;j++) //每次循环对比一个数的大小 { if(a[i]>a[j]) { temp=a[j]; a[j]=a[i]; a[i]=temp; } } cout<<"resort result="; for(i=0;i<10;i++) cout<

9、1)*Pn-2(x))/n (n > 1) */ #include double fun (double,double); void main() { double n,x,sum; cout<<"input n and x"<>n>>x; sum=fun(n,x); cout<<"P"<

10、1) return  x1; else if (n1>1) return ((2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1))/n1; } /* 3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。 */ #include void judge(char a[]); void main() { const int size=100; char a[size]; cin.getline(a,size);

11、 judge(a); } void judge(char a[100])//判断字符类型 { int letter=0,number=0,others=0,i=0; while(a[i]!='\0') { if ((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='z')) letter++;//统计字母个数 else if (a[i]>='0' && a[i]<='9') number++;//统计数字个数 else others++;//统计其他数个数 i++; } cout<<"letter="<

12、ter<<"  number="<>year>>month>>date; int a[12]={31,0,31,30,31,30,31,31,30,31,30,31}; ly=le

13、ad(year); if (ly==1) a[1]=29;//366天 else a[1]=28;//365天 for(i=0;i

14、求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 */ #include int cdivisor(int,int); int cmultiple(int,int,int); void main() { int x,y,d,m; cout<<"input two number: "; cin>>x>>y; d=cdivisor(x,y); m=cmultiple(x,y,d); cout<<"common divisor is "<

15、 is "<

16、们的最大公约数为最小公倍数 } /* 6、写一函数,将两个字符串连接。 */ #include #include void main() { const int size=100; char a[size],b[size]; cout<<"input two string:"<

20、de void back(char *); void main() { char a[50]="abcdefg"; cout<<"a="< void back(char *p) { int i=0; while(*p!='\0') { p++;//把指针定位到字符串末尾 i++;//统计字符个数 } cout<<"a="; for(;i>0;i--)//逆序输出 { p--; cout<<*p; }

21、 cout< void tri(int a[][15]); void main() { int i,j,a[15][15]; tri (a); cout<<"a= "; for(i=0;i<15;i++)//遍历整个数组 { for(j=0;j<=i;j++) { cout<=1

22、a[i][j]<=9)//当输出个位数之后输出4个空格保持整齐 cout<<"    "; else if (a[i][j]>=10&&a[i][j]<=99)//当输出十位数之后输出3个空格保持整齐 cout<<"   "; else if(a[i][j]>=100&&a[i][j]<=999)//当输出百位数之后输出2个空格保持整齐   cout<<"  ";   else cout<<" ";//当输出百位数之后输出1个空格保持整齐 } cout<

23、[15]) { int i,j; for(i=0;i<15;i++) for(j=0;j<=i;j++) { if(j==0||j==i)//三角形第一列和对角线被赋值为1 a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j];//算出其余的数组元素 } } /* 3、编一程序,将两个字符串连接起来,不要用strcat函数。 */ #include #include void scat(char *,char *); void main() {

24、 const int size=100; char a[size]="Hello"; char b[size]="Bye"; cout<<"a="<

25、 /* 4、打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵:       8 1 6       3 5 7       4 9 2 要求打印由1到n2的自然数构成的所有魔方阵。 */ //方法一:输出N介魔方阵,但每介只输出一种。 #include void square(int a[][10],int k,int n); void main() { int n,i,j,k,a[10][10]={0}; cout<<"input an odd number:"<

26、 cin>>n; k=n/2;//确定第一个数列数 square(a,k,n); for(i=0;i=n)//当数组行列都越出范围时候,确定数组正确位置 { j+=2;k-=1; }

27、 else if(j<0)//当数组行越出范围时候,确定数组正确位置 j+=n; else if(k>=n)//当数组列越出范围时候,确定数组正确位置           k-=n;   else if(a[j][k]!=0)//当数组原位置有数时候,确定数组位置   { j+=2;k-=1;   } a[j][k]=i; } } //方法二:输出N介魔方阵所有魔方阵。 #include #include #include using namespace std;

28、 void printA(int **p,int n)//输出这个n阶魔方阵 { cout<

29、 0; bool YesOrNo = true; for(j = 0;j < n;j++)//第一行总和 { sum += p[0][j]; } for(i = 1;i < n;i++)//判断每行总和是否相等 { NowSum = 0; for(j = 0;j < n;j++) { NowSum += p[i][j]; } if(NowSum != sum) { YesOrNo = false; goto END; } } for(i = 0;i < n;i++)//每列是否相等 { N

30、owSum = 0; for(j = 0;j < n;j++) { NowSum += p[j][i]; } if(NowSum != sum) { YesOrNo = false; goto END; } } NowSum = 0; for(i = 0,j = 0;i < n,j < n;i++,j++)//主对角线是否相等 { NowSum += p[i][j]; } if(NowSum != sum) { YesOrNo = false; goto END; } NowSum = 0;

31、 for(i = n-1,j = 0;i >= 0,j < n;i--,j++)//次对角线是否相等 { NowSum += p[i][j]; } if(NowSum != sum) { YesOrNo = false; goto END; } END: return YesOrNo; } void combination(int **p,int n,int *a)//求m = n*n个数(1,2,3.....m)的全排列 { int m = n*n; static int Num = 0; int *b_val =

32、new int[m]; int c = 0,k,i,j; b_val[c] = -1;//一维数组首地址的值赋-1 c[0]-1 while(b_val[0] < m) //-1 { if(++b_val[c] < m) //分别从0开始累加每个元素值,并限制不超出最大阶数                  //b[0]0 [1]0 [1]1 [2]0 [2]1 [2]2...[6]6...[7]0...[7]7 [8]0...[8]8 判断魔方 [8]9 012345678                       //                   

33、                            [7]8 [8]0...[8]7 判断魔方 [8]8 [8]9 012345687      //                                 [6]7...[7]0...[7]6        [8]8 012345768                                            //         012345786      //                                                                01234586

34、7 ...            //      876543210 {   for(k = 0;k < c;k++) //是否与前面数字重复,如有重复元素跳出,否则使K下标等于C下标                                  if(b_val[k] == b_val[c])                                                     break;     if(k == c)//如果没有重复元素,就可以确定当前元素值,并继续排列下一个下标的数组元素 { if(c+1 < m) //1 2

35、3...7 8   如果不满足条件,则生成了一组排列方式,否则继续排列下一个元素            //          8 {    ++c; //1 2 3...7 8 //          8 b_val[c] = -1; //   continue; } else  //生成了一组排列方式 { k = -1; for(i = 0;i < n;i++) { for(j = 0;j < n;j++) { p[i][j] = a[b_val[++k]];//a[0]-a[8] } } //判断是否为n阶魔方阵

36、 if(Judge(p,n)) { printA(p,n); } } } } else { c--; } } delete []b_val; } void evaluate(int **p,int n)//给n阶方阵的元素赋值 { int i; int *AllNum = new int[3*3]; for(i = 1;i <= n*n;i++) { AllNum[i - 1] = i; } combination(p,n,AllNum); delete []AllNum; }

37、 void main() { int i,n,**a; string s; do { //输入n阶方阵的阶数n cout<<"请输入n阶方阵的阶数n(退出程序按e或E键):"; cin>>s; if(!strcmp(s.c_str(),"e") || !strcmp(s.c_str(),"E")) { break; } else if(s.find_first_not_of("0123456789") != string::npos) { cout<<"请输入有效的数字,不能含有非数字的字符。"<

38、tinue; } else { n = atoi(s.c_str()); if(n < 1) { cout<<"请输入有效的数字,必须 >= 1。"<

39、i = 0; i < n; i++) { delete []a[i]; } delete []a; } }while(1); return; } /* 5、求一个3x3矩阵对角线元素之和。*/ #include int dia(int a[][3]); void main() { int i,j,sum,a[3][3]={2,3,5,6,2,3,1,9,0}; cout<<"a= "; for(i=0;i<3;i++) { for(j=0;j<3;j++) cout<

40、 cout<

42、[],char b[]) { int i; for(i=0;b[i]!='\0';i++) { a[i]=b[i]; } a[i]='\0'; } /* 7、用筛选法求100之内的素数。(所谓素数就是除了1和它本身以外,不能再被别的整数整除,这种数称作素数(也称质数)。)*/ #include void main() { int i,j; for(i=1;i<=100;i++) { for(j=2;j

43、i==j)//相等为素数 cout<<" "< void csort(int a[10]); void main() { int i; int a[10]={6,4,2,7,9,0,1,6,3,0}; for(i=0;i<10;i++)//输出原数组数据顺序 cout<

44、 cout<a[j])k=j; if(k!=i) { temp=a[i];//把数放到正确位置 a[i]=a[k]; a[k]=temp; } } } 第6章   指针 /* 1、在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串

45、用指针实现)*/ #include void psort(int *p); void main() { int i,a[10]; cout<<"please input ten numbers:\n"; for(i=0;i<10;i++) cin>>a[i]; psort(a); cout<<"resort result="; for(i=0;i<10;i++) cout<

46、) //每循环一次确定数组中一个数的位置 for(j=i+1;j<10;j++) //每次循环对比一个数的大小 { if(p[i]>p[j]) { temp=p[j]; p[j]=p[i]; p[i]=temp; } } } /* 2、输入一个字符串,内有数字和非数字字符,如A123x456 1233?8997jhlkll 将其中连续的数字作为一个整数,依次存放到一数组a中,统计共有多少个整数,并输出这些数。*/ #include #include #include

47、s.h> int charge(int *,char *); void main() { int a[50],i,numb; char b[50]; cout<<"please input a character string:"<

48、i<<"]="<

50、] = new char[10]; cin.getline(*(string+i),50); } sort(string); for(i=0;i<5;i++) delete [] string[i]; } void sort(char **str) { int i=0,j; char *p=0; for(i=0;i<4;i++) { for(j=i+1;j<5;j++) { if(strcmp(*(str+i),*(str+j))<0) { p=*(str+i); *(str+i)=*(str+j); *(str+j)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服