C For循环在迭代器达到最大值之前结束

C For循环在迭代器达到最大值之前结束,c,for-loop,C,For Loop,例如,当我为s输入10时,main()中的循环运行6次,然后求和。我甚至打印了迭代器I来检查值,但它还没有达到10 #include <stdio.h> /// define sum function int sum( int n[], int s) { int i, sum_t = 0; for(i=0; i<s; i++) { sum_t = sum_t + n[i]; }

例如,当我为s输入10时,main()中的循环运行6次,然后求和。我甚至打印了迭代器I来检查值,但它还没有达到10

#include <stdio.h>
/// define sum function
int sum( int n[], int s)
    {
        int i, sum_t = 0;
        for(i=0; i<s; i++)
        {
            sum_t = sum_t + n[i];   
        }
        return sum_t;
    }
    /// main program
int main()
{
    int i, s, n[s];
    printf("Enter size of array\n");
    scanf("%d", &s);

    for(i=0; i<s; i++)
    {
        printf("Enter number %d\n", i+1);
        scanf("%d", &n[i]);
    }
    printf("%d", sum(n, s));
    return 0;
}
#包括
///定义和函数
整数和(整数n[],整数s)
{
int i,和t=0;

对于(i=0;i当您声明
n[s]
时,
s
的值是多少?哦,我现在明白了。在我使用scanf表示s之后,我必须声明n[s]。您应该将n声明为指针:int*n;在读取s之后,您应该分配n:n=malloc(s*sizeof(int));您确实应该使用
scanf()的结果
-如果不这样做,您就不知道转换是否成功。无需在正确的位置(扫描后)malloc.int n[s]即可完成转换