非常感谢,在你的帮助下,我理解了所有的错误(
这是我第一次使用本网站,所以我不确定它是否格式正确。 基本上我必须创建一个填充向量的函数,但它根本不起作用。 英语不是我的第一语言,所以这可能真的令人困惑,但我很感激 有人帮助了我。非常感谢。
#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;
}
答案 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
循环中的第一个元素在输入循环时执行一次,因此它通常用于声明循环的迭代变量,就像我在这里做的那样。
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;
}
希望它有所帮助。