Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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 为什么代码退出ant don';不完整_C_Gcc - Fatal编程技术网

C 为什么代码退出ant don';不完整

C 为什么代码退出ant don';不完整,c,gcc,C,Gcc,我是C编程的初学者。我试着为数组编写一个代码,用户根据它的大小进行设置,然后输入一些变量求和 问题,在执行过程中,它在代码中间停止!! #include <stdio.h> #include <string.h> int main (void) { int size = 0; // handle the array input[] size. int input[size]; int total = 0; int n = 0; // count the element

我是C编程的初学者。我试着为数组编写一个代码,用户根据它的大小进行设置,然后输入一些变量求和

<>问题,在执行过程中,它在代码中间停止!!
#include <stdio.h>
#include <string.h>

int main (void)
{
int size = 0; // handle the array input[] size.
int input[size];
int total = 0;
int n = 0; // count the element want to sum.


printf("how many variable you want to sum: ");
scanf("%i", &size);

int i;
for (i = 0; i < n; i++)
{
    printf("enter integer %d",  i+1);
    scanf("%d", &input[i]);
    
    
}

int j;
for (j = 0; j < n; j++)
{
    total += input[i];
}

printf("Result is: %d", total);
return 0;
}
#包括
#包括
内部主(空)
{
int size=0;//处理数组输入[]大小。
int输入[大小];
int-total=0;
int n=0;//计算要求和的元素。
printf(“要求和的变量数:”);
scanf(“%i”、&size);
int i;
对于(i=0;i
我在终端中遇到的错误:

要求和的变量数:5

结果是:0


(程序退出,代码:12)

按return继续

我出了什么问题???

地方

int input[size];  
阅读
size
(这就是可变长度数组的声明方式)。
也可将
n
设置为不
0
。我想应该是这样

n = size;

您的循环由
n
控制。您在程序开始时将
n
设置为
0
,但从未更改过

int n = 0; // count the element want to sum.

for (i = 0; i < n; i++) // <== n is 0

for (j = 0; j < n; j++) // <== n is 0
int n=0;//计算要求和的元素。
对于(i=0;i无法在运行时获取数组的大小。如果要这样做,可以使用malloc()

下面的代码在没有malloc()的情况下可能有效

#include <stdio.h>
#include <string.h>

int main (void)
{
    int input;
    int total = 0;
    int n = 0; // count the element want to sum.
    int i;

    printf("how many variable you want to sum: ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++)
    {
        printf("enter integer %d", i);
        scanf("%i", &input);
        total += input;
    }

    printf("Result is: %d", total);
    return 0;
}
#包括
#包括
内部主(空)
{
int输入;
int-total=0;
int n=0;//计算要求和的元素。
int i;
printf(“要求和的变量数:”);
scanf(“%d”和“&n”);

对于(i=1;i移动
int输入[size]
scanf
之后。也在此处初始化
n=size
n
始终为零!也许您的意思是size not
n
可变长度数组是C99功能。您是否确保在C99模式下编译?另外,请重新插入代码并删除所有不需要的空格和行。您没有使用
size
anywh在从用户那里得到它的值之后!我做了。在从终端得到大小之后,我输入了int input[size]。但是我遇到了同样的问题。非常感谢。你让我开心:)我很高兴它帮助了你:)我取消了初始化n(int n;)。我得到了相同的错误。这更糟糕:现在你调用未定义的行为,因为你使用的是未初始化的变量!感谢我发现了错误,就是在得到n之后生成数组。我混淆了大小的两个变量,并同时使用这两个。是的,但是代码中的目标要使用array.and c进行操作控制其大小。int*input=malloc(size*sizeof(int));for(i=0;i#include <stdio.h> #include <string.h> int main (void) { int input; int total = 0; int n = 0; // count the element want to sum. int i; printf("how many variable you want to sum: "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("enter integer %d", i); scanf("%i", &input); total += input; } printf("Result is: %d", total); return 0; }