Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中使用数组进行扫描和求和_C_Arrays_For Loop - Fatal编程技术网

在C中使用数组进行扫描和求和

在C中使用数组进行扫描和求和,c,arrays,for-loop,C,Arrays,For Loop,我试图编写一个简单的程序,提示用户输入N个数字,将它们存储在一个数组中,然后将它们相加 我知道我可以用递归来实现这一点,但我正在努力学习数组是如何工作的 例如: 1(按回车键) 2(按回车键) ... 10(按回车键) 预期产出:55 #include <stdio.h> int main (void){ int n; int a[n]; int counter; printf("How many numbers do you want to enter? \n

我试图编写一个简单的程序,提示用户输入N个数字,将它们存储在一个数组中,然后将它们相加

我知道我可以用递归来实现这一点,但我正在努力学习数组是如何工作的

例如:

1(按回车键) 2(按回车键) ... 10(按回车键)

预期产出:55

#include <stdio.h>

int main (void){
  int n;
  int a[n];
  int counter;

  printf("How many numbers do you want to enter? \n");
  scanf("%d", &n);

  printf("OK! now enter your number: \n");
  for (int i = 0; i <= n; i++){
    scanf("%d", &a[i]);
    counter =+ a[i];
  }

  printf("The answer is: %d\n", counter);
  return 0;
} 
#包括
内部主(空){
int n;
int a[n];
整数计数器;
printf(“您要输入多少数字?\n”);
scanf(“%d”和“&n”);
printf(“好!现在输入您的号码:\n”);

对于(int i=0;i您正在使用可变长度数组。在运行时必须知道
n
的值。放置声明

int a[n];  
在为
n
获取输入后,即在
scanf(“%d”,&n);
之后,在使用它之前将
计数器初始化为零,否则您将获得垃圾值(由于未定义的行为)。

还可以从使用可变长度数组的
i更改
for
循环条件。在运行时必须知道
n
的值。放置声明

int a[n];  
在为
n
获取输入后,即在
scanf(“%d”,&n);
之后,在使用它之前将
计数器初始化为零,否则您将获得垃圾值(由于未定义的行为)。
同时,在此行之后,将循环条件从
i更改为

int n;
你认为
n
的值是多少

现在转到下一行:

int a[n];   
这个阵列有多大?
您能正确访问它吗?

在这一行之后:

int n;
你认为
n
的值是多少

现在转到下一行:

int a[n];   
这个阵列有多大?

您能正确访问它吗?

首先,您不能在不知道其大小的情况下创建静态数组。您首先需要向用户请求“n”变量,然后声明您的数组

在开始计数之前,您还需要显式地将计数器变量初始化为零。在C中,当您声明变量时,变量不会默认为0

运算符“=+”不存在,请将其更改为“+=”

最后但并非最不重要的一点是,循环中的限制有点偏离,您需要11个值;) (我编辑了这篇文章,我只要求9个值是错误的。我倾向于混淆这类东西)

#包括
内部主(空){
int n;
int计数器=0;
printf(“您要输入多少数字?\n”);
scanf(“%d”和“&n”);
int a[n];
printf(“好!现在输入您的号码:\n”);
对于(int i=0;i
首先,如果不知道静态数组的大小,就不能创建静态数组。首先需要向用户请求“n”变量,然后声明数组

在开始计数之前,您还需要显式地将计数器变量初始化为零。在C中,当您声明变量时,变量不会默认为0

运算符“=+”不存在,请将其更改为“+=”

最后但并非最不重要的一点是,循环中的限制有点偏离,您需要11个值;) (我编辑了这篇文章,我只要求9个值是错误的。我倾向于混淆这类东西)

#包括
内部主(空){
int n;
int计数器=0;
printf(“您要输入多少数字?\n”);
scanf(“%d”和“&n”);
int a[n];
printf(“好!现在输入您的号码:\n”);
对于(int i=0;i
如果n依赖于用户输入,那么在编译时如何知道n?@ValekHalfHeart;这是一个输入错误。这并不重要;第一个printf应该在触发此错误之前运行。此外,for循环中的条件应该是
i
,而不是
i如果n依赖于用户输入,那么在编译时如何知道n?@ValekHalfHeart;那是一个输入错误。这并不重要;第一个printf应该在这个错误被触发之前运行。此外,for循环中的条件应该是
i,而不是
i答案,以及
i
i
=+
+=
请压缩并改进代码上的缩进。答案和
i
i
=+
-->
+=
请压缩并改进代码的缩进。@abelenky是的,但我认为OP想要累加值,而不是不求和地将每个元素赋给数组。@abelenky仍然是有效的C语法。感谢您指出out=)@userXxXxXx不客气,告诉我它是否适合您.@abelenky是的,但我认为OP想要累加值,而不是不求和地将每个元素赋给数组。@abelenky仍然是有效的C语法。谢谢你指出out=)@userXxXxXx不客气,告诉我它是否适合你。