《C语言模板程序(新手必看!!).doc》由会员分享,可在线阅读,更多相关《C语言模板程序(新手必看!!).doc(30页珍藏版)》请在装配图网上搜索。
______________________________________________________________________________________________________________
C语言模板程序
1
求两个数最大公约数
方法一:辗转相除法
思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。
完整程序
#include
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 %d\n",m);
return 0;
}
封装函数
int gcd(int m,int n)
{
do
{
r=m%n;
m=n;
n=r;
}
while(n);
return m;
}
调用函数
#include
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;
}
方法二:更相减损法
思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。
完整程序
#include
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 %d\n",m);
return 0;
}
封装函数
int gcd(int m,int n)
{
while(m!=n)
{
if(m>n) m-=n;
else n-=m;
}
return m;
}
调用函数
#include
int main()
{
int m,n,r;
int gcd(int m,int n);
scanf("%d,%d",&m,&n);
printf("greatest common divisor is %d\n",gcd(m,n));
return 0;
}
2
求两个数最小公倍数
思路:两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。
完整程序
#include
int main()
{
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 i;
for(i=(m>n?m:n);;i++)
if(i%m==0 && i%n==0)
return i;
}
调用函数
#include
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));
return 0;
}
3
判断素数
思路:从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。
完整程序
#include
#include
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'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
#include
int main()
{
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
#define N 10
int main()
{
int num[N];
int i,j;
int t;
for(i=0;inum[j+1])
{t=num[j];num[j]=num[j+1];num[j+1]=t;}
for(i=0;inum[j+1])
{t=num[j];num[j]=num[j+1];num[j+1]=t;}
}
调用函数
#include
#define N 10
int main()
{
int num[N];
int i,j;
int t;
void maopao(int num[N]);
for(i=0;i
#define N 10
int main()
{
int num[N];
int i,j,k;
int t;
for(i=0;inum[j]) k=j;
if(k!=i) {t=num[k];num[k]=num[i];num[i]=t;}
}
for(i=0;inum[j]) k=j;
if(k!=i) {t=num[k];num[k]=num[i];num[i]=t;}
}
}
调用函数
#include
#define N 10
int main()
{
int num[N];
int i,j,k;
int t;
void xuanze(int num[N]);
for(i=0;i
#define N 10
int main()
{
int a[N],low=0,high=N-1,mid,i,key,flag=0;
for(i=0;ikey) high=mid-1;
else low=mid+1;
}
if(!flag) printf("Not found!");
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;
}
else if(a[mid]>key) high=mid-1;
else low=mid+1;
}
printf("Not found!");
return -1;
}
调用函数
#include
#define N 10
int main()
{
int a[N],low=0,high=N-1,mid,i,key,flag=0;
int zheban(int a[N],key);
for(i=0;i
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
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
#define N 10
int main()
{
int num[N];
int i,max;
for(i=0;i
#define N 10
int main()
{
int num[N];
int i;
int max(int num[N]);
for(i=0;i
#define N 10
#define M 5
int main()
{
int num[N][M];
int i,j;
int max;
for(i=0;i
#define N 10
#define M 5
int main()
{
int num[N][M];
int i,j;
int max(int num[N][M]);
for(i=0;i
#define N 5
int main()
{
int a[N][N];
int i,j,t;
for(i=0;i
#define N 5
int main()
{
int a[N][N];
int i,j;
void zhuanzhi(int a[][N]);
for(i=0;i
#include
int main()
{
char ch[101];
scanf("%s",ch);//或gets(ch);
return 0;
}
封装函数
void Input_Big_Num(char ch[101])
{
scanf("%s",ch);//或gets(ch);
}
调用函数
#include
#include
int main()
{
char ch[101];
void Input_Big_Num(char ch[101]);
Input_Big_Num(ch);
return 0;
}
(2)大整数的处理
①将大整数个位到最高位放在下标从0开始的整形数
完整程序
#include
#include
int main()
{
char ch[101];
int data[100];
int len,i;
scanf("%s",ch);//或gets(ch);
len=strlen(ch);
for(i=0;i
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0};
void Input_Big_Num(char ch[101]);
int Chuli_Big_Num(char ch[101],int data[100]);
Input_Big_Num(ch);
Chuli_Big_Num(ch,data);
return 0;
}
②将大整数最高位到个位放在下标从0开始的整形数
完整程序
#include
#include
int main()
{
char ch[101];
int data[100];
int len,i;
scanf("%s",ch);//或gets(ch);
len=strlen(ch);
for(i=0;i
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0};
void Input_Big_Num(char ch[101]);
int Chuli2_Big_Num(char ch[101],int data[100]);
Input_Big_Num(ch);
Chuli_Big_Num(ch,data);
return 0;
}
(3)大整数的输出
完整程序
#include
#include
int main()
{
char ch[101];
int data[100];
int len,i;
scanf("%s",ch);//或gets(ch);
len=strlen(ch);
for(i=0;i=0;i--)
printf("%d",data[i]);
return 0;
}
封装函数
void Output_Big_Num(int data[100],int weishu)
{
int i;
for(i=weishu-1;i>=0;i--)
printf("%d",data[i]);
}
调用函数
#include
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0};
int weishu;
void Input_Big_Num(char ch[101]);
int Chuli_Big_Num(char ch[101],int data[100]);
void Output_Big_Num(int data[100],int weishu);
Input_Big_Num(ch);
weishu=Chuli_Big_Num(ch,data);
Output_Big_Num(data,weishu);
return 0;
}
(4)大整数的加法(两个大整数相加)
完整程序
#include
#include
int main()
{
char ch1[101]={'\0'},ch2[101]={'\0'};
int data1[100]={0},data2[100]={0},data3[101]={0};
int len1,len2,len,i,jinwei=0;
scanf("%s",ch1);//或gets(ch1);
scanf("%s",ch2);//或gets(ch2);
len1=strlen(ch1);
for(i=0;i=0;i--)
if(data3[i]!=0)
{
len=i;
break;
}
for(i=len;i>=0;i--)
printf("%d",data3[i]);
return 0;
}
封装函数
int Plus_Big_Num(int data1[100],int data2[100],int data3[101])
{
int i,jinwei=0;
for(i=0;i<100;i++)
{
data3[i]=data1[i]+data2[i]+jinwei;
jinwei=data3[i]/10;
data3[i]=data3[i]%10;
}
for(i=100;i>=0;i--)
if(data3[i]!=0)
{
weishu=i;
break;
}
return weishu;
}
调用函数
#include
#include
int main()
{
char ch1[101]={'\0'},ch2[101]={'\0'};
int data1[100]={0},data2[100]={0},data3[101]={0};
int weishu;
void Input_Big_Num(char ch[101]);
int Chuli_Big_Num(char ch[101],int data[100]);
void Output_Big_Num(int data[100],int weishu);
void Plus_Big_Num(int data1[100],int data2[100],int data3[101]);
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
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0};
int len,i,r,f=0,n;
scanf("%s",ch);
scanf("%d",&n);
len=strlen(ch);
for(i=0;i=10)//如果某一位上的数大于10,则要进位
{
data[i+1]+=data[i]/10;//逢十进一
data[i]=data[i]%10;//进位之后,保留余数
}
}
for(i=99;i>=0;i--)
{
if(data[i]!=0 && f==0)
{
printf("%d",data[i]);
f=1;
}
else if(f) printf("%d",data[i]);
}
return 0;
}
封装函数
void Mutiply_BigNum_SmallNum(int Data[100],int n,int *p)
{
int i,r;
for(i=0;i<100;i++)
Data[i]*=n;//每一位上的数分别乘以n,并存放
for(i=0;i<100;i++)
{
if(Data[i]>=10)//如果某一位上的数大于10,则要进位
{
Data[i+1]+=Data[i]/10;//逢十进一
Data[i]=Data[i]%10;//进位之后,保留余数
}
}
for(i=99;i>=0;i--)
{
if(Data[i]!=0)
{
*p=i+1;
break;
}
}
}
调用函数
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0};
int n,weishu=0;
int *p=&weishu;
void Input_Big_Num(char ch[101]);
int Chuli_Big_Num(char ch[101],int data[100]);
void Output_Big_Num(int data[100],int weishu);
void Mutiply_BigNum_SmallNum(int Data[100],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[100]={0},data2[100]={0};
int r[200]={0};
char ch1[101]={'\0'},ch2[101]={'\0'};
int i,j,k=0;
int len1,len2;
gets(ch1);
gets(ch2);
len1=strlen(ch1);
len2=strlen(ch2);
for(i=0;i=0;i--)
if(r[i]!=0)
break;
for(i=i;i>=0;i--)
{
printf("%d",r[i]);
}
return 0;
}
封装函数
int Mutiply_BigNum_BigNum(int data1[100],int data2[100],int r[200],int len1,int len2)
{
int i,j;
for(i=0;i=0;i--)
if(r[i]!=0)
break;
return i;
}
调用函数
#include
#include
int main()
{
int data1[100]={0},data2[100]={0};
int r[200]={0};
char ch1[101]={'\0'},ch2[101]={'\0'};
int i,j,k=0;
int len1,len2;
void Input_Big_Num(char ch[101]);
int Chuli_Big_Num(char ch[101],int data[100]);
void Output_Big_Num(int data[100],int weishu);
int Mutiply_BigNum_BigNum(int data1[100],int data2[100],int r[200],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(data1,data2,r,len1,len2);
for(i=i;i>=0;i--)
{
printf("%d",r[i]);
}
return 0;
}
(7)大整数的除法(一个大整数除以一个小整数且能整只保留整数)
完整程序
#include
int main() {
long int Data[100]={0},result[100]={0};
int i,k,flag=0,len;
char ch[101]={'\0'};
scanf("%s",ch);
len=strlen(ch);
scanf("%d",&k);
for(i=0;i
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0},result[100]={0};
int weishu,flag=0,k,len;
void Input_Big_Num(char ch[101]);
int Chuli2_Big_Num(char ch[101],int data[100]);
int Division_Big_Num(int Data[100],int result[100],int k,int len);
Input_Big_Num(ch);
weishu=Chuli2_Big_Num(ch,data);
scanf("%d",&k);
len=Division_Big_Num(data,result,k,weishu);
for(i=0;i
int main() {
long int Data[100]={0},result[100]={0};
int i,k,flag=0,len;
char ch[101]={'\0'};
scanf("%s",ch);
len=strlen(ch);
scanf("%d",&k);
for(i=0;i
#include
int main()
{
char ch[101]={'\0'};
int data[100]={0},result[100]={0};
int weishu,flag=0,k,len;
void Input_Big_Num(char ch[101]);
int Chuli2_Big_Num(char ch[101],int data[100]);
int Division_Big_Num(int Data[100],int result[100],int k,int len);
Input_Big_Num(ch);
weishu=Chuli2_Big_Num(ch,data);
scanf("%d",&k);
len=Division_Big_Num(data,result,k,weishu)
for(i=0;i<100;i++)
{
if(result[i]!=0) flag=1;
if(flag) printf("%d",result[i]);
if(i==len-1) printf(".");
}
return 0;
}
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
-可编辑修改-
链接地址:https://www.zhuangpeitu.com/p-1546538.html