为什么我的数组输出总是0?

为什么我的这个数字输出总是0呢??
而且我调试的时候,赋给数组的值也不是我想要的?这是为什么呢?

img

建议你在问题的时候把题目也发出来。

【以下回答由 GPT 生成】

问题的原因是在循环中赋值给数组元素的逻辑有问题。具体来说,赋值语句a[i] = t + ((t + (t - 1)) / 2);应该放在scanf语句之前,并且在赋值时应该使用循环索引i而不是循环变量t。另外,在循环结束后,i的值为0,所以在输出数组元素时,将t改为i

以下是修复后的代码:

#include <stdio.h>

int main(void) {
    int a[101];
    int t;

    printf("请输入数组的长度:");
    scanf("%d", &t);

    int i = 1;
    while(t--) {
        printf("请输入第%d个数字:", i);
        scanf("%d", &a[i]);
        i++;
    }

    for(int j = 1; j < i; j++) {
        if(a[j] < -1001) {
            printf("%d\n", a[j]);
        } else {
            printf("%d,你很烦人!\n", a[j]);
        }
    }

    return 0;
}

修复后的代码会按照用户输入的长度来读取数组元素,并将正确的值赋给数组,然后输出数组的元素值。

请注意,数组的下标应从0开始计数,而不是从1开始计数。修复后的代码依然从1开始计数,因为原问题中的代码也是从1开始计数的。如果想要从0开始计数,只需要将循环和赋值语句中的索引i修改为i-1即可。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^