c - 我正在使用 4 个 for 循环,2 个工作正常,其余 2 个显示问题 3,4 个循环显示无效答案

标签 c loops

我正在使用 4 个 for 循环,2 个工作正常,其余 2 个显示问题 3,4 个循环显示无效答案:

#include <stdio.h>

int main(void) {
  // your code goes here
  int n,arr[n],i,l=0,m=0,u=0,d=0;

  printf("enter the value of n");
  scanf("%d",&n);

  arr[0]=0;

  for(i=0;i<n;i++) {
    arr[i+1]=arr[i]+10;
  }

  printf("%d",arr[3]);

  for(i=1;i<=n;i=i+4) {
    l=arr[i]+l;
  }

  for(i=2;i<=n;i=i+4) {
    u=arr[i]+u;
  }

  for(i=3;i<=n;i=i+4) {
    m=arr[i]+m;
  }

  /* for(i=4;i<=n;i=i+4) { d=arr[i]+d; } */

  printf("\n%d\n",l);
  printf("%d\n",u);
  printf("%d\n",m);
  printf("%d\n",d);

  return 0;
}

否定的答案

最佳答案

此代码中存在错误

  • 您的 arr[n] decl 基于不确定 n 值。当您稍后在程序中读取 n 时,数组不会神奇地调整大小。 n 必须在 arr decl 之前已知。
  • 您的循环限制可能超出范围(对于第一个循环肯定)。
  • 不会检查用于填充 nscanf 调用是否成功的标准输入输入。永远不要假设你的 IO 有效,尤其 IO 中的“我”。

只是修复这些:

#include <stdio.h>

int main(void)
{
    int n, i, l = 0, m = 0, u = 0, d = 0;

    printf("enter the value of n");
    if (scanf("%d", &n) == 1 && n > 0)
    {
        int arr[n];
        arr[0] = 0;

        for (i = 0; i<(n - 1); i++) {
            arr[i + 1] = arr[i] + 10;
        }

        printf("%d", arr[3]);

        for (i = 1; i < n; i += 4) {
            l = arr[i] + l;
        }

        for (i = 2; i < n; i += 4) {
            u = arr[i] + u;
        }

        for (i = 3; i < n; i += 4) {
            m = arr[i] + m;
        }

        printf("\n%d\n", l);
        printf("%d\n", u);
        printf("%d\n", m);
        printf("%d\n", d);
    }

    return 0;
}

See it live on ideone.com

关于c - 我正在使用 4 个 for 循环,2 个工作正常,其余 2 个显示问题 3,4 个循环显示无效答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57383244/

相关文章:

c - For循环在一个循环后退出-MPI

c - 这个 yacc 文件有什么问题?

c - 加载exe文件并在dos中调用它们的函数

c - strstr 整个字符串匹配

c - C语言char数组初始化中的大括号

c - for 循环中的变量作用域

c - 猜数字游戏,每个 # 都低

javascript - 循环遍历 json 对象并提取数据 - js

javascript - 从对象数组中删除最后一个对象。

c++ - 融合三角循环进行并行化,计算子索引