我创建了一个矢量结构和一个addVector
和subVector
函数。我还创建了一个打印矢量功能。
我需要创建4个矢量实例:两个用于输入,两个用于输出(一个用于加法,一个用于减法)。我需要致电printVector
打印addVector
的结果和subVector
的结果。我认为大部分都是正确的。我只是不确定该怎么做。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
double x;
double y;
double z;
} VECTOR;
VECTOR addVector(VECTOR *addOne, VECTOR *addTwo) {
double addX = addOne->x + addTwo->x;
double addY = addOne->y + addTwo->y;
double addZ = addOne->z + addTwo->z;
};
VECTOR subVector(VECTOR *subOne, VECTOR *subTwo){
double subX = subOne->x - subTwo->x;
double subY = subOne->y - subTwo->y;
double subZ = subOne->z - subTwo->z;
};
void printVector(VECTOR *printVector) {
printf("%lf, %lf, %lf\n", printVector->x, printVector->y, printVector->z);
};
void main() {
VECTOR A;
VECTOR B;
VECTOR C = addVector(&A, &B);
VECTOR D = subVector(&A, &B);
printf("Enter three doubles.\n");
scanf_s("%lf %lf %lf", &A.x, &A.y, &A.z);
addVector(&A, &B);
printVector(&C);
subVector(&A, &B);
printVector(&D);
system("pause");
};
答案 0 :(得分:2)
您计算VECTOR
和addVector
中subVector
坐标的值,但不返回VECTOR
结构。
以下是如何操作,并注意由于VECTOR
参数未被修改,因此指针应该const
有资格强调此属性:
VECTOR addVector(const VECTOR *addOne, const VECTOR *addTwo) {
VECTOR add;
add.x = addOne->x + addTwo->x;
add.y = addOne->y + addTwo->y;
add.z = addOne->z + addTwo->z;
return add;
}
VECTOR subVector(const VECTOR *subOne, const VECTOR *subTwo) {
VECTOR sub;
sub.x = subOne->x - subTwo->x;
sub.y = subOne->y - subTwo->y;
sub.z = subOne->z - subTwo->z;
return sub;
}
void printVector(const VECTOR *printVector) {
printf("%lf, %lf, %lf\n", printVector->x, printVector->y, printVector->z);
}
在main
功能中,您可以在初始化或从用户读取值之前使用向量A
和B
。以这种方式修改代码:
void main() {
VECTOR A = { 0, 0, 0 };
VECTOR B = { 0, 0, 0 };
VECTOR C, D;
printf("Enter three doubles for A\n");
scanf_s("%lf %lf %lf", &A.x, &A.y, &A.z);
printf("Enter three doubles for B\n");
scanf_s("%lf %lf %lf", &B.x, &B.y, &B.z);
C = addVector(&A, &B);
printVector(&C);
D = subVector(&A, &B);
printVector(&D);
system("pause");
}
最后,不要在你的职能部门之后加上;
。
另请注意,您应该启用所有编译器警告,因为它可以帮助避免上述的愚蠢错误。对命令行编译器使用gcc -Wall -W
或clang -Weverything
,如果使用,则增加Visual Studio IDE中的警告级别。
答案 1 :(得分:0)
addVector
和subVector
计算新向量的组件,但实际上并不返回新向量。但是,你调用addVector
和subVector
并忽略返回值,所以至少你是一致的。