问题描述:
输入一个点的坐标,输出它距离原点的距离
输入:
一行,两个浮点数,表示这个点的坐标
输出:
这个点离原点的距离,保留三位小数
样例输入:
3 4
样例输出
5.000
**思路点拨:**拿到这到题后,大家都会这样做
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int main()
{
double x,y;
scanf("%lf %lf",&x,&y);
printf("%.3lf",sqrt(x*x+y*y));
return 0;
}
稍微秀一下就是用一个结构体存储着个点的信息
#include<cstdio>
#include<cmath>
struct Point //定义结构体,记录这个点的信息
{
double x,y; //坐标
}a;
int main()
{
scanf("%lf %lf",&a.x,&a.y); //输入坐标
printf("%.3lf",sqrt(a.x*a.x+a.y*a.y)); //输出距离
return 0;
}
当然,标题说的是STL,所以就介绍一个STL的模板:template
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
template <typename T> //通过模板定义类型T
struct Point{ //定义一个关于点的结构体
T x; //横纵坐标
T y;
};
#define Dir\ //宏定义代码,是一个比较高级的操作
{\
Point<double> p;\ //直接将点的信息变成double类型的了
scanf("%lf %lf",&p.x,&p.y);\ //输入坐标
printf("%.3lf\n",sqrt(p.x*p.x+p.y*p.y));\ //输出这个点距离原点的距离
}
int main()
{
Dir;
return 0;
}