求平面两点间的最短距离
这里需要加#include<math.h>这个头文件嘛?#define 那一行,是正确的写法嘛?
程序设计题:
数组元素x,y表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式"%.3f"输出
#include <stdio.h>
#define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
int main()
{
int i,j;
float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc=len(x,y,x,y);
//从以下开始答题 return 0;
} 这里需要加#include<math.h>这个头文件嘛?
#define 那一行,是正确的写法嘛?是的 自己尝试写了一下,但运行错误【捂脸】
#include<stdio.h>
#include<math.h>
#define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
int main()
{
int i,j;
float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc=len(x,y,x,y);
for(i=0;i<9;i++)
{
for(j=0;j<9;i++)
{
if(len(x,y,x,y)<minc)
minc=len(x,y,x,y);
}
}
printf("%.3f",minc);
return 0;
} 首先是define的用法问题,不能像你那样用的,我摘了百度上的一小段,你理解一下,具体的可以查资料。
define在C语言中是一个宏定义的关键字,它的用法如下:
#define 常量名 值 该句使用在程序开头,整个程序中该常量在预编译的时候用后面的值作简单替换。
例如:在程序开始有这么一句 #define PRICE 30
在整个程序中,PRICE的值都是30.
另外,题目的理解问题,最小值应该不是两个相邻的元素进行距离运算吧! 随机的点我也没有搞清楚。下面的代码仅供参考,默认x和y的下标是一样的了。
define在C语言中是一个宏定义的关键字,它的用法如下:
#define 常量名 值 该句使用在程序开头,整个程序中该常量在预编译的时候用后面的值作简单替换。
例如:在程序开始有这么一句 #define PRICE 30
在整个程序中,PRICE的值都是30.
你的程序里还是有些小问题,可以对照我的代码看一下区别。纠错一下 如果题目意思是平面上随机的点,x和y下标可以任意取得话,那么就要对数组x和y的元素先进行绝对值大小排序了。这里我就先不写了 #include<stdio.h>
#include<math.h>
int main()
{
int i,j;
float len;
float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc = 0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
len = sqrt((x - x)*(x - x) + (y - y)*(y - y));
minc = len > minc ? len: minc;
}
}
printf("最小值%.3f",minc);
return 0;
} Justin1 发表于 2020-4-29 22:15
啊啊太感谢了!!{:10_287:} 永恒的蓝色梦想 发表于 2020-4-29 20:17
是的
{:10_287:}明白辽,谢谢! 后来在网上翻到了参考答案,码在这里了
#include<stdio.h>
#include<math.h>
#define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
int main()
{
int i,j;
float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc=len(x,y,x,y);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if((c=len(x,y,x,y))<minc)
minc=c;
}
}
printf("%.3f",minc);
return 0;
} Justin1 发表于 2020-4-29 22:14
首先是define的用法问题,不能像你那样用的,我摘了百度上的一小段,你理解一下,具体的可以查资料。
de ...
他用的是有参宏……没有问题的 永恒的蓝色梦想 发表于 2020-4-30 07:37
他用的是有参宏……没有问题的
长知识了,目前学得也还不够 Marcccccy 发表于 2020-4-30 01:18
后来在网上翻到了参考答案,码在这里了
有点误人子弟了,哈哈哈。以后得说答案仅供参考了 Marcccccy 发表于 2020-4-30 01:18
后来在网上翻到了参考答案,码在这里了
不好意思啊,昨天以为调试对了,就发了,结果我的程序有两个问题,第一个是j 应该 = i +1 ,我的程序运行可以有(x - x)的平方了,第二个是最大最小值问题,昨天的求的是最大值。
修改后代码如下
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
float len;
float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
minc = sqrt((x - x)*(x - x) + (y - y)*(y - y));
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
len = sqrt((x - x)*(x - x) + (y - y)*(y - y));
minc = len < minc ? len: minc;
}
}
printf("最小值%.3f",minc);
return 0;
} Justin1 发表于 2020-4-30 08:06
不好意思啊,昨天以为调试对了,就发了,结果我的程序有两个问题,第一个是j 应该 = i +1 ,我的程序运 ...
好欸,谢谢啦! Justin1 发表于 2020-4-30 07:51
有点误人子弟了,哈哈哈。以后得说答案仅供参考了
欸参考答案也是仅供参考的嘛嘿嘿{:10_267:}
页:
[1]