c++,如何将一维数组(里面元素个数不确定)所有元素对调,即第一个与最后一个对调,第二个与倒数第二个

这是我将十进制转化成二进制的的代码,最后可以输出0和1,但是与实际的二进制是反的,所以我想要将这个数组里面的元素对调输出,求大家帮我补上对调的代码并能够在我的代码里面运行!
附:
#include<iostream.h>
void main()
{
int x;int y;char a[100];//因为数组括号内不能区变量,我暂时弄个100个的,后面会有个删除多余的代码
cin>>x;int i=0;
do{
if(x%2==0)
a[i]=48;
else
a[i]=49;

i++;
y=x/2;
x=y;}
while (y!=0);
a[i]='\0';//这样就把多余的删除了

cout<<a<<endl;
}//如我输入的十进制是8,则输出的二进制是0001,而我想要1000,求大家帮我弄下啊,谢谢了

#include<iostream>
using namespace std;
void main()
{
int x;
int y;
char a[100];//因为数组括号内不能区变量,我暂时弄个100个的,后面会有个删除多余的代码
cin>>x;
int i=0;
int j;
char temp;
do
{
if(x%2==0)
a[i]=48;
else
a[i]=49;
i++;
y=x/2;
x=y;
}while (y!=0);
a[i]='\0';//这样就把多余的删除了
for (j = 0; j < i / 2; j++)
{
temp = a[j];
a[j] = a[i - j - 1];
a[i - j - 1] = temp;
}

cout<<a<<endl;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-26
if(x%2==0)
a[i]=48;
else
a[i]=49;
把这里的48和49对调一下位置就可以了追问

那样会把0和1全部改成反的。。。如果是8,那就输出1110了。。。。

追答

不好意思,理解错了
可以计算0和1的个数的,因为有结束字符,就可以用strlen计算0和1的字符总长度了。然后头尾交换,一直交换到中间位置就可以了。
大致是这样的:
n = strlen(a);
for(int i = 0;i < n/2;i++)
{
temp = a[i];
a[i] = n-i;
a[n-i] = temp;
}