关于矢量和功能的练习

Gab*_*ais 4 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;
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 6

你是不是叫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]);
   }
}
Run Code Online (Sandbox Code Playgroud)

对此:

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]);
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • +1,但我将修改后的版本更改为`void le_vet(int v*,int n){...}`.我有一种感觉,OP认为`1000`实际上意味着什么. (2认同)