Arrays If语句不';似乎根本不存在
我正在尝试编写一个程序,从用户那里获取数组输入,并将奇数元素分配给第一个索引,直到不再有奇数元素,偶数元素分配给数组的末尾,直到它们完成为止,例如 假设这是一个大小为10的数组,用户为第一个元素输入1,为第二个元素输入2,为第三个元素输入3,因此最终数组的索引0和1的值为1和3,标记10的值为2,依此类推,这是我的代码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
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、 我会确保阅读文档