先生,我是一名新程序员。所以我面临着一些我真正需要解决的新问题。就像我写了一段代码
#include<stdio.h>
main(){
int ara[] ={10,20,30,40,50,60,70,80,90,100},i,temp,j;
for(i=0,j=9;i<10;i++,j--){
ara[i]=ara[j];
printf("%d\n",ara[i]); }
}
我以为结果会是 100,90,80,70,60,50,40,30,20,10 但结果不是这样的......有没有人请告诉我为什么结果显示 100,90,80, 70,60,60,70,80,90,100
最佳答案
在打印值 60 后,即当您尝试进一步访问元素时数组的一半,实际上您将访问那些位于数组中间位置之后的元素。因为您使用 ara[i] = ara[j].. 分配它们,所以您最终会在数组的一半之后重复。
作为:-
ara[0] = ara[9]
ara[1] = ara[8]
ara[2] = ara[7]
ara[3] = ara[6]
ara[4] = ara[5]
ara[5] = ara[4]
最简单的解决方案可能是创建一个临时数组:-
#include<stdio.h>
main(){
int ara[] ={10,20,30,40,50,60,70,80,90,100},i,temp[10],j;
for(i = 9, j = 0; i >= 0; i--, j++){
temp[j]=ara[i];
}
for(i = 0; i < 10; i++){
printf("%d\n", temp[i]);
}
}
关于c - 使用数组时出现意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45946544/