习题9-3 平面向量加法 (15分)
本题要求编写程序,计算两个二维平面向量的和向量。
输入格式:
输入在一行中按照“x1 y1 x2 y2”的格式给出两个二维平面向量v1=(x1,y1)和v2=(x2,y2)的分量。
输出格式:
在一行中按照(x, y)
的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。
输入样例:
3.5 -2.7 -13.9 8.7
输出样例:
(-10.4, 6.0)
C代码
#include<stdio.h>
#include<math.h>
typedef struct vector{
double x;
double y;
}vector, *p_vct;
vector vadd(vector *v1, vector *v2){
vector v3;
v3.x = v1->x+v2->x;
v3.y = v1->y+v2->y;
return v3;
}
int main(void){
vector v1, v2, v3;
scanf("%lf %lf", &v1.x, &v1.y);
scanf("%lf %lf", &v2.x, &v2.y);
v3 = vadd(&v1, &v2);
if (fabs(v3.x)<0.05)//由于(-0.05, 0.05)内的值,只保留一位小数输出,会四舍五入到-0.0或0.0, 所有我们需要用fabs来把这个范围内的
//值转成绝对值以规避-0.0的问题
v3.x = fabs(v3.x);
if (fabs(v3.y)<0.05)
v3.y = fabs(v3.y);
printf("(%.1f, %.1f)", v3.x, v3.y);
return 0;
}