C语言模板程序(新手必看!!)_第1页
C语言模板程序(新手必看!!)_第2页
C语言模板程序(新手必看!!)_第3页
C语言模板程序(新手必看!!)_第4页
C语言模板程序(新手必看!!)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言模板程序 第11页共29页C语言模板程序(新手必看!)C语言模板程序1求两个数最大公约数方法一:辗转 相除 法思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为 0,这时较大的数就是最大公约 数。完整程序#include<stdio.h>int main()int m,n,r;scanf("%d,%d",&m,&n);dor=m%n;m=n;n=r;while(n);printf("greatest common divisor is %dn",m);return 0;封

2、装函数int gcd(int m,int n)dor=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;调用函数#include<stdio.h&g

4、t;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",&m,&n);fo

5、r(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);scanf("%d,%d",&

6、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<=k;i+)if(num%i=0) printf("%d isn

7、9;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()int num;int sushu(int num);scanf("%d”,&

8、num);if(sushu(num)=0) printf("%d isn't a prime number!",num); else printf("%d is a prime number!",num);return 0;4冒泡#E序(升序)思路:N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这 样小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进 行N-1趟排序。完整程序#include<stdio.h>#define N 10 int main() int numN;int i,j; int t;for(i

9、=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(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+) if(numj>numj+1) t=numj;numj=num

10、j+1;numj+1=t; 调用函数#include<stdio.h>#define N 10 int 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);return 0;J 选择排序(升序)思路:N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中 最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。共进

11、行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!=i) t=numk;numk=numi;numi=t;for(i=0;i<N;i+)printf("%d ”,numi);return 0;封装函数void xuanze(int numN

12、)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 10 int main() int numN;int i,j,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(&qu

13、ot;%d ”,numi); return 0;折半查找(升序)思路:N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次 扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中 间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数, 则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输 出 Not found!。完整程序#include<stdio.h>#define N 10 int main() int aN,low=0,high=N-1,mid,i,key,flag=0;for(i=0;i<N;i+) scanf("%

14、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(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;

15、 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; printf("Not found!"); return -1; 调用函数#include<stdio.h>#define N 10 int main() int aN,low=0,high=N-1,mid,i,key,flag=0;int zheba

16、n(int aN,key);for(i=0;i<N;i+)scanf("%d”,&ai);scanf("%d”,&key);zheban(a,key); return 0;J 找最大数(1)两个数找最大思路:比较两个数,输出较大者。 完整程序#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

17、>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);printf("%d”,max(x,y); return 0;(2)数组中找最大一维数组思路:让一个变量等于数组中第一个元素,从第二数开始依次进行比较, 碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#include<stdio.h>#define N 10 int main() int numN;int i,

18、max;for(i=0;i<N;i+)scanf("%d”,&numi);max=num0;for(i=1;i<N;i+)if(max<numi) max=numi;printf("%d”,&max); return 0;J封装函数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 10 int main() int numN;int

19、i;int max(int numN);for(i=0;i<N;i+)scanf("%d”,&numi);printf("%d”,max(num); return 0;二维数组思路:让一个变量等于数组中第一个元素,从第一个数开始依次进行比较, 碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#include<stdio.h>#define N 10#define M 5 int main() int numNM;int i,j;int max;for(i=0;i<N;i+)for(j=0;j<M;j+)scanf("%d

20、”,&numij);max=num00;for(i=0;i<N;i+)for(j=0;j<M;j+)if(max<numi) max=numi;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 5 int main() int n

21、umNM;int i,j;int max(int numNM);for(i=0;i<N;i+)for(j=0;j<M;j+) scanf("%d”,&numij); printf("%d”,max(num);return 0;8数组中行列转置|思路:交换对应行列和列行的元素,注意只交换一半即可,否则相当于没 有交换。完整程序#include<stdio.h> #define N 5 int main() int aNN;int i,j,t;for(i=0;i<N;i+)for(j=0;j<N;j+) scanf("%d”

22、,&aij); for(i=0;i<N;i+)for(j=i+1;j<N;j+) t=aij aij=a皿i; a皿i=t;for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%d ",aij);printf("n"); return 0;封装函数void zhuanzhi(int a口N) int i,j,t;for(i=0;i<N;i+) for(j=i+1;j<N;j+) t=aij;aij=a皿i; a皿i=t;调用函数C语言模板程序第14页共29页#include<s

23、tdio.h> #define N 5 int main() int aNN;int i,j;void zhuanzhi(int a口N);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>#i

24、nclude<string.h> int main()char ch101;scanf("%s",ch);/w£ gets(ch); return 0;封装函数void Input_Big_Num(char ch101)一 一scanf("%s",ch);/M gets(ch);调用函数C语言模板程序 第13页共29页#include<stdio.h>#include<string.h>int main()char ch101;void Input_Big_Num(char ch101);Input_Big_

25、Num(ch);return 0;(2)大整数的处理一将大整数个位到最高位放在下标从0开始的整形数 完整程序#include<stdio.h>#include<string.h>int main()char ch101;int data100;int len,i;scanf("%s",ch);/w£ 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 data1

26、00)int len,i;len=strlen(ch);for(i=0;i<len;i+)datai=ch1len-i-1-'0'return len-1;调用函数C语言模板程序 第27页共29页#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_B

27、ig_Num(ch,data);return 0;将大整数最高位到个位放在下标从0开始的整形数完整程序#include<stdio.h>#include<string.h> int main()char ch101;int data100;int len,i;scanf("%s",ch);/w£ gets(ch);len=strlen(ch);for(i=0;i<len;i+) datai=chi-'0'return 0;封装函数int Chuli2_Big_Num(char ch101,int data100) in

28、t len,i;len=strlen(ch);for(i=0;i<len;i+)datai=ch1i-'0'return len-1;调用函数#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;(

29、3)大整数的输出完整程序#include<stdio.h>#include<string.h> int main()char ch101;int data100;int len,i;scanf("%s",ch);/w£ 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 data1

30、00,int weishu)一 一int i;for(i=weishu-1;i>=0;i-) printf("%d”,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);I

31、nput_Big_Num(ch);weishu=Chuli_Big_Num(ch,data);Output_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&quo

32、t;,ch1);/w£ gets(chl);scanf("%s",ch2);/w£ gets(ch2);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

33、;i>=0;i-) if(data3i!=0)len=i;break;for(i=len;i>=0;i-)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; bre

34、ak; return weishu;调用函数#include<stdio.h>#include<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);voi

35、d Plus_Big_Num(int data1100,int data2100,int data3101);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 mai

36、n()char ch101='0'int data100=0;int 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=da

37、tai%10;/进位之后,保留余数for(i=99;i>=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,则要进

38、位Datai+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(int

39、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;J(6)大整数的乘法(一个大整数乘一个大整数)完整程序#include <stdio.h>#include <string.h>int main()in

40、t data1100=0,data2100=0;int r200=0;char ch1101=''0',ch2101=''0'int i,j,k=0;int len1,len2;gets(chl);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<len2;i+)for(j=0;j&

41、lt;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+)for(j=0;j<len1;j+)rj+i+

42、=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 len1,len2;void Input_Big_Num(cha

43、r 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(ch2,data2)+1;i=Mutiply_BigNum_BigNum

44、(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=strlen(ch);scanf("%d",&k);for(i=0;i<

45、;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.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论