Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays If语句不';似乎根本不存在_Arrays_C_If Statement - Fatal编程技术网

Arrays If语句不';似乎根本不存在

Arrays If语句不';似乎根本不存在,arrays,c,if-statement,Arrays,C,If Statement,我正在尝试编写一个程序,从用户那里获取数组输入,并将奇数元素分配给第一个索引,直到不再有奇数元素,偶数元素分配给数组的末尾,直到它们完成为止,例如 假设这是一个大小为10的数组,用户为第一个元素输入1,为第二个元素输入2,为第三个元素输入3,因此最终数组的索引0和1的值为1和3,标记10的值为2,依此类推,这是我的代码 int main() { int array1[31]; int array2[31]; for(int i=0;i<31;i++) { if(sc

我正在尝试编写一个程序,从用户那里获取数组输入,并将奇数元素分配给第一个索引,直到不再有奇数元素,偶数元素分配给数组的末尾,直到它们完成为止,例如

假设这是一个大小为10的数组,用户为第一个元素输入1,为第二个元素输入2,为第三个元素输入3,因此最终数组的索引0和1的值为1和3,标记10的值为2,依此类推,这是我的代码

int main() {

  int array1[31];
  int array2[31];

  for(int i=0;i<31;i++) {
    if(scanf("%d",&array1[i])%2==0) {
      array2[31-i]=array1[i];
    }
    else {
      array2[i]=array1[i]
    }
  }

  for (int i=0;i<31;i++) {
    printf ("%d\t",array2[i]);
  }

  return 0;
}
intmain(){
国际阵列1[31];
国际阵列2[31];
对于(inti=0;i首先,要学习它。你应该

  • 根据预期匹配数检查
    scanf()
    返回值(在本例中为
    1
    • 如果扫描成功,请使用提供的参数检查扫描的值
    • 如果扫描失败,请清理输入缓冲区并再次请求输入
也就是说,在代码中,当您从
0
i
值开始循环时,您不能使用

array2[31-i]=array1[i];
对于
i
值0,它将如下

array2[31]=array1[i];
也就是说,你需要使用

array2[31-i-1]=array1[i];

因此,数组索引为[0,31].

Scanf返回读取的元素数,而不是我投票结束此问题的值,因为它表明OP根本没有阅读
Scanf
文档。我建议重新构造代码:首先输入值,然后再处理它们。这会让您对所需内容有一个更清晰的了解。此外,使用缩进,它会为您提供可读代码的好处。你应该缩进你的代码。未缩进的代码很难阅读和理解,因此很难维护和调试。@Jabberwocky因此很容易出错,因此更容易被丢弃。:)OP的
array2[31-i]
比这更糟糕:这完全是错误的。无论给定的输入是偶数还是奇数,它在
array2
中的正确索引都不是(仅)的函数到目前为止读取的项目数。@JohnBollinger非常正确,假设用户按顺序提供奇数和偶数,这是一个逻辑错误。@JohnBollinger是的,我刚刚意识到我应该从array2中删除I,而只是将31赋给一个变量,并在数组元素为偶数时减少该变量。@SouravGhosh感谢help、 我会确保阅读文档