在C 中获取错误的答案
Get Wrong answer in c++
double getcircleArea(int radius, double pi);
double getcircleArea(int radius = 1, double pi = 3.14)
{
return radius*radius*pi;
}
int main()
{
printf("area:%dn", getcircleArea());
printf("area:%dn", getcircleArea(10));
printf("area:%dn", getcircleArea(15, 3.14159));
system("pause");
return 0;
}
只是一个简单的例子。
我得到结果:
区域:1374389535区域:0区域:-1408749273
我想要...区域:3.14区域:314区域:706.85775
不要使用 printf
。
std::cout << "area: " << getcircleArea() << "n";
无需您记住模糊的%代码("%d?i),这意味着'double'!")
%d使用整数格式打印值。如果要打印浮动,则应使用%f。
%d
用于int
数据类型。将%lf
用于double
。
#include <iostream>
using namespace std;
double getcircleArea(int radius = 1, double pi = 3.14){
return (radius*radius*pi);
}
int main(){
printf("area:%lfn", getcircleArea()); // %d --> %lf
printf("area:%lfn", getcircleArea(10)); // %d --> %lf
printf("area:%lfn", getcircleArea(15, 3.14159)); // %d --> %lf
system("pause")
return 0;
}
您的printf()
格式错误。您提供的%d
占位持有人,该占位符代表十进制或基本10号,但您应该为其提供%f
占位符以表示浮点数。
printf("Area: %fn", getcircleArea(10, 3.14));
这是printf()
函数的一个很好的参考,并提供了所有可用的指定字符。
您也可以像这样的标准名称空间中使用cout
:
std::cout << "Area: " << getcircleArea(10, 3.14);
我还建议不要将PI作为参数,因为Math.h的恒定值更加精确。您可以通过执行以下操作来访问它:
M_PI
或,如 @m.m所建议的,您可以通过找到-1的arccosine获得PI,该arccosine of -1返回pi这样的pi:
double PI = acos(-1.0);
,也可以将其设置为像这样的常数:
const long double PI = 3.141592653589793238L;
const double PI = 3.141592653589793;
const float PI = 3.1415927;
请尝试此代码。如果您不创建和使用代码中的对象,则OOP的全部目的被击败。因此,请创建和使用以下代码中所示的对象。
#include <iostream>
using namespace std;
class overloading
{
public:
int getcircleArea()
{
cout<<"area is "<< 0 <<"n";
}
double getcircleArea(int radius)
{
cout<<"area is "<< radius*radius*3.14<<"n";
}
double getcircleArea(int radius, float pi)
{
cout<<"area is "<< radius*radius*pi<<"n";
}
};
int main()
{
overloading overload1;
overload1.getcircleArea();
overload1.getcircleArea(10);
overload1.getcircleArea(15, 3.14159);
return 0;
}
NOTE :看起来您正在练习功能超载概念。在您的代码中,您已声明了一个函数:
double getcircleArea(int radius = 1, double pi = 3.14)
{
return radius*radius*pi;
}
.....您在main
程序中对此功能进行解析,如下所示:
printf("area:%dn", getcircleArea(15, 3.14159))
我不会向您推荐这种编程!
当您将半径的平方乘以Pi的值时,它将变为双重值。因此,要打印双值使用%lf在打印功能中。您也可以使用%f代替%lf。
printf("area: %lfn", getcircleArea(10, 3.14));
在使用C 时,我建议您使用COUT而不是打印,因为您不需要诸如"%d"
,"%f"
等格式指定符。
cout<<"area: "<<getcircleArea(10,3.14)<<endl;
相关文章:
- 使用 bfs 解决连接组件问题时得到错误的答案
- 递归求和任务的错误答案
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 乘法宏给出错误的答案
- 谷歌启动B轮巴士路线问题错误的答案?
- 欧拉项目 #8 C++ 得到错误的答案
- 寻找最小楼梯成本的动态规划问题的错误答案
- 为什么可变大小的数组会导致Codechef出现错误答案
- 位集上的按位或给出错误的答案
- 使用分而治之的最大总和子数组,为什么要以不同的方式使用 for 循环,答案是错误的?
- 为什么当我从语句检查中删除"+ mod"时,以下程序给出错误的答案。问题链接:https://www.codechef.com/problems/FFC219B
- 欧拉项目#8:C++错误的答案(为一个小的炮制输入给出正确的答案)
- 尽管整个程序逻辑似乎在起作用,但答案是错误的
- 测验程序总是评估答案是错误的
- 分型和括号答案是错误的
- 为什么小数的答案是错误的?与 MPIR