4

どうもありがとう、あなたの助けで私はすべての間違いを理解しました(:

このウェブサイトを使用するのはこれが初めてなので、正しい形式かどうかわかりません。基本的にはベクトルを埋める関数を作らないといけないのですが、全然うまくいきません。英語は私の母国語ではないので、これはおそらく非常に紛らわしいですが、誰かが私を助けてくれれば幸いです. どうもありがとう。

#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()3 つの引数が必要な場合、1 つの引数のみを に渡します。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 に答える