要求通过最大公约数的方程来求,但方程嵌套进去不对。
#include<stdio.h>
int main()
{
int a,b;
int lcm(int u,int v);
int gcd(int u,int v);
printf("输入两个正整数a,b:");
scanf("%d %d",&a,&b);
printf("两数的最小公倍数为:");
lcm(a,b);
}
int lcm(int u,int v)//求最小公倍数的函数
{
int gcd(int u,int v);
int lcm;
lcm=u*v/gcd(u,v);
printf("%d",lcm);
}
int gcd(int u,int v)//求最大公约数的函数
{
int i,j,k;
while(u%v!=0)
{
while(u<v)
{
i=u;
u=v;
v=i;
}
u=u%v;
}
printf("%d",v);
}
你这几个子函数写在main下面不行吧
问题一:应该是 if (u < v) ,不用写 while 的吧
#include <iostream>
#include <fstream>
using namespace std;
int gcd(int,int);
int main(int argc,char * argv[])
{
int x,y;
while(cin>>x>>y)
{
cout<<x/gcd(x,y)*y<<endl;
}
system("pause");
return 0;
}
int gcd(int x,int y)
{
while(x!=y)
{
if(x>y) x=x-y;
else
y=y-x;
}
return x;
}
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*
最大公约数,最小公倍数
2,3 ,6,1
4,8 8,4
*/
int n,m,p,t,i;
printf("输入2个整数(逗号分隔):");
scanf("%d,%d",&n,&m);
//求最大公约数
if(n<m)//确保n>m
{
t=n;
n=m;
m=t;
}
for(i=m;i>=1;i--)
{
if(n%i==0 && m%i==0){
p=i;
break;
}
}
printf("%d和%d的最大公约数是%d\n",n,m,p);
printf("%d和%d的最小公倍数是%d\n",n,m,m*n/p);
}
把 int lcm(int u,int v);放到int main()和#include <stdio.h>中间
int gcd(int u,int v);
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
函数在使用前没有声明,main找不到函数,有两种方式修改:
一是:把int lcm(int u,int v)和int gcd(int u,int v)这两个函数的全部内容放在main()函数前面;
第二种方法是,在main()函数前面加上以下两句:
int lcm(int u,int v);
int gcd(int u,int v);
如有帮助,请采纳一下,谢谢。
这个程序的问题主要是子函数lcm里的lcm=u*v/gcd(u,v);有问题。因为我将lcm=u*v/gcd(u,v);写成lcm=u*v;时,主函数中lcm结果就正确了。但是子函数lcm里的lcm方程加入子函数gcd后,结果就不正确了。
因此想问问为什么嵌套函数会出现这个问题