#include<iostream> using namespace std; int a,b,x,y; cin>>a>>b; void dayue () { for (x=0;x<((a<b):b?a);x++) { if (a%x==0 && b%x==0) { cout <<x; break; } } void xiaob () { for (y=(a<b):b?a;;y++) { if (y%a ==0 y%b==0) cout <<y; break; } } int main() { dayue(); xiaob(); return 0; }哪里有错误
时间: 2024-01-14 11:02:03 浏览: 60
这段代码有几个错误:
1. `cin>>a>>b;` 这行代码应该放在 `main()` 函数的最开始处,不能放在函数外。
2. `((a<b):b?a)` 这一行代码有语法错误,应该改为 `(a<b)?b:a`。
3. `for (x=0;x<((a<b):b?a);x++)` 这一行代码有语法错误,应该改为 `for (x=1;x<=((a<b)?a:b);x++)`,同时循环的起始值 `x` 应该从 1 开始,因为因数不能为 0。
4. `if (a%x==0 && b%x==0)` 这一行代码有语法错误,应该改为 `if (a%x==0 && b%x==0)`。
5. `if (y%a ==0 y%b==0)` 这一行代码有语法错误,应该改为 `if (y%a ==0 && y%b==0)`。
6. `break;` 应该写在 if 语句的外面,否则循环只会执行一次。
修正后的代码如下:
```c++
#include<iostream>
using namespace std;
int a,b,x,y;
void dayue()
{
for (x=1; x<=((a<b)?a:b); x++)
{
if (a%x==0 && b%x==0)
{
cout << x << endl;
break;
}
}
}
void xiaob()
{
for (y=((a<b)?b:a); ; y++)
{
if (y%a ==0 && y%b==0)
{
cout << y << endl;
break;
}
}
}
int main()
{
cin >> a >> b;
dayue();
xiaob();
return 0;
}
```
阅读全文