c语言向量
1. c语言如何实现两向量叉乘
根据叉乘的计算方法可知
2. 编写一个C语言创建向量的void函数
#include<stdio.h>
#include<stdlib.h>
typedefstruct{
intn;
double*value;
}Vector;
voidcreatevector(Vector*x,intn){
x->n=n;
double*value=malloc(sizeof(double)*n);
x->value=value;
}
voiddeletevector(Vector*x){
free(x->value);
}
intmain()
{
intn,i;
Vector*temp=malloc(sizeof(Vector));
printf("n=");
scanf("%d",&n);
createvector(temp,n);
for(i=0;i<n;i++){
scanf("%lf",temp->value+sizeof(double)*i);
}
printf("%d ",n);
for(i=0;i<n;i++){
printf("%lf ",*(temp->value+sizeof(double)*i));
}
deletevector(temp);
free(temp);
return0;
}
3. c语言 向量的运算
根据题意可得如下代码:
#include<stdio.h>
intmain()
{
intn;
inta[1010],b[1010];
inti,ans=0;
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d",&a[i]);
}
for(i=0;i<n;++i){
scanf("%d",&b[i]);
}
for(i=0;i<n;++i){
ans+=a[i]*b[i];
}
printf("%d ",ans);
return0;
}
4. C语言能否定义向量,怎样定义
C语言不支持向量;
可以自己定义结构体,用两个坐标来表示或辐角表示
5. C语言求向量的矢量积、模、单位向量、还有判断2个向量是否共线,在线等答案,酱油党麻烦让让
//很简单,你对照一下吧。。。#include <stdio.h>
#include <math.h>
void main()
{
int i,sum=0,p[3]={1,2,3},p1[3]={2,3,4},flag=1;
double model=0,model1=0,temp;
for(i=0;i<3;i++)
{sum+=p[i]*p1[i];
model+=p[i]*p[i];
model1+=p1[i]*p1[i];
}
model=sqrt(model);
model1=sqrt(model1);
printf("向量p,p1的积: %d\n",sum);
printf("p,p1的模为:%lf %lf\n",model,model1);
temp=p[0]/p1[0];
if((p[1]*1.0/p1[1]-temp>=1e-3) &&(p[2]*1.0/p1[2]-temp>=1e-3))
flag=0;
if(flag)
printf("两向量共线!");
else
printf("不共线");
}
6. 怎么用C语言实现向量操作
//使用动态分配
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
inti,L;
char*p;
voidmain(){
for(i=0;i<20000;i++){
L=rand();
p=malloc(L);
if(NULL==p){
printf("mallocerror! ");
continue;
}
memset(p,0,L);
free(p);
}
}
//不使用动态分配
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#defineMAXLEN30000
inti,L;
charbuf[MAXLEN];
char*p;
voidmain(){
p=&buf[0];
for(i=0;i<20000;i++){
L=rand();
if(L>MAXLEN){
printf("L>MAXLEN==%d,ignorespilth. ",MAXLEN);
L=MAXLEN;
}
memset(p,0,L);
}
}
7. 请问C语言及数据结构中的向量具体表示什么意思
支持通过位序访问元素的线性序列都可以称为向量。位序类似于数组下标,但我们只能说数组只是向量的一种具体实现,而不能说向量就是数组,实现向量还有其他方法。向量的英文单词就是vector,很显然,vector类就是向量的一种实现,所以你可以通过学习vector这个类来理解向量的特征。
8. C语言中的数组和向量怎么区分
数组不可以改变大小,声明:
int a[20];
向量可以改变大小,声明:
vector a;
9. C语言中向量的应用 求集合并运算。该怎么写啊
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
enumboolean{FALSE,TRUE};
typedefenumbooleanBool;
typedefintElementType;
structvector
{
ElementType*elements;
intArraySize;//数组的大小
intVectorLength;//向量长度
};
typedefstructvectorVector;
voidGetArray(Vector*V)//申请向量存储空间
{
V->elements=(ElementType*)malloc(sizeof(ElementType)*V->ArraySize);
if(V->elements==NULL)
{
printf("MoneyallocationError! ");
}
}
voidInitVector(Vector*V,intsz)//建立sz大小的数组
{
if(sz<=0)
printf("InvalidArraySize ");
else
{
V->ArraySize=sz;
V->VectorLength=0;
GetArray(V);//申请向量存储空间
}
}
Boolinsert(Vector*V,ElementTypex,inti)
{
intj;
if(V->VectorLength==V->ArraySize)
{
printf("overflow ");
returnFALSE;
}
elseif(i<0||i>V->VectorLength)
{
printf("positionerror ");
returnFALSE;
}
else
{
for(j=V->VectorLength-1;j>=i;j--)
V->elements[j+1]=V->elements[j];
V->elements[i]=x;
V->VectorLength++;
returnTRUE;
}
}
ElementTypeGetNode(Vector*V,inti)
{
return(i<0||i>=V->VectorLength)?NULL:V->elements[i];
}
intFind(Vector*V,ElementTypex)
{
inti;
for(i=0;i<V->VectorLength;i++)
if(V->elements[i]==x)
returni;
return-1;
}
Vector*Union(Vector*Va,Vector*Vb)
{
intm,n,i,k,j;
ElementTypex;
Vector*Vc=(Vector*)malloc(sizeof(Vector));
n=Va->VectorLength;
m=Vb->VectorLength;
InitVector(Vc,m+n);
j=0;
for(i=0;i<n;i++)
{
x=GetNode(Va,i);
insert(Vc,x,j);
j++;
}
for(i=0;i<m;i++)
{
x=GetNode(Vb,i);
k=Find(Vc,x);
if(k==-1)
{
insert(Vc,x,j);
j++;
}
}
returnVc;
}
intmain(void)
{
inti,j,k;
Vectorla;
Vectorlb;
Vector*lc;
inta,b;
printf("请输入La,Lb数组的大小:");
scanf("%d%d",&i,&j);
la.ArraySize=i;
lb.ArraySize=j;
GetArray(&la);
GetArray(&lb);
InitVector(&la,i);
InitVector(&lb,j);
b=0;
printf("请输入第一个向量的数:");
for(intn=0;n<i;n++)
{
scanf("%d",&a);
insert(&la,a,b);
b++;
}
b=0;
printf("请输入第二个向量的数:");
for(intm=0;m<j;m++)
{
scanf("%d",&a);
insert(&lb,a,b);
b++;
}
lc=Union(&la,&lb);
printf("合并后的向量:");
for(k=0;k<lc->VectorLength;k++)
{
printf("%d",lc->elements[k]);
}
return0;
}
今天心情不错,帮你改了~~
10. C语言向量加减
数组超限?所有类似下面的代码
for(j=1;j<=5;j++)
scanf("%d",&a[j]);
改为下面代码
for(j=0;j<4;j++)
scanf("%d",&a[j]);
printf也只从c[0]~c[4],不应是c[1]~c[5],d数组也是一样。
你可以找本书再看看数组的定义和使用,比较好。