这段C++代码哪错了:#include<bits/stdc++.h> using namespace std; double m; int maxx(double a,double b,double c){ int max; if(a>=b){ if(a>=c){ max=a; } else{ max=c; } } else{ if(a>=c){ max=b; } else{ if(c>=b){ max=c; } else{ max=b; } } } return max; } int main(){ double x,y,z; cin>>x>>y>>z; m=maxx(x,y,z)/(maxx(x+y,y,z)*maxx(x,y,y+z)); printf("%.6lf",m); return 0; }
时间: 2024-02-29 12:51:21 浏览: 66
这段代码有以下问题:
1. 函数maxx返回的是int类型,但是在main函数中用它计算m(double类型),会导致精度损失。应该将函数返回类型改为double。
2. 在计算maxx(x+y,y,z)时,应该传入的是x+y,而不是x。
3. 在计算maxx(x,y,y+z)时,应该传入的是z,而不是y+z。
4. 在输出m时,应该使用cout而不是printf。
5. 变量名max与STL库中的max函数同名,会导致冲突。应该更改变量名。
正确的代码如下:
```
#include<bits/stdc++.h>
using namespace std;
double m;
double maxNum(double a, double b, double c) {
double max;
if (a >= b) {
if (a >= c) {
max = a;
} else {
max = c;
}
} else {
if (b >= c) {
max = b;
} else {
max = c;
}
}
return max;
}
int main() {
double x, y, z;
cin >> x >> y >> z;
m = maxNum(x, y, z) / (maxNum(x + y, y, z) * maxNum(x, y, y + z));
cout << fixed << setprecision(6) << m;
return 0;
}
```
阅读全文