问题描述
现有结构体定义如下:
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;
}