


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言模板程序求两个数最大公约数方法- 辗转 相除 法思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的 两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。完整程序#in clude<>int main()int m,n,r;sca nf("%d,%d",&m,&n);dor=m% n; m=n;n=r;while( n);prin tf("greatest com mon divisor is %dn",m); return 0;封装函数int gcd(i nt m,i nt n) do r=
2、m% n; m=n;n=r;while( n); return m;调用函数#in clude<>int main()int m,n,r;int gcd(i nt m,i nt n);sca nf("%d,%d",&m,&n);gcd(i nt m,i nt n);prin tf("greatest com mon divisor is %dn",m); return 0;方法- 更相 减损 法思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两 个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约 数
3、。完整程序#in clude<>int main()int m,n;sca nf("%d,%d",&m,&n);while(m!=n)if(m>n) m-=n;else n-=m;prin tf("greatest com mon divisor is %dn",m); return 0;封装函数int gcd(i nt m,i nt n) while(m!=n)if(m>n) m-=n; else n-=m;return m;调用函数#in clude<>int main()int m,n,r;int
4、 gcd(i nt m,i nt n);sca nf("%d,%d",&m,&n);prin tf("greatest com mon divisor is %dn",gcd(m, n); return 0;2求两个数最小公倍数思路:两个数,从较大的数开始,依次找能同时整除这两个数的整数,这 个整数就是这两个数的最小公倍数。完整程序#in clude<>int main()int m,n ,i;sca nf("%d,%d",&m,&n);for(i=( m>n m: n);i+) if
5、(i%m=0 && i%n=0) prin tf("lease com mon multiple is %d",i); break;return 0;封装函数in t lcm(i nt m,i nt n)int i;for(i=( m>n m: n);i+) if(i%m=0 && i%n=0) return i;调用函数#in clude<>int main()int m,n ,i;int lcm(i nt m,i nt n);sca nf("%d,%d",&m,&n);prin tf(
6、"lease com mon multiple is %d",lcm(m, n); return 0;3判断素数思路:从2开始到所求整数的开方依次求余,如果有能整除所求整数的整 数,则所求整数为合数,反之为素数。完整程序#in clude<>#in clude<>int main()int num;int i,k,flag=1;sca nf("%d",&nu m);k=sqrt (nu m);for(i=2;i<=k;i+)if(nu m%i=O) prin tf("%d isn't a prime
7、 nu mber!", nu m); flag=0;if(flag) prin tf("%d is a prime nu mber!", nu m); return 0;封装函数int sushu(i nt num)int i,k;k=sqrt (nu m);for(i=2;i<=k;i+)if(nu m%i=0) return 0;return 1;调用函数#in clude<>#in clude<>int main()int num;int sushu(i nt nu m);sca nf("%d",&n
8、u m);if(sushu(num)=0) printf("%d isn't a prime number!",num);else prin tf("%d is a prime nu mber!", nu m);return 0;4冒泡排序(升序)思路:N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样 小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进行 N-1趟排序。完整程序#in clude<>#defi ne N 10int main()int numN;int i,j;int t;for(i=0;i&l
9、t;N;i+)sca nf("%d",&n umi);for(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+)if(nu mj >nu mj+1)t=nu mj; nu mj=nu mj+1; nu mj+1=t;for(i=0;i<N;i+)prin tf("%d ",nu mi);return 0;封装函数void maopao(i nt num N)int i,j;int t;for(i=0;i<N-1;i+) for(j=0;j<N-1-i;j+) if(nu mj >nu mj+
10、1) t=nu mj; nu mj=nu mj+1; nu mj+1=t; 调用函数#in clude<>#defi ne N 10int main()int numN;int i,j;int t;void maopao(i nt nu mN);for(i=0;i<N;i+)sca nf("%d",&n umi);maopao (nu m);for(i=0;i<N;i+)prin tf("%d ",nu mi);return 0;J5选择排序(升序)完整程序#in clude<>#defi ne N 10int
11、 main()int numN;int i,j,k;int t;for(i=0;i<N;i+)sca nf("%d",&n umi);for(i=0;i<N-1;i+)k=i;for(j=i+1;j<N;j+)if(nu mk >nu mj) k=j;if(k!=i) t=nu mk; nu mk=nu mi; nu mi=t;for(i=0;i<N;i+)prin tf("%d ",nu mi);return 0;封装函数void xua nze(i nt num N)int i,j,k;int t;for(i=0
12、;i<N-1;i+)k=i;for(j=i+1;j<N;j+)if(nu mk >nu mj) k=j;if(k!=i) t=nu mk; nu mk=nu mi; nu mi=t;调用函数#in clude<>#defi ne N 10int main()int numN;int i,j,k;int t;void xua nze(i nt num N); for(i=0;i<N;i+) sca nf("%d",&n umi);xua nze( nu m); for(i=0;i<N;i+) prin tf("%d
13、",nu mi);return 0;6折半查找(升序)思路:N个按照从小到大排列好顺序的数, 再从中寻找一个数,不是依次扫 描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间 数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数, 则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输 出 Not found !。完整程序#in clude<>#defi ne N 10int main()int aN,low=0,high=N-1,mid,i,key,flag=0; for(i=0;i<N;i+)scan f("%d&qu
14、ot;,&ai);sca nf("%d",&key);while(low<=high) mid=(low+high)/2; if(amid=key)printf("Found! The index if %d",mid); flag=1;break;else if(amid>key) high=mid-1;else low=mid+1;if(!flag) prin tf("Not foun d!"); return 0;封装函数int zheba n(i nt aN,key)int low=0,high=N
15、-1,mid;while(low<=high) mid=(low+high)/2; if(amid=key) printf("Found! The index if %d",mid); return mid;else if(amid>key) high=mid-1; else low=mid+1;prin tf("Not foun d!");return -1;调用函数#in clude<>#defi ne N 10int main()int aN,low=0,high=N-1,mid,i,key,flag=0;int zheba
16、 n(i nt aN,key);for(i=0;i<N;i+)sea nf("%d",&ai);sea nf("%d",&key);zheba n( a,key);return 0;7找取大数(1)两个数找最大思路:比较两个数,输出较大者。完整程序#in elude<>int main()int x,y,z;sea nf("%d,%d", &x, &y); z=x>yx:y;prin tf("%d",z);return 0;封装函数int max(i nt x
17、,i nt y) int乙z=x>yx:y;return 乙调用函数#in clude<>int main()int x,y,z;int max(i nt x,i nt y);sca nf("%d,%d", &x, &y); prin tf("%d",max(x,y); return 0;(2)数组中找最大一维数组思路:让一个变量等于数组中第一个元素,从第二数开始依次进行比较, 碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#in clude<>#defi ne N 10int main()int n
18、umN;int i,max;for(i=0;i<N;i+)sca nf("%d",&n umi); max=num 0; for(i=1;i<N;i+)if(max <nu mi) max=nu mi; prin tf("%d",&max); return 0;封装函数int max(i nt num N)int max=num 0;int i;for(i=1;i<N;i+)if(max<numi) max=numi;return max;调用函数#in clude<>#defi ne N 10i
19、nt main()int numN;int i;int max(i nt num N);for(i=0;i<N;i+)sca nf("%d",&n umi);prin tf("%d",max( num);return 0;二维数组思路:让一个变量等于数组中第一个元素,从第一个数开始依次进行比较, 碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#in clude<>#defi ne N 10#defi ne M 5int main()int numNM;int i,j;int max;for(i=0;i<N;i+)f
20、or(j=0;j<M;j+)scan f("%d",&n umij);max=nu m00;for(i=0;i<N;i+)for(j=0;j<M;j+)if(max<numi) max=numi;prin tf("%d",max);return 0;封装函数int max(int numNM)int max=num 00;int i,j;for(i=0;i<N;i+) for(j=0;j<M;j+)if(max<numi) max=numi; return max;调用函数#in clude<>
21、;#defi ne N 10#defi ne M 5int main()int numNM;int i,j;int max(int numNM);for(i=0;i<N;i+) for(j=0;j<M;j+)scan f("%d",&n umij); prin tf("%d",max( num); return 0;8数组的行列转置思路:交换对应行列和列行的元素,注意只交换一半即可,否则相当于没 有交换。完整程序#in clude<>#defi ne N 5int main()int aNN;int i,j,t;for(i
22、=0;i<N;i+)for(j=0;j<N;j+) scan f("%d",&aij);for(i=0;i<N;i+) for(j=i+1;j<N;j+) t=aij; aij=aji; aji=t; for(i=0;i<N;i+) for(j=0;j<N;j+) prin tf("%d ",aij);prin tf("n"); return 0;封装函数void zhuanzhi(int aN)int i,j,t;for(i=0;i<N;i+) for(j=i+1;j<N;j+) t=aij; aij=aji; aji=t;调用函数#in clude<>#defi ne N 5int main()int aNN;int i,j;void zhua nzhi (int aN);for(i=0;i<N;i+) for(j=0;j<N;j+)scan f("%d",&aij); zhua nzhi(a); for(i=0;i<N;i+) for(j=0;j<N;j+) prin tf("%d ",aij);prin tf("n");return 0;9大整数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国养肤滋润香皂数据监测研究报告
- 乡村振兴战略下的农村地区全周期健康管理策略研究
- 企业中的心理健康管理基于区块链的数据保护解决方案
- 从个案到全局医疗伦理与合规培训维护医师尊严
- 安全教育:防震防火知识普及
- 国企外包服务合同协议
- 奉贤短途配送合同协议
- 国内信用证买卖合同协议
- 大健康加盟合同协议
- 大量房屋转让合同协议
- 抗菌药物临床应用指导原则(2023年版)
- 产品终检记录表
- 大学生创业计划书word文档(三篇)
- 暖通空调锅炉系统详细介绍
- MT 194-1989煤矿用巷道支架试验方法与型式检验规范
- 蝴蝶小知识及标本制作
- FZ/T 13056-2021涤粘混纺色纺弹力布
- 追寻美术家的视线 教案- 美术鉴赏
- 构图基础课件
- 文件记录控制培训课件
- 礼仪文书写作课件
评论
0/150
提交评论