无论我咋输入数字都只会显示不在圆内,求各位解答

#include <iostream.h>
void main()
{
float x,y,r,a,b;
double m,n;
a=2;
b=2;
r=1;
cout<<"请输入要判断的点的坐标(x,y):"<<endl;
cin>>x>>y;
m=(x-a);
n=(y-b);
if (mm+nn<rr)
cout<<"该点在圆内"<<endl;
else if (m*m+n*n>r
r)
cout<< "该点不在圆内"<<endl;
else if (mm+nn==r*r)
cout<< "该点在圆上"<<endl;
}

你这没写乘号啊

img


而且你有的是float 有的是double精度可能影响你的比较
修改后:

img

#include <bits/stdc++.h>
using namespace std;
int main()
{
    double x,y,r,a,b;
    double m,n;
    a=2;
    b=2;
    r=1;
    cout<<"请输入要判断的点的坐标(x,y):"<<endl;
    cin>>x>>y;
    m=(x-a);
    n=(y-b);
    if (m*m+n*n<r*r)
        cout<<"该点在圆内"<<endl;
    else if (m*m+n*n>r*r)
        cout<< "该点不在圆内"<<endl;
    else if (m*m+n*n==r*r)
        cout<< "该点在圆上"<<endl;
}


#include <iostream>
using namespace std;
void main()
{
float x,y,r,a,b;
double m,n;
a=2;
b=2;
r=1;
cout<<"请输入要判断的点的坐标(x,y):"<<endl;
cin>>x>>y;
m=(x-a);
n=(y-b);
if (m*m+n*n<r*r)
cout<<"该点在圆内"<<endl;
else if (m*m+n*n>r*r)
cout<< "该点不在圆内"<<endl;
else
cout<< "该点在圆上"<<endl;
}

你输入的时候,x和y之间不要加逗号

浮点数计算有误差,判断两个浮点数是否相等得考虑误差

#include <iostream>

using namespace std;

int main()
{
    float a = 2;
    float b = 2;
    float r = 1;
    cout << "请输入要判断的点的坐标(x,y):\n";
    float x, y;
    cin >> x >> y;
    float dx = x - a;
    float dy = y - b;
    const float eps = 1e-5;
    if (abs(dx * dx + dy * dy - r * r) < eps)
        cout << "该点在圆上\n";
    else if (dx * dx + dy * dy < r * r)
        cout << "该点在圆内\n";
    else
        cout << "该点不在圆内\n";
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632