shrt = r - sqrt(pow(x * 1.0, 2.0) + pow(y * 1.0, 2.0));
我使用此代码获取 shrt = r-平方根(x 2 + y 2 )的结果。但是我得到的答案是错误的。我的代码有什么问题?当我打印shrt
时,答案不正确!这是我的代码:
#include <stdio.h>
#include <math.h>
int main() {
int i, x, y, r;
double shrt, lng;
for (i = 0; i < 100; i++) {
scanf("%d %d %d", &x, &y, &r);
shrt = r - sqrt(pow(x * 1.0, 2.0) + pow(y * 1.0, 2.0));
lng = 2 * r - shrt;
printf("%.02lf %.02lf\n", shrt, lng);
}
return 0;
}
如果我运行代码并在此处输入作为第一个测试用例:0 0 100
。然后我得到输出-3.00 -3.00
。但是我想要输出100.00 100.00
。
答案 0 :(得分:1)
您的scanf失败
在没有它的情况下对其进行测试,您将获得正确的结果:
#include<stdio.h>
#include<math.h>
int main()
{
int i,x=0,y=0,r=100;
double shrt,lng;
for(i=0; i<100; i++)
{
shrt=r-sqrt(pow(x*1.0,2.0)+pow(y*1.0,2.0));
lng=2*r-shrt;
printf("%.02f %.02f\n",shrt,lng);
}
return 0;
}
答案 1 :(得分:0)
您的计算结果取决于x
,y
,r
和shrt
的实际类型,以及是否正确定义了sqrt
和{{1 }}函数。
最可能导致错误结果的原因是缺乏对pow
和sqrt
的正确定义。确保源文件的开头出现以下行:
pow