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

这是我将十进制转化成二进制的的代码,最后可以输出0和1,但是与实际的二进制是反的,所以我想要将这个数组里面的元素对调输出,求大家帮我补上对调的代码并能够在我的代码里面运行... 这是我将十进制转化成二进制的的代码,最后可以输出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,求大家帮我弄下啊,谢谢了
展开
 我来答
terranlong
推荐于2017-12-16 · TA获得超过7293个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3941万
展开全部
#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;
}
小兆86
2013-06-26 · TA获得超过802个赞
知道小有建树答主
回答量:990
采纳率:25%
帮助的人:858万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式