「已注销」 2020-12-12 23:05 采纳率: 16.7%
浏览 239
已采纳

在一个平面上的第一象限中的若干个点中,寻找距离坐标原点最近的点。假设每个点用两个坐标表示。

定义一个结构体,描述点的信息,可参考如下:
struct point
{
int x; //横坐标
int y; //纵坐标
};
从键盘输入一个整数n (1 <= n <= 100),表示有n个候选的点,然后输入n个点的横纵坐标。现要从中选出距离原点最近的点并输出,假设距离的值保留两位小数,如果两个点到原点的距离相等,则取横坐标小的点;如果两个点到原点的距离相等且横坐标相等,则取纵坐标小的点。输出的格式为“(横坐标,纵坐标)”。

输入

5

1 4
5 0
8 3
9 3
6 4

输出

(1,4)

样例输入

20

8 6

9 0

8 7

7 4

1 2

3 3

3 8

0 1

1 3

9 2

8 7

7 4

5 1

7 1

1 6

8 1

5 1

2 7

9 6

6 8

样例输出

(0,1)

 

  • 写回答

4条回答 默认 最新

  • windhit 2020-12-13 13:24
    关注
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    typedef struct Point{
        int   x;
        int   y;
        float distance;
    } Point_t;
    
    Point_t* min_point = NULL;
    
    void CalcDistance(Point_t *temp){
        temp->distance = sqrt(temp->x*temp->x + temp->y*temp->y);
    }
    
    void ComparePoint(Point_t *temp){
        CalcDistance(temp);
    
        if(min_point == NULL){
            min_point = temp;
            return;
        }
        if(temp->distance > min_point->distance){
            return;
        }
        if(temp->distance < min_point->distance){
            free(min_point);
            min_point = temp;
            return;
        }
        if(temp->x > min_point->x){
            return;
        }
        if(temp->x < min_point->x){
            free(min_point);
            min_point = temp;
            return;
        }
        if(temp->y > min_point->y){
            return;
        }
        if(temp->y < min_point->y){
            free(min_point);
            min_point = temp;
            return;
        }
    }
    
    void DisplayPoint(Point_t *temp){
        printf("(%d %d)\n",temp->x, temp->y);
    }
    
    void main(){
        int         i, num;
        Point_t*    point;
    
        scanf("%d",&num);
        for(i=0;i<num;i++){
            point=(Point_t*)malloc(sizeof(Point_t));
            scanf("%d %d",&point->x, &point->y);
            ComparePoint(point);
        }
        DisplayPoint(min_point);
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 请提交代码 12月30日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度