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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

算法程序集.docx

1、算法程序集算法程序集目录第一讲 循环算法 11、质数问题 12、模糊票据问题 33、水仙花数问题 44、约数问题 55、打印星号问题 66、编程计算问题 77、车牌问题 98、排序问题 119、最大公约数公倍数问题 1410、因式分解问题 1511、随机数的 2分 查找 1612、狼找兔子问题 1813、统计字符问题 1914、 19第一讲 循环算法1、 质数问题问题描述:输出100200的所有素数(质数)。思路思路:说明除了自身之外,无法被其它整数整除的数称之为质数。程序代码:C+语言实现:Objective-C语言实现:#include stdio.h#include stdlib.h#i

2、nclude iostream.h#include math.hvoid main() int i,k; for(i=101;i=200;i+) for(k=2;ki/2;k+) if(i%k=0) break; else if(k=i/2-1) printf(%in,i); #import #include int main (int argc, const char *argv) NSAutoreleasePool *pool = NSAutoreleasePool alloc init; int i,k; for(i=101;i=200;i+) for(k=2;ki/2;k+) if(i

3、%k=0) break; else if(k=i/2-1) printf(%in,i); pool drain; return 0; 运行结果:问题描述: 求在 N 之内的质数 :算法思路: 程序代码:C+语言实现Objective-C语言实现:#include #include #define N 1000 void main() int i, j; int primeN+1; for(i = 2; i = N; i+) primei = 1; for(i = 2; i*i = N; i+) / 这边可以改进 if(primei = 1) for(j = 2*i; j = N; j+) if

4、(j % i = 0) primej = 0; for(i = 2; i N; i+) if(primei = 1) printf(%4d , i); if(i % 16 = 0) printf(n); printf(n); #import #include int main (int argc, const char *argv) NSAutoreleasePool *pool = NSAutoreleasePool alloc init;int i,j;int primeN+1;for(i=2;i=N;i+) primei=1;for(i=2;i*i=N;i+) If(primei=1)

5、for(i=2*I;j=N;j+) If(j%i=0) Primej=0;for(i=2;iN;i+) if(primei=1)Printf(“%4d”,i);if(i%16=0)printf(“n”);printf(n);pool drain; return 0;运行结果 :2、模糊票据问题问题描述:现在有一张5位数票据,如1#47,因某些原因,其中有二位数已模糊不清,但知道它能被57或67整除,问所用满足这些条件的5位数,及统计满足条件的个数。解题思路:程序代码:C+语言实现:Objective-C语言实现:#include stdio.h#include stdlib.h#include

6、 iostream.h#include math.hvoid main() int i,j,k;for(i=0;i10;i+) for(j=0;j10;j+) k=10047+i*1000+j*100; if(k%57=0 | k%67=0) printf(%in,k); #import int main (int argc, const char *argv) NSAutoreleasePool *pool = NSAutoreleasePool alloc init;int i,j,k;for(i=0;i10;i+) for(j=0;j10;j+) k=10047+i*1000+j*100

7、; if(k%57=0 | k%67=0) printf(%in,k); pool drain; return 0; 运行结果:3、水仙花数问题问题描述:即存在这样的三位数,ABC;满足如下表达式: ABC=A3+B3+C3设计思路:程序代码:C+语言实现:Objective-C语言实现:#include stdio.h#include stdlib.h#include iostream.h#include math.hvoid main() int a,b,c,n; for(a=1;a10;a+) for(b=0;b10;b+) for(c=0;c10;c+) n=a*100+b*10+c;

8、 if(n=(a*a*a+b*b*b+c*c*c) coutnendl; #import int main(int argc,const char * argv) NSAutoreleasePool * pool = NSAutoreleasePool alloc init; int i,j,k,n;for(i=1;i10;i+) for(j=0;j10;j+) for(k=0;kn; for(i=1;i=n;i+) if(n%i=0) coutiendl; #import int main (int argc, const char *argv) NSAutoreleasePool *poo

9、l = NSAutoreleasePool alloc init;int n,i;scanf(%i,&n);for(i=1;in; char *p; p=(char *)malloc(sizeof(char)*(n+1); int i; for(i=0;in;i+) pi= ; pn=0; for(i=0;in;i+) pn-i-1=*; coutp; coutendl; #import int main (int argc, const char *argv) NSAutoreleasePool *pool = NSAutoreleasePool alloc init; int n; sca

10、nf(%i,&n); char *p; p=(char *)malloc(sizeof(char)*(n+1); int i;for(i=0;in;i+) pi= ; pn=0; for(i=0;iinput; int *a; a=(int *)calloc(input,sizeof(int); int i,j; for(i=0;iinput;i+) for(j=0;ji+1;j+) aj=aj+2; for(j=0;j9) aj+1=aj+1+aj/10; aj=aj%10; printf(2+22+.+2 %d 2=,input); for(i=input-1;i=0;i-) printf

11、(%d,ai); #import#include #include int main(int argc, const char * argv) NSAutoreleasePool *pool = NSAutoreleasePool alloc init; int upet; scanf(%d,&upet); int *a; a=(int *)calloc(upet,sizeof(int); int i,j; for(i=0;iupet;i+) for(j=0;jupet;j+) aj=aj+2; for(j=0;j9) aj+1=aj+1+aj%10; aj=aj%10; printf(2+2

12、2+222+2222+.2.2 %d 2 =,upet); for(i=upet-1;i=0;i-) printf(%d ,&ai); pool drain; return 0; 运行结果:问题描述:求 N!的运算。(精确计算)思路描述:程序实现:C+语言Objcetive-C#include stdio.h#includeiostream.h#include stdlib.h#include Math.hvoid main()int input; cininput; int *a; a=(int *)malloc(sizeof(int); int Length=1; a0=1; int i,

13、j; for(i=1;i=input;i+) for(j=0;jLength;j+) aj=aj*i; for(j=0;j9) if(j=Length-1) Length+; a=(int *)realloc(a,(sizeof(int)*(Length); aLength-1=0; aj+1=aj+1+aj/10; aj=aj%10; printf( %d!= ,input); for(j=Length-1;j=0;j-) printf(%d,aj);#import#include #include int main(int argc, const char * argv) NSAutore

14、leasePool *pool = NSAutoreleasePool alloc init;Int upet;Printf(“请输入一个数:”);Scanf(“%d”,&upet);int *a; a=(int *)malloc(sizeof(int); int Length=1; a0=1; int i,j; for(i=1;i=upet;i+) for(j=0;jLength;j+) aj=aj*i; for(j=0;j9) if(j=Length-1) Length+; a=(int *)realloc(a,(sizeof(int)*(Length); aLength-1=0; aj+

15、1=aj+1+aj/10; aj=aj%10; printf( %d!= , upet); for(j=Length-1;j=0;j-)printf(%d,aj);pool drain; return 0;运行结果:7、车牌问题 问题描述: 若车牌是由0到9的十个数字组成的五位数,现将车牌号每位的数字进行相加求和,得到一个新数字,若新数字大于10,仍将各位数字相加求和,又得到一个新数字,如此下去,最后总能得到小于10的正整数,(例如:车牌为54235,5+4+2+3+4=19, 1+9=10 , 1+0=1)。编程实现,求取各种可能的车牌号,经过如上处理,最后得到0到9各个数字的个数,看看有什

16、么规律,为什么?结论:显然而知,0只出现了一次,其他的数字出现概率相同.问题思路:int p=a0+a1+a2+a3+a4; /5个车牌号的相加 while(p=10)/判断5个数相加是否大于10, k=p%10; j=(p-k)/10; p=j+k; 用上面的算法求车牌号每位的数字进行相加求和,得到一个新数字,若新数字大于10,仍将各位数字相加求和,又得到一个新数字,如此下去,知道5个车牌号相加小雨10 为止.程序实现:C+实现:#include stdio.h#includeiostream.h#include stdlib.h#include Math.hvoid main() int

17、a10=0; int N,i,j,k; N=10000000; for(i=0;iN;i+) j=i; /个位 k=0; /十位 while(true) k=k+j%10; j=j/10; if(j=0) if(k10) break; else j=k; k=0; ak+; for(j=0;j10;j+) cout最后得到j的概率是:aj*100.0/N%endl;运行结果:8、排序问题问题描述:对一组数的排序算法思路:各个排序法的各不相同 选择排序:将要排序的对象分作两部份,一个是已排序的,一个是未排序的,从后端未排序部份选择一个最小值,并放入前端已排序部份的最后一个,例如:排序前:70 8

18、0 31 37 10 1 48 60 33 801 80 31 37 10 70 48 60 33 80 选出最小值1 一次1 10 31 37 80 70 48 60 33 80 选出最小值10 2次1 10 31 37 80 70 48 60 33 80 选出最小值31 3次. 插入排序:像是玩朴克一样,我们将牌分作两堆,每次从后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的适当位置,例如:排序前:92 77 67 8 6 84 55 85 43 6777 92 67 8 6 84 55 85 43 67 将77插入92前 1次67 77 92 8 6 84 55 85 43 67 将67

19、插入77前 2次8 67 77 92 6 84 55 85 43 67 将8插入67前 3次 气泡排序:顾名思义,就是排序时,最大的元素会如同气泡一样移至右端,其利用比较相邻元素的方法,将大的元素交换至右端,所以大的元素会不断的往右移动,直到适当的位置为止。程序实现:C+语言Objective-C#include #include #include #define MAX 10 void selsort(int); / 选择排序 void insort(int); / 插入排序 void bubsort(int); / 气泡排序 #define SWAP(x,y) int t; t = x;

20、x = y; y = t; void main() int numberMAX = 0; int i; printf(排序前:); for(i = 0; i MAX; i+) numberi = rand() % 100; /随机数 printf(%d , numberi); printf(n请选择排序方式:n); printf(1)选择排序n(2)插入排序n(3)气泡排序n:); scanf(%d, &i); switch(i) case 1: selsort(number); break; case 2: insort(number); break; case 3: bubsort(num

21、ber); break; default: printf(选项错误(1.3)n); void selsort(int number) / 选择排序 int i, j, k, m; for(i = 0; i MAX-1; i+) m = i; for(j = i+1; j MAX; j+) if(numberj numberm) m = j; else if( i != m) SWAP(numberi, numberm); printf(第 %d 次排序:, i+1); for(k = 0; k MAX; k+) printf(%d , numberk); printf(n); void insort(int number) /插入排序 int i, j, k, tmp; for(j = 1; j MAX; j+) tmp = numberj; i = j - 1; while(tmp numberi) numberi+1 = numberi; i-; if(i = -1) break; numberi+1 = tmp; for(k = 0; k MAX; k+) printf(%d , numberk); printf(n); void bubsort(int number) / 气泡

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

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