R257983 2025-03-02 13:47 采纳率: 25%
浏览 11

关于#c语言#的问题:是运行错误 long long len[105]

img


#include<stdio.h>

int main()
{
    int n,m,a,b,c;
    scanf("%d",&n);
    long long len[n];
    for(int i = 0;i < n;i++)
        scanf("%lld",&len[i]);
    scanf("%d",&m);
    while(m--)
    {
        scanf("%d%d%d",&a,&b,&c);
        if(a<= b)
        {
            for(int i = a-1;i< b;i++)
                len[i]+=c;
        }
        else
        {
            for(int i = a-1;i< n;i++)
                len[i]+=c;
            for(int i = 0;i< b;i++)
                len[i]+=c;
        }
    }
    for(int i = 0;i <n-1;i++)
        printf("%lld ",len[i]);
    printf("%lld",len[n-1]);
    return 0;
}

为何AC不了, long long len[n];是运行错误 long long len[105];是答案出错

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-02 13:47
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到了一个运行错误,错误发生在使用 long long len[n]; 语句时。这个语句是C语言中的变长数组声明语句,但是C语言中没有真正的变长数组,n 的值在编译时是不知道的。

    解决方法是使用指针数组,或者使用动态内存分配函数,例如 malloccalloc。下面是一个使用指针数组的示例:

    #include <stdio.h>
    
    int main() {
        int n;
        scanf("%d", &n);
        long long *len = (long long *)malloc(n * sizeof(long long));
        // 使用 len 数组
        free(len);
        return 0;
    }
    

    注意:在使用 mallocfree 函数时,需要确保正确地释放内存,以避免内存泄露。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月2日