离婚男人的心理弱点:C++程序,递归法将N位整数转换成字符串,哪不对?

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 09:58:23
#include<iostream.h>
#include<string.h>
void change(int num,char *a)
{ static int k=0;
if(num==0)
*(a+k)='\0';
else
{
*(a+k)=num%10+'0';
k++;
num/=10;
change(num,a);
}
}
void main()
{
int num,i,j=0;
char a[50],temp;
cin>>num;
change(num,a);
i=strlen(a);
while(*(a+j)!=0)
{ temp=*(a+j);
*(a+j)=*(a+i-j-1);
*(a+i-j-1)=temp;
j++;
}
cout<<a<<endl;
}

你在main里面的转置算法有问题。转置只要对前半组数遍历,依次和对应的后半组中的数对换就行了,你对全部数都作了对换,等于做了两遍转置,相当于没做转置。

正确做法如下:
void main()
{
int num,i,j=0;
char a[50],temp;
cin>>num;
change(num,a);
i=strlen(a)-1;
while(j<i)
{
char temp=a[i];
a[i]=a[j];
a[j]=temp;
i--;
j++;
}
cout<<a<<endl;
}

我也给个程序:
#include<iostream>
using namespace std;
int main()
{
void change(int n);
int a;
cin>>a;
change(a);
return 0;
}

void change(int n)
{
int i;
char c;
if((i=n/10)!=0)
change(i);
c=n%10+'0';
cout<<" "<<c;
}