我在使用这个程序时遇到问题,perimetro(周长)。我从来没有得到正确的价值。我总是疯狂的数字。
这是我的代码:
#include <stdio.h>
#include <math.h>
int perimetro(int v[][3] , int p);
int main(){
int v[1][3];
int i,j,p;
for (i=0;i<1;i++){
for (j=0;j<3;j++){
printf("Digite o tamanho de um dos lados do triangulo :");
scanf("%d",&v[i][j]);
}
}
perimetro(v,p);
printf("O perimetro corresponde a : %d",p);
return 0;
}
int perimetro(int v[][3], int p) {
p=0;
p=p+v[0][0]+v[0][1]+v[0][2];
return p;
}
答案 0 :(得分:2)
更改
perimetro(v,p);
要
p=perimetro(v,p);
这样做是因为函数返回值(周长),但您没有将值存储在任何变量中。将p
传递给函数并对其进行修改不会在main
中修改它的值。这是因为C使用pass-by-value,并且在函数中找到了变量的副本。
更好的方法是将p
的地址传递给函数并使用指针作为函数的第二个参数,或者将一个参数作为第二个参数传递给函数函数中没有使用参数。