




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言模板程序 第 28 页 共 28 页C语言模板程序1求两个数最大公约数方法一:辗转相除法思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。完整程序#include<stdio.h>int main() int m,n,r; scanf("%d,%d",&m,&n); do r=m%n; m=n; n=r; while(n); printf("greatest common divisor is %dn",m); return 0;封装函数i
2、nt gcd(int m,int n) do r=m%n; m=n; n=r; while(n); return m;调用函数#include<stdio.h>int main() int m,n,r; int gcd(int m,int n); scanf("%d,%d",&m,&n); gcd(int m,int n); printf("greatest common divisor is %dn",m); return 0;方法二:更相减损法思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前
3、的过程,直到两个数相等,这时这两个数就是最大公约数。完整程序#include<stdio.h>int main() int m,n; scanf("%d,%d",&m,&n); while(m!=n) if(m>n) m-=n; else n-=m; printf("greatest common divisor is %dn",m); return 0;封装函数int gcd(int m,int n) while(m!=n) if(m>n) m-=n; else n-=m; return m;调用函数#inclu
4、de<stdio.h>int main() int m,n,r; int gcd(int m,int n); scanf("%d,%d",&m,&n); printf("greatest common divisor is %dn",gcd(m,n); return 0;2求两个数最小公倍数思路:两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。完整程序#include<stdio.h>int main() int m,n,i; scanf("%d,%d"
5、,&m,&n); for(i=(m>n?m:n);i+) if(i%m=0 && i%n=0) printf("lease common multiple is %d",i); break; return 0;封装函数int lcm(int m,int n) int i; for(i=(m>n?m:n);i+) if(i%m=0 && i%n=0) return i;调用函数#include<stdio.h>int main() int m,n,i; int lcm(int m,int n); scan
6、f("%d,%d",&m,&n); printf("lease common multiple is %d",lcm(m,n); return 0;3判断素数思路:从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。完整程序#include<stdio.h>#include<math.h>int main() int num; int i,k,flag=1; scanf("%d",&num); k=sqrt(num); for(i=2;i<=
7、k;i+) if(num%i=0) printf("%d isn't a prime number!",num); flag=0; if(flag) printf("%d is a prime number!",num); return 0;封装函数int sushu(int num) int i,k; k=sqrt(num); for(i=2;i<=k;i+) if(num%i=0) return 0; return 1;调用函数#include<stdio.h>#include<math.h>int main()
8、 int num; int sushu(int num); scanf("%d",&num); if(sushu(num)=0) printf("%d isn't a prime number!",num); else printf("%d is a prime number!",num); return 0;4冒泡排序(升序)思路:N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进行N-1趟排序。 完整程序#include<stdio.h&
9、gt;#define N 10int main() int numN; int i,j; int t; for(i=0;i<N;i+) scanf("%d",&numi); for(i=0;i<N-1;i+) for(j=0;j<N-1-i;j+) if(numj>numj+1) t=numj;numj=numj+1;numj+1=t; for(i=0;i<N;i+) printf("%d ",numi); return 0;封装函数void maopao(int numN) int i,j; int t; for(
10、i=0;i<N-1;i+) for(j=0;j<N-1-i;j+) if(numj>numj+1) t=numj;numj=numj+1;numj+1=t;调用函数#include<stdio.h>#define N 10int main() int numN; int i,j; int t; void maopao(int numN); for(i=0;i<N;i+) scanf("%d",&numi); maopao(num); for(i=0;i<N;i+) printf("%d ",numi);
11、return 0;5选择排序(升序)思路:N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。共进行N-1趟排序。 完整程序#include<stdio.h>#define N 10int main() int numN; int i,j,k; int t; for(i=0;i<N;i+) scanf("%d",&numi); for(i=0;i<N-1;i+) k=i; for(j=i+1;j<N;j+) if(numk>numj) k=j; if(k!=
12、i) t=numk;numk=numi;numi=t; for(i=0;i<N;i+) printf("%d ",numi); return 0;封装函数void xuanze(int numN) int i,j,k; int t; for(i=0;i<N-1;i+) k=i; for(j=i+1;j<N;j+) if(numk>numj) k=j; if(k!=i) t=numk;numk=numi;numi=t; 调用函数#include<stdio.h>#define N 10int main() int numN; int i,j
13、,k; int t; void xuanze(int numN); for(i=0;i<N;i+) scanf("%d",&numi); xuanze(num); for(i=0;i<N;i+) printf("%d ",numi); return 0;6折半查找(升序)思路:N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输出Not
14、found!。完整程序#include<stdio.h>#define N 10int main() int aN,low=0,high=N-1,mid,i,key,flag=0; for(i=0;i<N;i+) scanf("%d",&ai); scanf("%d",&key); while(low<=high) mid=(low+high)/2; if(amid=key) printf("Found! The index if %d",mid); flag=1; break; else if
15、(amid>key) high=mid-1; else low=mid+1; if(!flag) printf("Not found!"); return 0;封装函数int zheban(int aN,key) int low=0,high=N-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
16、+1; printf("Not found!"); return -1;调用函数#include<stdio.h>#define N 10int main() int aN,low=0,high=N-1,mid,i,key,flag=0; int zheban(int aN,key); for(i=0;i<N;i+) scanf("%d",&ai); scanf("%d",&key); zheban(a,key); return 0;7找最大数(1)两个数找最大思路:比较两个数,输出较大者。完整程序#
17、include<stdio.h>int main() int x,y,z; scanf("%d,%d",&x,&y); z=x>y?x:y; printf("%d",z); return 0;封装函数int max(int x,int y) int z; z=x>y?x:y; return z;调用函数#include<stdio.h>int main() int x,y,z; int max(int x,int y); scanf("%d,%d",&x,&y); p
18、rintf("%d",max(x,y); return 0;(2)数组中找最大一维数组思路:让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#include<stdio.h>#define N 10int main() int numN; int i,max; for(i=0;i<N;i+) scanf("%d",&numi); max=num0; for(i=1;i<N;i+) if(max<numi) max=numi; printf("%
19、d",&max); return 0;封装函数int max(int numN) int max=num0; int i; for(i=1;i<N;i+) if(max<numi) max=numi; return max;调用函数#include<stdio.h>#define N 10int main() int numN; int i; int max(int numN); for(i=0;i<N;i+) scanf("%d",&numi); printf("%d",max(num); ret
20、urn 0;二维数组思路:让一个变量等于数组中第一个元素,从第一个数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#include<stdio.h>#define N 10#define M 5int main() int numNM; int i,j; int max; for(i=0;i<N;i+) for(j=0;j<M;j+) scanf("%d",&numij); max=num00; for(i=0;i<N;i+) for(j=0;j<M;j+) if(max<numi) max=num
21、i; printf("%d",max); return 0;封装函数int max(int numNM) int max=num00; int i,j; for(i=0;i<N;i+) for(j=0;j<M;j+) if(max<numi) max=numi; return max;调用函数#include<stdio.h>#define N 10#define M 5int main() int numNM; int i,j; int max(int numNM); for(i=0;i<N;i+) for(j=0;j<M;j+)
22、 scanf("%d",&numij); printf("%d",max(num); return 0;8数组的行列转置思路:交换对应行列和列行的元素,注意只交换一半即可,否则相当于没有交换。完整程序#include<stdio.h>#define N 5int main() int aNN; int i,j,t; for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%d",&aij); for(i=0;i<N;i+) for(j=i+1;j<N;j+) t
23、=aij; aij=aji; aji=t; for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%d ",aij); printf("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; 调用函数#include<stdio.h>#define N 5int main() int aNN; int i,j; void zhuanzh
24、i(int aN); for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%d",&aij); zhuanzhi(a); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%d ",aij); printf("n"); return 0;9大整数(1)大整数的输入思路:用字符类型输入。完整程序#include<stdio.h>#include<string.h>int main() char ch101; scanf(&qu
25、ot;%s",ch);/或gets(ch); return 0;封装函数void Input_Big_Num(char ch101) scanf("%s",ch);/或gets(ch);调用函数#include<stdio.h>#include<string.h>int main() char ch101; void Input_Big_Num(char ch101); Input_Big_Num(ch); return 0;(2)大整数的处理将大整数个位到最高位放在下标从0开始的整形数完整程序#include<stdio.h>
26、#include<string.h>int main() char ch101; int data100; int len,i; scanf("%s",ch);/或gets(ch); len=strlen(ch); for(i=0;i<len;i+) datai=chlen-i-1-'0' return 0;封装函数int Chuli_Big_Num(char ch101,int data100) int len,i; len=strlen(ch); for(i=0;i<len;i+) datai=ch1len-i-1-'0&
27、#39; return len-1;调用函数#include<stdio.h>#include<string.h>int main() char ch101='0' int data100=0; void Input_Big_Num(char ch101); int Chuli_Big_Num(char ch101,int data100); Input_Big_Num(ch); Chuli_Big_Num(ch,data); return 0;将大整数最高位到个位放在下标从0开始的整形数完整程序#include<stdio.h>#inclu
28、de<string.h>int main() char ch101; int data100; int len,i; scanf("%s",ch);/或gets(ch); len=strlen(ch); for(i=0;i<len;i+) datai=chi-'0' return 0;封装函数int Chuli2_Big_Num(char ch101,int data100) int len,i; len=strlen(ch); for(i=0;i<len;i+) datai=ch1i-'0' return len-1
29、;调用函数#include<stdio.h>#include<string.h>int main() char ch101='0' int data100=0; void Input_Big_Num(char ch101); int Chuli2_Big_Num(char ch101,int data100); Input_Big_Num(ch); Chuli_Big_Num(ch,data); return 0;(3)大整数的输出完整程序#include<stdio.h>#include<string.h>int main()
30、char ch101; int data100; int len,i; scanf("%s",ch);/或gets(ch); len=strlen(ch); for(i=0;i<len;i+) datai=ch1len-i-1-'0' for(i=len-1;i>=0;i-) printf("%d",datai); return 0;封装函数void Output_Big_Num(int data100,int weishu) int i; for(i=weishu-1;i>=0;i-) printf("%d&
31、quot;,datai);调用函数#include<stdio.h>#include<string.h>int main() char ch101='0' int data100=0; int weishu; void Input_Big_Num(char ch101); int Chuli_Big_Num(char ch101,int data100); void Output_Big_Num(int data100,int weishu); Input_Big_Num(ch); weishu=Chuli_Big_Num(ch,data); Outpu
32、t_Big_Num(data,weishu); return 0;(4)大整数的加法(两个大整数相加)完整程序#include<stdio.h>#include<string.h>int main() char ch1101='0',ch2101='0' int data1100=0,data2100=0,data3101=0; int len1,len2,len,i,jinwei=0; scanf("%s",ch1);/或gets(ch1); scanf("%s",ch2);/或gets(ch2)
33、; len1=strlen(ch1); for(i=0;i<len1;i+) data1i=ch1len-i-1-'0' len2=strlen(ch2); for(i=0;i<len2;i+) data2i=ch2len-i-1-'0' for(i=0;i<100;i+) data3i=data1i+data2i+jinwei; jinwei=data3i/10; data3i=data3i%10; for(i=100;i>=0;i-) if(data3i!=0) len=i; break; for(i=len;i>=0;i-)
34、printf("%d",data3i); return 0;封装函数int Plus_Big_Num(int data1100,int data2100,int data3101) int i,jinwei=0; for(i=0;i<100;i+) data3i=data1i+data2i+jinwei; jinwei=data3i/10; data3i=data3i%10; for(i=100;i>=0;i-) if(data3i!=0) weishu=i; break; return weishu;调用函数#include<stdio.h>#in
35、clude<string.h>int main() char ch1101='0',ch2101='0' int data1100=0,data2100=0,data3101=0; int weishu; void Input_Big_Num(char ch101); int Chuli_Big_Num(char ch101,int data100); void Output_Big_Num(int data100,int weishu); void Plus_Big_Num(int data1100,int data2100,int data310
36、1); Input_Big_Num(ch1); Input_Big_Num(ch2); Chuli_Big_Num(ch1,data1); Chuli_Big_Num(ch2,data2); weishu=Plus_Big_Num(data1,data2,data3); Output_Big_Num(data3,weishu); return 0;(5)大整数的乘法(一个大整数乘一个小整数)完整程序#include<stdio.h>#include<string.h>int main() char ch101='0' int data100=0; int
37、 len,i,r,f=0,n; scanf("%s",ch); scanf("%d",&n); len=strlen(ch); for(i=0;i<len;i+) datai=chlen-i-1-'0' for(i=0;i<100;i+) datai*=n;/每一位上的数分别乘以n,并存放 for(i=0;i<100;i+) if(datai>=10)/如果某一位上的数大于10,则要进位 datai+1+=datai/10;/逢十进一 datai=datai%10;/进位之后,保留余数 for(i=99;i
38、>=0;i-) if(datai!=0 && f=0) printf("%d",datai); f=1; else if(f) printf("%d",datai); return 0;封装函数void Mutiply_BigNum_SmallNum(int Data100,int n,int *p) int i,r; for(i=0;i<100;i+) Datai*=n;/每一位上的数分别乘以n,并存放 for(i=0;i<100;i+) if(Datai>=10)/如果某一位上的数大于10,则要进位 Datai
39、+1+=Datai/10;/逢十进一 Datai=Datai%10;/进位之后,保留余数 for(i=99;i>=0;i-) if(Datai!=0) *p=i+1; break; 调用函数#include<stdio.h>int main() char ch101='0' int data100=0; int n,weishu=0; int *p=&weishu; void Input_Big_Num(char ch101); int Chuli_Big_Num(char ch101,int data100); void Output_Big_Num
40、(int data100,int weishu); void Mutiply_BigNum_SmallNum(int Data100,int n,int *p); Input_Big_Num(ch); Chuli_Big_Num(ch,data); scanf("%d",&n); Mutiply_BigNum_SmallNum(data,n,p); Output_Big_Num(data,*p); return 0;(6)大整数的乘法(一个大整数乘一个大整数)完整程序#include <stdio.h>#include <string.h>i
41、nt main() int data1100=0,data2100=0; int r200=0; char ch1101='0',ch2101='0' int i,j,k=0; int len1,len2; gets(ch1); gets(ch2); len1=strlen(ch1); len2=strlen(ch2); for(i=0;i<len1;i+) data1i=ch1len1-i-1-'0' for(i=0;i<len2;i+) data2i=ch2len2-i-1-'0' for(i=0;i<len
42、2;i+) for(j=0;j<len1;j+) rj+i+=data1j*data2i; for(i=0;i<200;i+) ri+1+=ri/10; ri%=10; for(i=199;i>=0;i-) if(ri!=0) break; for(i=i;i>=0;i-) printf("%d",ri); return 0;封装函数int Mutiply_BigNum_BigNum(int data1100,int data2100,int r200,int len1,int len2) int i,j; for(i=0;i<len2;i+)
43、 for(j=0;j<len1;j+) rj+i+=data1j*data2i; for(i=0;i<200;i+) ri+1+=ri/10; ri%=10; for(i=199;i>=0;i-) if(ri!=0) break; return i;调用函数#include <stdio.h>#include <string.h>int main() int data1100=0,data2100=0; int r200=0; char ch1101='0',ch2101='0' int i,j,k=0; int len
44、1,len2; void Input_Big_Num(char ch101); int Chuli_Big_Num(char ch101,int data100); void Output_Big_Num(int data100,int weishu); int Mutiply_BigNum_BigNum(int data1100,int data2100,int r200,int len1,int len2); Iuput_Big_Num(ch1); Input_Big_Num(ch2); len1=Chuli_Big_Num(ch1,data1)+1; len2=Chuli_Big_Num
45、(ch2,data2)+1; i=Mutiply_BigNum_BigNum(data1,data2,r,len1,len2); for(i=i;i>=0;i-) printf("%d",ri); return 0;(7)大整数的除法(一个大整数除以一个小整数且能整只保留整数)完整程序#include<stdio.h>int main() long int Data100=0,result100=0; int i,k,flag=0,len; char ch101='0' scanf("%s",ch); len=strle
46、n(ch); scanf("%d",&k); for(i=0;i<len;i+) Datai=chi-'0' for(i=0;i<len;i+) resulti=Datai/k; Datai+1+=Datai%k*10; for(i=0;i<len;i+) if(resulti!=0) flag=1; if(flag) printf("%d",resulti); return 0;封装函数int Division_Big_Num(int Data100,int result100,int k,int len) int i,flag=0; for(i=0;i<len;i+) Datai=chi-'0' for(i=0;i<len;i+) resulti=Datai/k; Datai+1+=Datai%k*10; return len;调用函数#include<stdio.h>#include<string.h>int main() c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学毕业典礼活动的策划方案
- 2025年急危重症医学危重症监护护理实践考核答案及解析
- 2025年食管胃肠镜检查解读训练答案及解析
- 2025年放射肿瘤学放疗计划设计知识检测模拟考试卷答案及解析
- 2025年中药制药工艺流程掌握考核模拟试卷答案及解析
- 2025年医学心理学患者心理疏导训练考核答案及解析
- 2025年营养学营养学实践操作规范考核试卷答案及解析
- 服装行业:新质生产力的升级路径
- 新质生产力如何因地制宜
- 2025年外科护士的急救技能评估试卷答案及解析
- 职场礼仪之应酬礼仪
- 小学数学五年级上册《轴对称的再认识(一)》课件
- 《关于加强和改进新时代师德师风建设的意见》培训课件
- 影视广告创意设计和制作PPT完整全套教学课件
- 第十四章滚动轴承相关设计
- GB/T 14456.1-2017绿茶第1部分:基本要求
- 远离电子烟主题班会课件
- 设备维护保养手册
- ZYHZYHC系列自控远红外电焊条烘干炉使用说明书
- 高中政治统编版(2022)必修3(教案)我国法治建设历程(完整文档)
- 市场营销策划(第五版)第08章 促销策划
评论
0/150
提交评论