C++编程:将一个数组中的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。

#include <iostream>
using namespace std;
int main()
{
int array[5],i,j=4,t;
cout<<"enter the origil array:"<<endl;
for(i=0;i<5;i++)
{
cin>>array[i];
array[j]=array[i];
j--;
}
cout<<"the opposite array:"<<endl;
for(i=0;i<5;i++)
cout<<array[i]<<" ";
return 0;
}
以上是我编的程序,但是当我输入8 6 5 4 1运行时得到的结果却是1 4 5 4 1,求哪位大神给小弟解答一下,看看我这个程序究竟是哪里出问题了?!!!不胜感激啊!!!

这样写扩展性会更好,数组中的个数可以是任意的,只需修改arrSize 即可

#include <iostream>
using namespace std;
int main()
{
unsigned int i = 0, j = 0, t = 0;
const unsigned int arrSize = 5;
int array[arrSize];
cout<<"enter the origil array:"<<endl;
for(i = 0; i < arrSize; i++)
{
cin >> array[i];
}

for (i = 0, j = 0; j < arrSize /2; ++i, ++j)
{
t = array[i];
array[i] = array[arrSize - 1 - j];
array[arrSize - 1 - j] = t;
}
cout<<"the opposite array:"<<endl;
for(i = 0; i < arrSize; i++)
cout<<array[i]<<" ";
system("pause");
return 0;
}追问

!!!谢谢。。。太棒了!这个很牛啊,可以随意修改数组长度啊。。。但是我还是有点疑问: 1.for (i = 0, j = 0; j < arrSize /2; ++i, ++j)这一句为什么不是for(i=0,j=0;j<arrSize;i++,j++)这样呢?当然事实证明我这样写好像是不对的,但是有点不理解?2.程序中 system("pause");又是什么意思呢?有什么作用?
嘿嘿。。。不要怪我水啊!!!麻烦帮我解答一下,不胜感激
希望能留下您的QQ号加一下您,方便向您请教。。。谢谢

追答

对于一个数组 a有五个元素, a[0] = 1, a[1] = 2, a[2] = 3, a[3] = 4, a[4] = 5,要想反序,即进行5/2次交换即可, a[0]a[4], a[1]a[3]。
system("pause") 只是防止运行时一闪而过,而看不到输出结果,加上之后你会发现,输出按任意键继续,当你按任意键后,才退出。如果你有问题,可以在百度空间里留言,或通过百度其他方式探讨,QQ号就不方便给出了,希望理解!

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-22
#include <iostream>
using namespace std;
int main()
{
int a[5],b[5,]i,j=4,t;
cout<<"enter the origil array:"<<endl;
for(i=0;i<5;i++)
{
cin>>a[i];
b[j]=a[i];
j--;
}
cout<<"the opposite array:"<<endl;
for(i=0;i<5;i++)
cout<<b[i]<<" ";
return 0;
}
第2个回答  2012-04-22
#include <iostream>
using namespace std;
int main()
{
int array[5],i;
cout<<"enter the origil array:"<<endl;
for(i=0;i<5;i++)
{
cin>>array[4-i];
}
cout<<"the opposite array:"<<endl;
for(i=0;i<5;i++)
cout<<array[i]<<" ";
return 0;
}追问

非常感谢!!!你这个方法很灵活啊!!!给我开辟了一个新思路。。。太感谢了。。。以后多多支持。。。442546339是你的QQ号吗?希望加一下您方便以后有问题直接向您请教。。。

相似回答