c语言模板程序新手必看.docx
- 文档编号:25076719
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:54
- 大小:19.85KB
c语言模板程序新手必看.docx
《c语言模板程序新手必看.docx》由会员分享,可在线阅读,更多相关《c语言模板程序新手必看.docx(54页珍藏版)》请在冰豆网上搜索。
c语言模板程序新手必看
C语言模板程序
1
求两个数最大公约数
方法一:
辗转相除法
思路:
两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。
完整程序
#include
intmain()
{
intm,n,r;
scanf("%d,%d",&m,&n);
do
{
r=m%n;
m=n;
n=r;
}
while(n);
printf("greatestcommondivisoris%d\n",m);
return0;
}
封装函数
intgcd(intm,intn)
{
do
{
r=m%n;
m=n;
n=r;
}
while(n);
returnm;
}
调用函数
#include
intmain()
{
intm,n,r;
intgcd(intm,intn);
scanf("%d,%d",&m,&n);
gcd(intm,intn);
printf("greatestcommondivisoris%d\n",m);
return0;
}
方法二:
更相减损法
思路:
两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。
完整程序
#include
intmain()
{
intm,n;
scanf("%d,%d",&m,&n);
while(m!
=n)
{
if(m>n)m-=n;
elsen-=m;
}
printf("greatestcommondivisoris%d\n",m);
return0;
}
封装函数
intgcd(intm,intn)
{
while(m!
=n)
{
if(m>n)m-=n;
elsen-=m;
}
returnm;
}
调用函数
#include
intmain()
{
intm,n,r;
intgcd(intm,intn);
scanf("%d,%d",&m,&n);
printf("greatestcommondivisoris%d\n",gcd(m,n));
return0;
}
2
求两个数最小公倍数
思路:
两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。
完整程序
#include
intmain()
{
intm,n,i;
scanf("%d,%d",&m,&n);
for(i=(m>n?
m:
n);;i++)
if(i%m==0&&i%n==0)
{
printf("leasecommonmultipleis%d",i);
break;
}
return0;
}
封装函数
intlcm(intm,intn)
{
inti;
for(i=(m>n?
m:
n);;i++)
if(i%m==0&&i%n==0)
returni;
}
调用函数
#include
intmain()
{
intm,n,i;
intlcm(intm,intn);
scanf("%d,%d",&m,&n);
printf("leasecommonmultipleis%d",lcm(m,n));
return0;
}
3
判断素数
思路:
从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。
完整程序
#include
#include
intmain()
{
intnum;
inti,k,flag=1;
scanf("%d",&num);
k=sqrt(num);
for(i=2;i<=k;i++)
{
if(num%i==0)printf("%disn'taprimenumber!
",num);
flag=0;
}
if(flag)printf("%disaprimenumber!
",num);
return0;
}
封装函数
intsushu(intnum)
{
inti,k;
k=sqrt(num);
for(i=2;i<=k;i++)
{
if(num%i==0)return0;
}
return1;
}
调用函数
#include
#include
intmain()
{
intnum;
intsushu(intnum);
scanf("%d",&num);
if(sushu(num)==0)printf("%disn'taprimenumber!
",num);
elseprintf("%disaprimenumber!
",num);
return0;
}
4
冒泡排序(升序)
思路:
N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样小的数就会像气泡一样往前冒。
一趟排序完成后最后一个数最大。
共进行N-1趟排序。
完整程序
#include
#defineN10
intmain()
{
intnum[N];
inti,j;
intt;
for(i=0;i scanf("%d",&num[i]); for(i=0;i for(j=0;j if(num[j]>num[j+1]) {t=num[j];num[j]=num[j+1];num[j+1]=t;} for(i=0;i printf("%d",num[i]); return0; } 封装函数 voidmaopao(intnum[N]) { inti,j; intt; for(i=0;i for(j=0;j if(num[j]>num[j+1]) {t=num[j];num[j]=num[j+1];num[j+1]=t;} } 调用函数 #include #defineN10 intmain() { intnum[N]; inti,j; intt; voidmaopao(intnum[N]); for(i=0;i scanf("%d",&num[i]); maopao(num); for(i=0;i printf("%d",num[i]); return0; } 5 选择排序(升序) 思路: N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。 一趟排序完成后最前面的数最小。 共进行N-1趟排序。 完整程序 #include #defineN10 intmain() { intnum[N]; inti,j,k; intt; for(i=0;i scanf("%d",&num[i]); for(i=0;i { k=i; for(j=i+1;j if(num[k]>num[j])k=j; if(k! =i){t=num[k];num[k]=num[i];num[i]=t;} } for(i=0;i printf("%d",num[i]); return0; } 封装函数 voidxuanze(intnum[N]) { inti,j,k; intt; for(i=0;i { k=i; for(j=i+1;j if(num[k]>num[j])k=j; if(k! =i){t=num[k];num[k]=num[i];num[i]=t;} } } 调用函数 #include #defineN10 intmain() { intnum[N]; inti,j,k; intt; voidxuanze(intnum[N]); for(i=0;i scanf("%d",&num[i]); xuanze(num); for(i=0;i printf("%d",num[i]); return0; } 6 折半查找(升序) 思路: N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段寻找。 找到了,输出这个数的下标,如果找不到,输出Notfound! 。 完整程序 #include #defineN10 intmain() { inta[N],low=0,high=N-1,mid,i,key,flag=0; for(i=0;i scanf("%d",&a[i]); scanf("%d",&key); while(low<=high) { mid=(low+high)/2; if(a[mid]==key) { printf("Found! Theindexif%d",mid); flag=1; break; } elseif(a[mid]>key)high=mid-1; elselow=mid+1; } if(! flag)printf("Notfound! "); return0; } 封装函数 intzheban(inta[N],key) { intlow=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(a[mid]==key) { printf("Found! Theindexif%d",mid); returnmid; } elseif(a[mid]>key)high=mid-1; elselow=mid+1; } printf("Notfound! "); return-1; } 调用函数 #include #defineN10 intmain() { inta[N],low=0,high=N-1,mid,i,key,flag=0; intzheban(inta[N],key); for(i=0;i scanf("%d",&a[i]); scanf("%d",&key); zheban(a,key); return0; } 7 找最大数 (1)两个数找最大 思路: 比较两个数,输出较大者。 完整程序 #include intmain() { intx,y,z; scanf("%d,%d",&x,&y); z=x>y? x: y; printf("%d",z); return0; } 封装函数 intmax(intx,inty) { intz; z=x>y? x: y; returnz; } 调用函数 #include intmain() { intx,y,z; intmax(intx,inty); scanf("%d,%d",&x,&y); printf("%d",max(x,y)); return0; } (2)数组中找最大 ①一维数组 思路: 让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。 完整程序 #include #defineN10 intmain() { intnum[N]; inti,max; for(i=0;i scanf("%d",&num[i]); max=num[0]; for(i=1;i if(max printf("%d",&max); return0; } 封装函数 intmax(intnum[N]) { intmax=num[0]; inti; for(i=1;i if(max returnmax; } 调用函数 #include #defineN10 intmain() { intnum[N]; inti; intmax(intnum[N]); for(i=0;i scanf("%d",&num[i]); printf("%d",max(num)); return0; } ②二维数组 思路: 让一个变量等于数组中第一个元素,从第一个数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。 完整程序 #include #defineN10 #defineM5 intmain() { intnum[N][M]; inti,j; intmax; for(i=0;i for(j=0;j scanf("%d",&num[i][j]); max=num[0][0]; for(i=0;i for(j=0;j if(max printf("%d",max); return0; } 封装函数 intmax(intnum[N][M]) { intmax=num[0][0]; inti,j; for(i=0;i for(j=0;j if(max returnmax; } 调用函数 #include #defineN10 #defineM5 intmain() { intnum[N][M]; inti,j; intmax(intnum[N][M]); for(i=0;i for(j=0;j scanf("%d",&num[i][j]); printf("%d",max(num)); return0; } 8 数组的行列转置 思路: 交换对应行列和列行的元素,注意只交换一半即可,否则相当于没有交换。 完整程序 #include #defineN5 intmain() { inta[N][N]; inti,j,t; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=i+1;j { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } for(i=0;i { for(j=0;j printf("%d",a[i][j]); printf("\n"); } return0; } 封装函数 voidzhuanzhi(inta[][N]) { inti,j,t; for(i=0;i for(j=i+1;j { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } } 调用函数 #include #defineN5 intmain() { inta[N][N]; inti,j; voidzhuanzhi(inta[][N]); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); zhuanzhi(a); for(i=0;i { for(j=0;j printf("%d",a[i][j]); printf("\n"); } return0; } 9 大整数 (1)大整数的输入 思路: 用字符类型输入。 完整程序 #include #include intmain() { charch[101]; scanf("%s",ch);//或gets(ch); return0; } 封装函数 voidInput_Big_Num(charch[101]) { scanf("%s",ch);//或gets(ch); } 调用函数 #include #include intmain() { charch[101]; voidInput_Big_Num(charch[101]); Input_Big_Num(ch); return0; } (2)大整数的处理 ①将大整数个位到最高位放在下标从0开始的整形数 完整程序 #include #include intmain() { charch[101]; intdata[100]; intlen,i; scanf("%s",ch);//或gets(ch); len=strlen(ch); for(i=0;i data[i]=ch[len-i-1]-'0'; return0; } 封装函数 intChuli_Big_Num(charch[101],intdata[100]) { intlen,i; len=strlen(ch); for(i=0;i data[i]=ch1[len-i-1]-'0'; returnlen-1; } 调用函数 #include #include intmain() { charch[101]={'\0'}; intdata[100]={0}; voidInput_Big_Num(charch[101]); intChuli_Big_Num(charch[101],intdata[100]); Input_Big_Num(ch); Chuli_Big_Num(ch,data); return0; } ②将大整数最高位到个位放在下标从0开始的整形数 完整程序 #include #include intmain() { charch[101]; intdata[100]; intlen,i; scanf("%s",ch);//或gets(ch); len=strlen(ch); for(i=0;i data[i]=ch[i]-'0'; return0; } 封装函数 intChuli2_Big_Num(charch[101],intdata[100]) { intlen,i; len=strlen(ch); for(i=0;i data[i]=ch1[i]-'0'; returnlen-1; } 调用函数 #include #include intmain() { charch[101]={'\0'}; intdata[100]={0}; voidInput_Big_Num(charch[101]); intChuli2_Big_Num(charch[101],intdata[100]); Input_Big_Num(ch); Chuli_Big_Num(ch,data); return0; } (3)大整数的输出 完整程序 #include #include intmain() { charch[101]; intdata[100]; intlen,i; scanf("%s",ch);//或gets(ch); len=strlen(ch); for(i=0;i data[i]=ch1[len-i-1]-'0'; for(i=len-1;i>=0;i--) printf("%d",data[i]); return0; } 封装函数 voidOutput_Big_Num(intdata[100],intweishu) { inti; for(i=weishu-1;i>=0;i--) printf("%d",data[i]); } 调用函数 #include #include intmain() { charch[101]={'\0'}; intdata[100]={0}; intweishu; voidInput_Big_Num(charch[101]); intChuli_Big_Num(charch[101],intdata[100]); voidOutput_Big_Num(intdata[100],intweishu); Input_Big_Num(ch); weishu=Chuli_Big_Num(ch,data); Output_Big_Num(data,weishu); return0; } (4)大整数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 模板 程序 新手