C语言:本关任务:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入,如果输入的数中包含负数,则输出Input Error。 已给出:#include<stdio.h> /********** Begin *********/ /********** End *********/ void main() { int a,b,gcd; int lcd; scanf("%d%d",&a,&b); if(a<0 || b<0) printf("Input Error"); else { gcd=fgcd(a,b); lcd=flcd(a,b); printf("%d %d\n",gcd,lcd); } }
时间: 2023-07-18 21:46:10 浏览: 58
C语言代码如下:
```c
#include<stdio.h>
int fgcd(int a, int b)
{
int gcd = 1;
for (int i=1; i<=a && i<=b; i++)
{
if (a%i==0 && b%i==0)
gcd = i;
}
return gcd;
}
int flcd(int a, int b)
{
int lcd;
lcd = (a > b) ? a : b;
while (1)
{
if (lcd%a==0 && lcd%b==0)
break;
lcd++;
}
return lcd;
}
void main()
{
int a, b, gcd, lcd;
scanf("%d%d", &a, &b);
if (a < 0 || b < 0)
printf("Input Error");
else
{
gcd = fgcd(a, b);
lcd = flcd(a, b);
printf("%d %d\n", gcd, lcd);
}
}
```
首先我们需要实现两个函数:fgcd() 用于求两个整数的最大公约数,flcd() 用于求两个整数的最小公倍数。
在 fgcd() 函数中,我们从 1 到 a 和 b 中较小的那个数依次枚举,如果同时能够整除 a 和 b,则更新最大公约数 gcd 的值。
在 flcd() 函数中,我们首先将 lcd 初始化为 a 和 b 中的较大值,然后在循环中依次枚举 lcd 的值,如果同时能够整除 a 和 b,则找到了最小公倍数,跳出循环。
在主函数中,我们首先读入两个整数 a 和 b,如果两个整数中有任意一个是负数,则输出 "Input Error"。否则,我们调用 fgcd() 和 flcd() 函数分别求出最大公约数和最小公倍数,并输出结果。
注意:在 C 语言中,main() 函数的返回值类型应该是 int,而非 void。因此,正确的写法应该是:
```c
int main()
{
// ...
return 0;
}
```