编程实践5-10
课程元素类型 任务
用二维数组的形式,描述空间的n个点,计算距离最近的两个点,输出空间坐标及距离。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Dian
{
class Program
{
static void Main(string[] args)
{
double[,] a;
double d,max;
int b,p1,p2;
Console.WriteLine("请输入点的个数:");
b = Convert.ToInt16(Console.ReadLine());
a = new double[b, 2];
for (int i = 1; i <= b; i++)
{
Console.Write("请输入第{0}点的横坐标:", i + 1);
a[i, 0] = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入第{0}点的纵坐标:", i + 1);
a[i, 1] = Convert.ToDouble(Console.ReadLine());
}
max = 0;
p1 = 0;
p2 = 0;
for (int i = 0; i < a.GetLength(0) - 1; i++)
{
for (int j = i + 1; j < a.GetLength(0); j++)
{
d = Math.Sqrt((a[j, 0] - a[i, 0]) * (a[j, 0] - a[i, 0]) + (a[j, 1] - a[i, 1]) * (a[j, 1] - a[i, 1]));
if (d > max)
{
max = d;
p1 = i;
p2 = j;
}
}
}
Console.WriteLine("第{0}个点({1},{2})与第{3}个点({4},{5})之间的距离最大,为{6}", p1 + 1, a[p1, 0],a[p1, 1], p2 + 1, a[p2, 0], a[p2, 1], max);
Console.ReadKey();
}
}
}