c语言哪错了
#include<stdio.h>intmain(){intf2(intx,inty,intz1);intf1(intx,inty);intx,y,z1,b;printf...
#include<stdio.h>
int main()
{
int f2(int x,int y,int z1);
int f1(int x,int y);
int x,y,z1,b;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
b=f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,b));
return 0;
}
int f1(int x,int y)
{int z1,i;
for(i=x;i>=1;i--)
{if(x%i==0 && y%i==0)
{z1=i;break;
}return (i);}
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);}如输入12 24 就错 展开
int main()
{
int f2(int x,int y,int z1);
int f1(int x,int y);
int x,y,z1,b;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
b=f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,b));
return 0;
}
int f1(int x,int y)
{int z1,i;
for(i=x;i>=1;i--)
{if(x%i==0 && y%i==0)
{z1=i;break;
}return (i);}
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);}如输入12 24 就错 展开
展开全部
你的问题有2点:
1.你多了一个break;
2.你输入12 24 是不对的,因为你的scanf("%d,%d",&x,&y);语句要求你用逗号隔开,即输入12,24才行。如果改为scanf("%d%d",&x,&y);即可输入12 24了。
#include<stdio.h>
int main()
{
int f2(int x,int y,int z1);
int f1(int x,int y);
int x,y,z1,b;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
b=f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,b));
return 0;
}
int f1(int x,int y)
{int z1,i;
for(i=x;i>=1;i--)
{if(x%i==0 && y%i==0)
return (i);} /* 删除此句{z1=i;break;},执行了break,不再执行return*/
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);}
1.你多了一个break;
2.你输入12 24 是不对的,因为你的scanf("%d,%d",&x,&y);语句要求你用逗号隔开,即输入12,24才行。如果改为scanf("%d%d",&x,&y);即可输入12 24了。
#include<stdio.h>
int main()
{
int f2(int x,int y,int z1);
int f1(int x,int y);
int x,y,z1,b;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
b=f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,b));
return 0;
}
int f1(int x,int y)
{int z1,i;
for(i=x;i>=1;i--)
{if(x%i==0 && y%i==0)
return (i);} /* 删除此句{z1=i;break;},执行了break,不再执行return*/
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);}
展开全部
/*
请输入两个整数(逗号隔开):5,35
最大公约数是5。
最小公倍数数是35。
Press any key to continue
*/
#include <stdio.h>
int main() {
int f2(int x,int y);
int f1(int x,int y);
int x,y;
printf("请输入两个整数(逗号隔开):");
scanf("%d,%d",&x,&y);
printf("最大公约数是%d。\n",f1(x,y));
printf("最小公倍数数是%d。\n",f2(x,y));
return 0;
}
int f1(int x,int y) {
int n,i;
int m = (x > y) ? y : x;
for(i = 1;i <= m;i++) if(x%i == 0 && y%i == 0) n = i;
return (n);
}
int f2(int x,int y) { return ((x*y)/f1(x,y)); }
请输入两个整数(逗号隔开):5,35
最大公约数是5。
最小公倍数数是35。
Press any key to continue
*/
#include <stdio.h>
int main() {
int f2(int x,int y);
int f1(int x,int y);
int x,y;
printf("请输入两个整数(逗号隔开):");
scanf("%d,%d",&x,&y);
printf("最大公约数是%d。\n",f1(x,y));
printf("最小公倍数数是%d。\n",f2(x,y));
return 0;
}
int f1(int x,int y) {
int n,i;
int m = (x > y) ? y : x;
for(i = 1;i <= m;i++) if(x%i == 0 && y%i == 0) n = i;
return (n);
}
int f2(int x,int y) { return ((x*y)/f1(x,y)); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在传递参数x,y 之后得先判断x,y的大小
你把x赋值给i
说明你在求最大公约数时得保证x<y啊 否则x>y就会出问题
而且你z1 必须赋值啊
你在f1里定义的z1是个局部变量,在函数体外后这个z1就会被销毁
而主函数中的z1未被赋值,使用的时候系统可能会随机的给z1赋值
你把x赋值给i
说明你在求最大公约数时得保证x<y啊 否则x>y就会出问题
而且你z1 必须赋值啊
你在f1里定义的z1是个局部变量,在函数体外后这个z1就会被销毁
而主函数中的z1未被赋值,使用的时候系统可能会随机的给z1赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 求最大公约数的话用辗转相除法比较有效率
// 具体lz自己度娘吧
// 以下是lz的方法
#include<stdio.h>
#include <stdlib.h>
// 函数声明放外面
int f2(int x,int y,int z1);
int f1(int x,int y);
int main()
{
int x;
int y;
int gcd;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
gcd = f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,gcd));
system("pause");
return 0;
}
int f1(int x,int y)
{
int i;
for(i = x;i>=1;i--)
{
if(x % i==0 && y % i==0)
break;
}
// 你的return放在for循环里面了
// 第一次if失败就会返回了, 永远返回x-1的值
// return放外面, if成功break跳出了接着就返回了
return (i);
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);
}
// 具体lz自己度娘吧
// 以下是lz的方法
#include<stdio.h>
#include <stdlib.h>
// 函数声明放外面
int f2(int x,int y,int z1);
int f1(int x,int y);
int main()
{
int x;
int y;
int gcd;
printf("请输入两个整数");
scanf("%d,%d",&x,&y);
gcd = f1(x,y);
printf("最大公约数是%d\n",f1(x,y));
printf("最小公倍数数是%d\n",f2(x,y,gcd));
system("pause");
return 0;
}
int f1(int x,int y)
{
int i;
for(i = x;i>=1;i--)
{
if(x % i==0 && y % i==0)
break;
}
// 你的return放在for循环里面了
// 第一次if失败就会返回了, 永远返回x-1的值
// return放外面, if成功break跳出了接着就返回了
return (i);
}
int f2(int x,int y,int z1)
{
return ((x*y)/z1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询