C语言模板程序(新手必看!!)资料.doc

上传人:豆**** 文档编号:33577288 上传时间:2022-08-11 格式:DOC 页数:25 大小:196.50KB
返回 下载 相关 举报
C语言模板程序(新手必看!!)资料.doc_第1页
第1页 / 共25页
C语言模板程序(新手必看!!)资料.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《C语言模板程序(新手必看!!)资料.doc》由会员分享,可在线阅读,更多相关《C语言模板程序(新手必看!!)资料.doc(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流C语言模板程序(新手必看!)1求两个数最大公约数方法一:辗转相除法思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。完整程序#includeint 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;封装函数int gcd(int m,int n) do r=m%n; m=n; n=r; w

2、hile(n); return m;调用函数#includeint 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;方法二:更相减损法思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。完整程序#includeint main() int m,n; scanf(%d,%d,&m,&n); while(m!=n

3、) if(mn) m-=n; else n-=m; printf(greatest common divisor is %dn,m); return 0;封装函数int gcd(int m,int n) while(m!=n) if(mn) m-=n; else n-=m; return m;调用函数#includeint 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求两个数最小公倍数思路:两个数,从较大

4、的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。完整程序#includeint main() int m,n,i; scanf(%d,%d,&m,&n); for(i=(mn?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=(mn?m:n);i+) if(i%m=0 & i%n=0) return i;调用函数#includeint main() int m,n,i; int

5、lcm(int m,int n); scanf(%d,%d,&m,&n); printf(lease common multiple is %d,lcm(m,n); return 0;3判断素数思路:从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。完整程序#include#includeint 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 isnt a prime number!,num); flag

6、=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#includeint main() int num; int sushu(int num); scanf(%d,&num); if(sushu(num)=0) printf(%d isnt a prime number!,num); else printf(%d is a p

7、rime number!,num); return 0;4冒泡排序(升序)思路:N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进行N-1趟排序。 完整程序#include#define N 10int main() int numN; int i,j; int t; for(i=0;iN;i+) scanf(%d,&numi); for(i=0;iN-1;i+) for(j=0;jnumj+1) t=numj;numj=numj+1;numj+1=t; for(i=0;iN;i+) printf(%d ,numi); r

8、eturn 0;封装函数void maopao(int numN) int i,j; int t; for(i=0;iN-1;i+) for(j=0;jnumj+1) t=numj;numj=numj+1;numj+1=t;调用函数#include#define N 10int main() int numN; int i,j; int t; void maopao(int numN); for(i=0;iN;i+) scanf(%d,&numi); maopao(num); for(i=0;iN;i+) printf(%d ,numi); return 0;5选择排序(升序)思路:N个数,每

9、次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。共进行N-1趟排序。 完整程序#include#define N 10int main() int numN; int i,j,k; int t; for(i=0;iN;i+) scanf(%d,&numi); for(i=0;iN-1;i+) k=i; for(j=i+1;jnumj) k=j; if(k!=i) t=numk;numk=numi;numi=t; for(i=0;iN;i+) printf(%d ,numi); return 0;封装函数void xuanze(

10、int numN) int i,j,k; int t; for(i=0;iN-1;i+) k=i; for(j=i+1;jnumj) k=j; if(k!=i) t=numk;numk=numi;numi=t; 调用函数#include#define N 10int main() int numN; int i,j,k; int t; void xuanze(int numN); for(i=0;iN;i+) scanf(%d,&numi); xuanze(num); for(i=0;iN;i+) printf(%d ,numi); return 0;6折半查找(升序)思路:N个按照从小到大排

11、列好顺序的数,再从中寻找一个数,不是依次扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输出Not found!。完整程序#include#define N 10int main() int aN,low=0,high=N-1,mid,i,key,flag=0; for(i=0;iN;i+) scanf(%d,&ai); scanf(%d,&key); while(lowkey) high=mid-1; else low=mid+1; if(!flag

12、) printf(Not found!); return 0;封装函数int zheban(int aN,key) int low=0,high=N-1,mid; while(lowkey) high=mid-1; else low=mid+1; printf(Not found!); return -1;调用函数#include#define N 10int main() int aN,low=0,high=N-1,mid,i,key,flag=0; int zheban(int aN,key); for(i=0;iN;i+) scanf(%d,&ai); scanf(%d,&key); z

13、heban(a,key); return 0;7找最大数(1)两个数找最大思路:比较两个数,输出较大者。完整程序#includeint main() int x,y,z; scanf(%d,%d,&x,&y); z=xy?x:y; printf(%d,z); return 0;封装函数int max(int x,int y) int z; z=xy?x:y; return z;调用函数#includeint main() int x,y,z; int max(int x,int y); scanf(%d,%d,&x,&y); printf(%d,max(x,y); return 0;(2)数组

14、中找最大一维数组思路:让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。完整程序#include#define N 10int main() int numN; int i,max; for(i=0;iN;i+) scanf(%d,&numi); max=num0; for(i=1;iN;i+) if(maxnumi) max=numi; printf(%d,&max); return 0;封装函数int max(int numN) int max=num0; int i; for(i=1;iN;i+) if(maxnumi) max=nu

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

16、(j=0;jM;j+) scanf(%d,&numij); max=num00; for(i=0;iN;i+) for(j=0;jM;j+) if(maxnumi) max=numi; printf(%d,max); return 0;封装函数int max(int numNM) int max=num00; int i,j; for(i=0;iN;i+) for(j=0;jM;j+) if(maxnumi) max=numi; return max;调用函数#include#define N 10#define M 5int main() int numNM; int i,j; int ma

17、x(int numNM); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%d,&numij); printf(%d,max(num); return 0;8数组的行列转置思路:交换对应行列和列行的元素,注意只交换一半即可,否则相当于没有交换。完整程序#include#define N 5int main() int aNN; int i,j,t; for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&aij); for(i=0;iN;i+) for(j=i+1;jN;j+) t=aij; aij=aji; aji=t; for(i=0;iN

18、;i+) for(j=0;jN;j+) printf(%d ,aij); printf(n); return 0;封装函数void zhuanzhi(int aN) int i,j,t; for(i=0;iN;i+) for(j=i+1;jN;j+) t=aij; aij=aji; aji=t; 调用函数#include#define N 5int main() int aNN; int i,j; void zhuanzhi(int aN); for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&aij); zhuanzhi(a); for(i=0;iN;i+) fo

19、r(j=0;jN;j+) printf(%d ,aij); printf(n); return 0;9大整数(1)大整数的输入思路:用字符类型输入。完整程序#include#includeint main() char ch101; scanf(%s,ch);/或gets(ch); return 0;封装函数void Input_Big_Num(char ch101) scanf(%s,ch);/或gets(ch);调用函数#include#includeint main() char ch101; void Input_Big_Num(char ch101); Input_Big_Num(c

20、h); return 0;(2)大整数的处理将大整数个位到最高位放在下标从0开始的整形数完整程序#include#includeint main() char ch101; int data100; int len,i; scanf(%s,ch);/或gets(ch); len=strlen(ch); for(i=0;ilen;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;ilen;i+) datai=ch1len-

21、i-1-0; return len-1;调用函数#include#includeint 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#includeint main() char ch101; int data100; int len,i; scan

22、f(%s,ch);/或gets(ch); len=strlen(ch); for(i=0;ilen;i+) datai=chi-0; return 0;封装函数int Chuli2_Big_Num(char ch101,int data100) int len,i; len=strlen(ch); for(i=0;ilen;i+) datai=ch1i-0; return len-1;调用函数#include#includeint main() char ch101=0; int data100=0; void Input_Big_Num(char ch101); int Chuli2_Big

23、_Num(char ch101,int data100); Input_Big_Num(ch); Chuli_Big_Num(ch,data); return 0;(3)大整数的输出完整程序#include#includeint main() char ch101; int data100; int len,i; scanf(%s,ch);/或gets(ch); len=strlen(ch); for(i=0;i=0;i-) printf(%d,datai); return 0;封装函数void Output_Big_Num(int data100,int weishu) int i; for

24、(i=weishu-1;i=0;i-) printf(%d,datai);调用函数#include#includeint 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); Output_Big_Num(data,w

25、eishu); return 0;(4)大整数的加法(两个大整数相加)完整程序#include#includeint 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); len1=strlen(ch1); for(i=0;ilen1;i+) data1i=ch1len-i-1-0; len2=strlen(ch2); for(i=0;ilen2

26、;i+) data2i=ch2len-i-1-0; for(i=0;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=0;i-) if(data3i!=0) weishu=i; break; return weishu;调用函数#include#includeint main() char ch1101=0,c

27、h2101=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 data3101); Input_Big_Num(ch1); Input_Big_Num(ch2); Chuli_Big_Num(ch1,data

28、1); Chuli_Big_Num(ch2,data2); weishu=Plus_Big_Num(data1,data2,data3); Output_Big_Num(data3,weishu); return 0;(5)大整数的乘法(一个大整数乘一个小整数)完整程序#include#includeint main() 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;ilen;i+) datai=chlen-i-1-0; for(i=0;i1

29、00;i+) datai*=n;/每一位上的数分别乘以n,并存放 for(i=0;i=10)/如果某一位上的数大于10,则要进位 datai+1+=datai/10;/逢十进一 datai=datai%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;i100;i+) Dat

30、ai*=n;/每一位上的数分别乘以n,并存放 for(i=0;i=10)/如果某一位上的数大于10,则要进位 Datai+1+=Datai/10;/逢十进一 Datai=Datai%10;/进位之后,保留余数 for(i=99;i=0;i-) if(Datai!=0) *p=i+1; break; 调用函数#includeint 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 d

31、ata100); void Output_Big_Num(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 #include int main() int data1

32、100=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;ilen1;i+) data1i=ch1len1-i-1-0; for(i=0;ilen2;i+) data2i=ch2len2-i-1-0; for(i=0;ilen2;i+) for(j=0;jlen1;j+) rj+i+=data1j*data2i; for(i=0;i200;i+) ri+1+=ri/10;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com