嗨,伙计们,我很抱歉打扰你,但我开始在这里松懈了..我最近又开始用 C 编程了,我遇到了一些我无法弄清楚的错误..我的 C程序(应该)是一个简单的程序,因此它需要执行以下操作:从键盘读取未定义数量的自然元素,直到读取到 0。之后,它必须计算所有元素的乘积并计算该结果末尾的 0-s 的数量。
int input(int* v) {
int n = 0;
do
{
n = n + 1;
v = (int*) realloc(v,n*sizeof(int)); printf("Enter number %d: ",n); scanf("%d",&v[n-1]);
}
while(v[n-1] != 0);
n--;
return n; }
int tZeros(int* v, int eNb) {
int i;
int val = 1;
for(i = 0; i < eNb; i++)
{
val = val * v[i];
}
i=0;
while(val % 10 == 0)
{
i++;
}
return i; }
int main (int argc, char** argv) {
int* v = NULL;
int eNb = input(&(*v));
if(eNb>0)
{
int zeros = tZeros(v, eNb);
printf("The number of ending zeros in the product of the given numbers is: %d",zeros);
}
else
{
printf("No elements to do computations with!\n");
}
free(v);
return 0;
}
输入函数应该返回两件事:元素的数量和动态数组中的实际元素。但是在输入函数运行后,输入的值都丢失了。我将参数作为指针传递给输入,所以它应该改变正确地址的值对吗?
欢迎所有建议!谢谢!
Ps 我认为问题出在我的数组 v.. 退出输入函数后,它会丢失所有值..