c语言程序设计-求两个数最大公约数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1,写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

这两个数由键盘输入。

程序设计:
#include<stdio.h>
int hcf(int x,int y)
{int t;
if(x<y)
{t=x;
x=y;
y=t;}
while((t=x%y)!=0)
{x=y;
y=t;}
return y;}
int lcf(int x,int y,int m)
{
return x*y/m;
}
int main()
{int hcf(int,int);
int lcf(int,int,int);
int x,y,h,l;
printf("请输入两个数:");
scanf("%d%d",&x,&y);
h=hcf(x,y);
l=lcf(x,y,h);
printf("最大公约数为:h=%d\n最小公倍数为:l=%d\n",h,l);
return 0;
}
运行结果:
2求方程ax^2+bx+c=0的根,用3个函数分别求当:b^2-4ac大于0、等于0和小于0时的根并输出结果。

从主函数输入a,b,c的值。

程序设计:
#include<stdio.h>
#include<math.h>
void g_two(double a,double b,double c)
{double x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("方程的两个根为:x1=%f\nx2=%f\n",x1,x2); }
void g_one(double a,double b,double c)
{double x;
x=(-b)/(2*a);
printf("方程的两个根为:x1=x2=%f\n",x);
}
void g_zone(double a,double b,double c)
{
printf("无解\n");
}
void main()
{void g_two(double,double,double);
void g_one(double,double,double);
void g_zone(double,double,double);
double a,b,c,t;
printf("请输入a、b、c的值:");
scanf("%lf%lf%lf",&a,&b,&c);
t=b*b-4*a*c;
if(t>0)
g_two(a,b,c);
else if(t==0)
g_one(a,b,c);
else
g_zone(a,b,c);
}
运行结果:
3.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

程序设计:
#include<stdio.h>
#include<math.h>
int pri(int a)
{int i,m=1;
for(i=2;i<=sqrt((double)a)&&m==1;i++)
{if(a%i==0)
m=0;
}
return m;
}
int main()
{ int pri(int);
int a;
printf("请输入一个整数:");
scanf("%d",&a);
if(pri(a))
printf("该数是素数\n");
else
printf("该数不是素数\n");
return 0;
}
运行结果:
4.写一个函数,使给定的一个(3×3)二维整形数组转置,即行列互换。

程序设计:
#include<stdio.h>
int main()
{void ex(int a[][3],int y);
int i,j,a[3][3];
printf("请输入一个3*3二维整形数组:\n");
for(i=0;i<=2;i++)
{for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);}
ex(a,3);
printf("行列互换后的数组为:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");}
return 0;
}
void ex(int a[][3],int y)
{int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
}
运行结果:
5.写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。

程序设计:
#include<stdio.h>
#include <string.h>
int main()
{void inv(char str[]);
char str[100];
printf("请输入字符串:\n");
scanf("%s",str);
inv(str);
printf("请输出反序后的字符串:\n"); printf("%s\n",str);
return 0;
}
void inv(char str[])
{char t;
int i,j;
for(i=0,j=strlen(str);i<(strlen(str))/2;i++,j--) {t=str[i];
str[i]=str[j-1];
str[j-1]=t;}
}
运行结果:。

相关文档
最新文档