用c语言实现任意位数的向量坐标叉乘

例如向量a=(1,2,3,5,4) b=(2,5,6,4,1),使他利用行列式的方式叉乘,并输出成一个新的向量,c=(.....).
求大神帮忙!!!

-2

2个回答

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
    int n;
    scanf("%d", &n);
    int * a = (int *)malloc(sizeof(int) * n);
    int * b = (int *)malloc(sizeof(int) * n);
    int * c = (int *)malloc(sizeof(int) * n);
    memset(c, 0, sizeof(int) * n);
    printf("vector a:");
    fflush(stdin);
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    printf("vector b:");
    fflush(stdin);
    for (int i = 0; i < n; i++)
        scanf("%d", &b[i]);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            c[i] += a[i]*b[j];
    }
    for (int i = 0; i < n; i++)
        if (i != n - 1)
            printf("%d,", c[i]);
        else
            printf("%d\n", c[i]);
    return 0;
}
0
qq_22839957
qq_22839957 回复caozhy: 我写在下面了
8 个月之前 回复
caozhy
weixin_45841714 回复qq_22839957: 你在下面回答区域贴代码,或者编辑你的问题,你在这里的代码,分行全部都没有了,没法看
8 个月之前 回复
qq_22839957
qq_22839957 int main() { int n; scanf("%d", &n); int a[n],b[n],c[n]; printf("vector a:"); for (int i = 0; i < n; i++) scanf("%d", &a[i]); printf("vector b:"); for (int i = 0; i < n; i++) scanf("%d", &b[i]); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) c[i] += a[i]*b[j]; } for (int i = 0; i < n; i++) if (i != n - 1) printf("%d,", c[i]); else printf("%d\n", c[i]); return 0; } 我把你的改成这样,为什么会出错
8 个月之前 回复
qq_22839957
qq_22839957 叉乘的结果就是这样的啊,(2*4-3*5,-(1*4-3*6),1*5-2*6)
8 个月之前 回复
caozhy
weixin_45841714 回复qq_22839957: 为什么是-7,14,-7
8 个月之前 回复
qq_22839957
qq_22839957 比如a=(1,2,3) b=(6,5,4),正确的叉乘结果应该是c=(-7,14,-7)的,这个程序写出来是15,30,45
8 个月之前 回复
caozhy
weixin_45841714 回复qq_22839957: 之前看错了,我修改了程序
8 个月之前 回复
qq_22839957
qq_22839957 是叉乘,不是点乘...不过还是谢谢了!
8 个月之前 回复

int main()
{
int n;
scanf("%d", &n);
int a[n],b[n],c[n];
printf("vector a:");
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("vector b:");
for (int i = 0; i < n; i++)
scanf("%d", &b[i]);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
c[i] += a[i]*b[j];
}
for (int i = 0; i < n; i++)
if (i != n - 1)
printf("%d,", c[i]);
else
printf("%d\n", c[i]);
return 0;
}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!