gpt4 book ai didi

c - C 中的函数出现问题

转载 作者:行者123 更新时间:2023-11-30 18:52:35 25 4
gpt4 key购买 nike

我编写这个程序是为了计算标量积并找出 vector v 的最小和最大数字(+那里的位置)。除了 lower_number 函数之外,一切正常。它找到 vector v 内的最小数字和位置,但是当位置位于 v[0] ----> 1 时,它显示一个非常长的数字。我不知道为什么会发生这种情况。请帮忙,非常感谢

int scalar_produc(int *v,int *w,int n)
{
int i = 0;
int sp;
int sp2 = 0;

for(i= 0; i < n; i++)
{
sp = v[i] * w[i];
sp2 = sp2 + sp;
}

return sp2;
}

int lowest_number(int *v,int n)
{
int i = 0;
int low = v[i];
int position;

for(i = 0; i < n; i++)
{
if(v[i] < low)
{
low = v[i];
position = i;
}
}

printf("The lowest number is: %d \n", low);
printf("The position of it: %d \n",position+1);
}

int biggest_number(int *v, int n)
{
int i = 0;
int position;
int biggest = v[i];

for(i = 0; i < n; i++)
{
if(v[i] > biggest)
{
biggest = v[i];
position = i;
}
}

printf("The biggest number of the vector 'v' is: %d \n",biggest);
printf("The position of the biggest number: %d \n", position+1);
}

int main()
{
int n,i;
int *v,*w;

printf("Enter the number of vectors you would like to enter: \n");
scanf("%d",&n);

v = (int*) malloc(sizeof(int) *n);
w = (int*) malloc(sizeof(int) *n);

printf("Enter the vectors: \n");
for(i = 0; i < n ;i++)
{
printf("v[%d]: \n",i+1);
scanf("%d",&v[i]);
printf("w[%d]: \n",i+1);
scanf("%d",&w[i]);
}

printf("The scalar product: %d \n",scalar_produc(v,w,n));

lowest_number(v,n);
biggest_number(v,n);

free(v);
free(w);

return 0;
}

最佳答案

您没有初始化位置。因此,如果最小值是第一个值,则 position 的值未定义。

将其初始化为 0,它应该可以工作。

int i = 0;
int low = v[i];
int position = 0;

关于c - C 中的函数出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com