关于矢量和功能的练习

时间:2013-01-07 02:18:44

标签: c function vector

非常感谢,在你的帮助下,我理解了所有的错误(

这是我第一次使用本网站,所以我不确定它是否格式正确。 基本上我必须创建一个填充向量的函数,但它根本不起作用。 英语不是我的第一语言,所以这可能真的令人困惑,但我很感激 有人帮助了我。非常感谢。

#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 个答案:

答案 0 :(得分:6)

你没有在main函数中调用le_vet,而是在创建一个名为“le_vet”的函数指针,它采用一个int(默认情况下,因为没有指定类型)返回一个空格。我很确定这不是我想要的。

相反,请将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 ++,我在这里做了个傻瓜。正如@Over Flowz建议的那样,在循环上方声明i。更新我修改后的代码,但留下此记录作为是时候停止工作并去吃晚餐的证据:)

答案 1 :(得分: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++)

答案 2 :(得分: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");
...

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

答案 3 :(得分: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;
}

希望它有所帮助。