我想用另一半反转数组输入的一半。
#include <stdio.h>
#include <math.h>
void main() {
double size = 5;
int array[5] = {1, 2, 3, 4, 5};
int half_size = ceil(size / 2);
for(int i = 0; i < half_size; i++){
int a;
int rev = size - (i + 1);
array[i] = a;
array[i] = array[rev];
array[rev] = a;`enter code here`
}
printf("%d", array[5]);
}
答案 0 :(得分:0)
我同意@Eugene Sh。和@FredK的建议。第array[5]
行中的第printf("%d", array[5]);
行超出范围,因为array
仅具有从0到4的索引。由于我假设您要打印出数组中的最后一个元素,因此您应该将其更改为printf("%d", array[4]);
。另一件事是您的赋值表达式array[i] = a;
是错误的。我假设该表达式是从索引i
中的元素到索引rev
中的元素的交换过程的一部分。如果是这种情况,则应将其更改为a = array[i];
。我根据我的建议更新了代码,并输出了正确的结果。我添加了for循环来验证array
的值是否出于测试目的而反转。完成测试后,可以将其删除。
#include <math.h>
int main() {
double size = 5;
int array[5] = {1, 2, 3, 4, 5};
int half_size = ceil(size / 2);
for(int i = 0; i < half_size; i++){
int a;
int rev = size - (i + 1);
a = array[i];
array[i] = array[rev];
array[rev] = a;
}
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
printf("%d", array[4]);
}