c语言模板程序新手必看!!).doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
do
{
r=m%n;
m=n;
n=r;
}
while(n);
printf("greatest common divisor is %d\n",m);
return 0;
}
封装函数
int gcd(int m,int n)
{
do
{
r=m%n;
m=n;
n=r;
}
while(n);
return m;
}
调用函数
#include<stdio.h>
return 0;
}
封装函数
int zheban(int a[N],key)
{
int low=0,high=N-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
{
printf("Found! The index if %d",mid);
return mid;
if(num[j]>num[j+1])
{t=num[j];num[j]=num[j+1];num[j+1]=t;}
}
调用函数
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j;
int t;
void maopao(int num[N]);
完整程序
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j,k;
int t;
for(i=0;i<N;i++)
scanf("%d",&num[i]);
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;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<N;i++)
printf("%d ",num[i]);
return 0;
}
封装函数
void xuanze(int num[N])
{
int i,j,k;
int t;
for(i=0;i<N-1;i++)
完整程序
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j;
int t;
for(i=0;i<N;i++)
scanf("%d",&num[i]);
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
if(num[j]>num[j+1])
C语言模板程序
1
求两个数最大公约数
方法一:辗转相除法
思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。
完整程序
#include<stdio.h>
int main()
{
int m,n,r;
scanf("%d,%d",&m,&n);
printf("%d",&max);
return 0;
}
封装函数
int max(int num[N])
{
int max=num[0];
int i;
for(i=1;i<N;i++)
if(max<num[i]) max=num[i];
return max;
}
调用函数
#include<stdio.h>
#define N 10
{
k=i;
for(j=i+1;j<N;j++)
if(num[k]>num[j]) k=j;
if(k!=i) {t=num[k];num[k]=num[i];num[i]=t;}
}
}
调用函数
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j,k;
k=sqrt(num);
for(i=2;i<=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)
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趟排序。
int main(){来自int num[N];
int i;
int max(int num[N]);
for(i=0;i<N;i++)
scanf("%d",&num[i]);
printf("%d",max(num));
return 0;
}
②二维数组
思路:让一个变量等于数组中第一个元素,从第一个数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。
{
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",&m,&n);
printf("lease common multiple is %d",lcm(m,n));
{
int m,n,i;
scanf("%d,%d",&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 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()
完整程序
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,max;
for(i=0;i<N;i++)
scanf("%d",&num[i]);
max=num[0];
for(i=1;i<N;i++)
if(max<num[i]) max=num[i];
return 0;
}
3
判断素数
思路:从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。
完整程序
#include<stdio.h>
#include<math.h>
int main()
{
int num;
int i,k,flag=1;
scanf("%d",&num);
}
封装函数
int gcd(int m,int n)
{
while(m!=n)
{
if(m>n) m-=n;
else n-=m;
}
return m;
}
调用函数
#include<stdio.h>
int main()
{
int m,n,r;
int gcd(int m,int n);
scanf("%d,%d",&m,&n);
}
else if(a[mid]>key) high=mid-1;
else low=mid+1;
}
printf("Not found!");
return -1;
}
调用函数
#include<stdio.h>
#define N 10
int main()
{
int a[N],low=0,high=N-1,mid,i,key,flag=0;
{
int x,y,z;
int max(int x,int y);
scanf("%d,%d",&x,&y);
printf("%d",max(x,y));
return 0;
}
(2)数组中找最大
①一维数组
思路:让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。
int t;
void xuanze(int num[N]);
for(i=0;i<N;i++)
scanf("%d",&num[i]);
xuanze(num);
for(i=0;i<N;i++)
printf("%d ",num[i]);
return 0;
}
6
折半查找(升序)
思路:N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输出Not found!。
printf("greatest common divisor is %d\n",gcd(m,n));
return 0;
}
2
求两个数最小公倍数
思路:两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。
完整程序
#include<stdio.h>
int main()
for(i=0;i<N;i++)
scanf("%d",&num[i]);
maopao(num);
for(i=0;i<N;i++)
printf("%d ",num[i]);
return 0;
}
5
选择排序(升序)
思路:N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。共进行N-1趟排序。
int zheban(int a[N],key);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
scanf("%d",&key);
zheban(a,key);
return 0;
}
7
找最大数
(1)两个数找最大
思路:比较两个数,输出较大者。
完整程序
#include<stdio.h>
{
mid=(low+high)/2;
if(a[mid]==key)
{
printf("Found! The index if %d",mid);
flag=1;
break;
}
else if(a[mid]>key) high=mid-1;
else low=mid+1;
}
if(!flag) printf("Not found!");
{t=num[j];num[j]=num[j+1];num[j+1]=t;}
for(i=0;i<N;i++)
printf("%d ",num[i]);
return 0;
}
封装函数
void maopao(int num[N])
{
int i,j;
int t;
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
{
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",&num);
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 %d\n",m);
return 0;
}
方法二:更相减损法
思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。
相关文档
最新文档