全局函数未返回正确的值
Global Function not returning the correct values
我正在尝试使用全局函数编译向量的第一个非零值。但是当我编译时,它 returns 原始值 k1=k2=1,而它应该是 k1=0 和 k2=2。不?我的代码如下所示:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
primeiro(poli1, k1);
printf("%d \n", k1);
primeiro(poli2, k2);
printf("%d \n", k2);
}```
您永远不会更改 k1
和 k2
,因此它们具有原始值。
也许
primeiro(poli1, k1);
primeiro(poli2, k2);
本来就是
k1 = primeiro(poli1, k1);
k2 = primeiro(poli2, k2);
您需要使用传递引用(指针)来更改主代码中 k1 的值(它退出的范围)或将 primeiro 的创新分配给 k1 9k1 = primeiro(poli1, k1) ;) 实际上是从它返回值。
修改后的实施:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
k1 = primeiro(poli1, k1);
printf("%d \n", k1);
k2 = primeiro(poli2, k2);
printf("%d \n", k2);
我正在尝试使用全局函数编译向量的第一个非零值。但是当我编译时,它 returns 原始值 k1=k2=1,而它应该是 k1=0 和 k2=2。不?我的代码如下所示:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
primeiro(poli1, k1);
printf("%d \n", k1);
primeiro(poli2, k2);
printf("%d \n", k2);
}```
您永远不会更改 k1
和 k2
,因此它们具有原始值。
也许
primeiro(poli1, k1);
primeiro(poli2, k2);
本来就是
k1 = primeiro(poli1, k1);
k2 = primeiro(poli2, k2);
您需要使用传递引用(指针)来更改主代码中 k1 的值(它退出的范围)或将 primeiro 的创新分配给 k1 9k1 = primeiro(poli1, k1) ;) 实际上是从它返回值。
修改后的实施:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
k1 = primeiro(poli1, k1);
printf("%d \n", k1);
k2 = primeiro(poli2, k2);
printf("%d \n", k2);