首页 > 解决方案 > 为数组动态分配空间并尝试约束值

问题描述

我的代码动态分配内存。我正在尝试存储对所存储的值保持约束的元素,但是当我保持约束时它不起作用。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, i, sum = 0;
    int *arr;
    scanf("%d", &n);
    if (n >= 1000 || n <= 1)
    {
        return 0;
    }

    arr = (int *)malloc(n * (sizeof(int)));
    for (i = 0; i < n; i++)
    {
        if (arr[i] >= 1000)
        {
            return 0;
        }
        scanf("%d", &arr[i]);
        sum += arr[i];
    }

    printf("%d", sum);

    return 0;
}

我认为错误就在这里

for (i = 0; i < n; i++)
{
    if (arr[i] >= 1000)
    {
        return 0;
    }
    scanf("%d", &arr[i]);
    sum += arr[i];
}

标签: arraysc

解决方案


if (arr[i] >= 1000)
{
    return 0;
}
scanf("%d", &arr[i]);

if语句检查arr[i]before的值scanf实际上是读入的值。scanf需要在if语句之前运行。


推荐阅读