4

Thanks a lot, with you help I understood all my mistakes (:

This is my first time using this website so I'm not sure if it is in the right format. Basically I have to make a function that fills a vector, but it isn't working at all. English isn't my first language so this is probably really confusing, but I'd appreciate if somebody helped me. Thanks a lot.

#include <stdio.h>
#include <stdlib.h>

void le_vet(int v[1000], int n, int i)
{
    for (i = 0; i < n; i++) {
        printf("Type the number %d: ", i+1);
        scanf("%d", &v[i]);
    }
}

int main()
{
    int v[1000], n;
    printf("Type the syze of the vector: ");
    scanf("%d", &n);
    void le_vet(n);
    system ("pause");
    return 0;
}
4

4 回答 4

6

你不是le_vet在你的主函数中调用,而是在创建一个名为“le_vet”的函数指针,它接受一个int(默认情况下,因为没有指定类型)并返回一个void。我很确定这不是预期的。

相反,更改void le_vet(n)le_vet(v, n)并更改:

void le_vet(int v[1000], int n, int i)
{
   for (i = 0; i < n; i++) {
   printf("Type the number %d: ", i+1);
   scanf("%d", &v[i]);
   }
}

对此:

void le_vet(int v[], int n)
{
   int i;
   for (i = 0; i < n; i++) {
   printf("Type the number %d: ", i+1);
   scanf("%d", &v[i]);
   }
}

由于您不需要i从函数外部传入,因此无需将其包含在函数的参数中。循环中的第一个元素在进入for循环时执行一次,因此它通常用于声明循环的迭代变量,就像我在这里所做的那样。

编辑:哎呀。不能在 C 中做到这一点。我已经习惯了 C++,我在这里犯了一个错误。i正如@Over Flowz 建议的那样,在循环上方声明。更新我修改后的代码,但留下这个记录作为停止工作去吃晚饭的证据:)

于 2013-01-07T02:26:29.397 回答
3

le_vet()当它需要三个参数时,您只将一个参数传递给。您还需要删除void, 因为您正在调用一个函数。

也许这会奏效。

void le_vet(int n)
{
     static int v[1000];
     for (int i = 0; i < n; i++) {
     printf("Type the number %d: ", i+1);
     scanf("%d", &v[i]);
     }
}

您不需要将传递的参数作为参数,因为您正在循环int i中创建另一个。for

int i = 0;
while (i < n)
     {
          i++;
     }

是相同的

for (int i = 0; i < n; i++)

于 2013-01-07T02:22:59.377 回答
2

当您像这样调用时:

...
scanf("%d", &n);
void le_vet(n); //you are declaring a function. You need to remove the void keyword
system ("pause");
...

你应该这样调用:

...
scanf("%d", &n);
le_vet(n);
system ("pause");
...

然后你会看到真正的错误,比如参数的数量

于 2013-01-07T02:26:57.553 回答
2

尝试:

#include <stdio.h>
#include <stdlib.h>

void le_vet(char v[], int n)
{
int i = 0;
for(i = 0; i < n; i++)
{
    printf("Type the number %d: ", i+1);
    scanf("%s", &v[i]); //Read string, not decimal for output.
}
}

int main()
{
char v[1000] = {0}, n;
printf("Type size of the vector: ");
scanf("%d", &n);
le_vet(v, n);
printf("%s", v);
system("pause");
return 0;
}

希望能帮助到你。

于 2013-01-07T02:28:52.373 回答