您的当前位置:首页正文

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

2024-04-15 来源:钮旅网
1,写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。这两个数由键盘输入。

程序设计:

#include

int hcf(int x,int y)

{int t;

if(x{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\

h=hcf(x,y);

l=lcf(x,y,h);

printf(\"最大公约数为:h=%d\\n最小公倍数为:l=%d\\n\

return 0;

}

运行结果:

2求方程ax^2+bx+c=0的根,用3个函数分别求当:b^2-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。

程序设计:

#include

#include

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\

}

void g_one(double a,double b,double c)

{double x;

x=(-b)/(2*a);

printf(\"方程的两个根为:x1=x2=%f\\n\

}

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\

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

#include

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\

if(pri(a))

printf(\"该数是素数\\n\");

else

printf(\"该数不是素数\\n\");

return 0;

}

运行结果:

4.写一个函数,使给定的一个(3×3)二维整形数组转置,即行列互换。

程序设计:

#include

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\

ex(a,3);

printf(\"行列互换后的数组为:\\n\");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf(\"%d \

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

#include

int main()

{void inv(char str[]);

char str[100];

printf(\"请输入字符串:\\n\");

scanf(\"%s\

inv(str);

printf(\"请输出反序后的字符串:\\n\");

printf(\"%s\\n\

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;}

}

运行结果:

因篇幅问题不能全部显示,请点此查看更多更全内容