PTA 广轻 6-13 [0809]线段中点

问题描述

现有结构体定义如下:

struct point{
    double x;        // 点的x坐标 
    double y;        // 点的y坐标 
};
typedef struct point Point;

编写2个C语言函数:input_point( )和middle( )。

  • 函数input_point( )的功能是从键盘读入2个点的坐标分别保存到指针a和b所指向的Point类型的变量。

  • 函数middle( )的功能是计算以点a和点b为端点的线段ab的中点的坐标保存到Point类型的变量,并作为返回值返回。该函数不允许从键盘读取数据,也不允许输出数据到屏幕。

函数接口定义:

void input_point(Point * a, Point * b);
Point middle(Point a, Point b);

裁判测试程序样例:

#include <stdio.h>
#include <math.h>
struct point{
    double x;        // 点的x坐标 
    double y;        // 点的y坐标 
};
typedef struct point Point;
void input_point(Point * a, Point * b);
Point middle(Point a, Point b);
int main()
{
    Point a;        // 点a
    Point b;        // 点b
    Point m;     // 线段ab的中点 
    input_point(&a, &b);
    m = middle(a, b);
    printf("%f %f", m.x, m.y);
    return 0;
}

// 你编写的代码将被嵌在这里

输入格式

一共2行数据:

第1行包含点a的x坐标和y坐标,之间使用空格分隔;

第2行包含点b的x坐标和y坐标,之间使用空格分隔。

输出格式

无。

数据规模与约定

x坐标的值约定为 -100 000 ≤ x ≤ 100 000。

y坐标的值约定为 -100 000 ≤ y ≤ 100 000。

样例输入

1.2  3.4
5.6  7.8

样例输出

3.400000 5.600000

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

满分回答 

void input_point(Point * a, Point * b){
    scanf("%lf %lf", &(a->x), &(a->y));
    scanf("%lf %lf", &(b->x), &(b->y));
}
Point middle(Point a, Point b){
    Point m;
    m.x = (a.x + b.x) / 2;
    m.y = (a.y + b.y) / 2;
    return m;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值