这是一个数制转换程序,还差把输出字符串逆序,请问如果是你怎样补充呢?

这是一个数制转换程序,还差把输出字符串逆序,请问如果是你怎样补充呢?

我现在写的dec_other函数只是实现了答案的逆序,我想在这个函数中的rev_num直接倒过来输出,如何实现?

#include<iostream>

#include<math.h>

#include<assert.h>

using namespace std;


int ch_num(char ch)//字符转换成数字

{

int num;

if(ch>='0'&&ch<='9')

num=ch-'0';

if(ch>='A'&&ch<='F')

num=ch-'A'+10;

if(ch>='a'&&ch<='f')

num=ch-'a'+10;

return num;

}


char num_ch(int num)//数字转换成字符

{

char ch;

if (num>=0&&num<=9)

ch=(char)(num+'0');

if(num>=10&&num<=15)

ch=(char)(num+'A'-10);

return ch;

}


int other_dec(char *num,int font)//其他数制转化成十进制

{

assert(num!=NULL);

int sum=0,len=0,t=0;

char *p=num;

for(;*num!='\0';num++)

len++;

int i=len-1;

for(;i>=0;i--,p++)

{ t=ch_num(*p);

sum=sum+t*pow(font,i);

}

return sum;

}


char *dec_other(int num,int back,char *rev_num)//十进制转化其他数制,这时的rev_num是答案的逆序,我想在这个函数中直接倒过来输出,如何实现?

{

assert(rev_num!=NULL);

char *p=rev_num;

int tp=0,tp1=num;

for(int i=0;tp1>0;rev_num++,i++)

{

tp=tp1%back;//余数

tp1=tp1/back;//商

*rev_num=num_ch(tp);

}

*rev_num='\0';

return p;

}


int len_ch(char *rev_num)//计算字符串的长度

{

int len=0;

for(;*rev_num!='\0';len++,rev_num++);

return len;

}


int main()

{

bool flag=1;//=1表示继续,=0表示不继续

char num[20],rev_num[20];

int font,back;

do

{

cout<<"转换前的数是:";

cin>>num;

cout<<"转换前的数制是:";

cin>>font;

cout<<"转换后的数制是:";

cin>>back;

cout<<"转换后的数是:";

if(font!=back)

{

if(back==10)

cout<<other_dec(num,font)<<endl;

else

{

int temp=other_dec(num,font);

char *p=dec_other(temp,back,rev_num);

cout<<rev_num<<endl;

}

}else

cout<<num<<endl;


cout<<"继续请输入1,否则输入0:";

cin>>flag;


}while(flag);

return(0);

}

#include<iostream>

#include<math.h>

#include<assert.h>

using namespace std;


int ch_num(char ch)//字符转换成数字

{

int num;

if(ch>='0'&&ch<='9')

num=ch-'0';

if(ch>='A'&&ch<='F')

num=ch-'A'+10;

if(ch>='a'&&ch<='f')

num=ch-'a'+10;

return num;

}


char num_ch(int num)//数字转换成字符

{

char ch;

if (num>=0&&num<=9)

ch=(char)(num+'0');

if(num>=10&&num<=15)

ch=(char)(num+'A'-10);

return ch;

}


int other_dec(char *num,int font)//其他数制转化成十进制

{

assert(num!=NULL);

int sum=0,len=0,t=0;

char *p=num;

for(;*num!='\0';num++)

len++;

int i=len-1;

for(;i>=0;i--,p++)

{ t=ch_num(*p);

sum=sum+t*pow(font,i);

}

return sum;

}


char *dec_other(int num,int back,char *rev_num)//十进制转化其他数制,这时的rev_num是答案的逆序,我想在这个函数中直接倒过来输出,如何实现?

{

assert(rev_num!=NULL);

char *p=rev_num;

int tp=0,tp1=num;

for(int i=0;tp1>0;rev_num++,i++)

{

tp=tp1%back;//余数

tp1=tp1/back;//商

*rev_num=num_ch(tp);

}

*rev_num='\0';

return p;

}


int len_ch(char *rev_num)//计算字符串的长度

{

int len=0;

for(;*rev_num!='\0';len++,rev_num++);

return len;

}


int main()

{

bool flag=1;//=1表示继续,=0表示不继续

char num[20],rev_num[20];

int font,back;

do

{

cout<<"转换前的数是:";

cin>>num;

cout<<"转换前的数制是:";

cin>>font;

cout<<"转换后的数制是:";

cin>>back;

cout<<"转换后的数是:";

if(font!=back)

{

if(back==10)

cout<<other_dec(num,font)<<endl;

else

{

int temp=other_dec(num,font);

char *p=dec_other(temp,back,rev_num);

cout<<rev_num<<endl;

}

}else

cout<<num<<endl;


cout<<"继续请输入1,否则输入0:";

cin>>flag;


}while(flag);

return(0);

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
Tender10 2018-12-03 14:47:51

首先在开头导入头文件

#include<algorithm>

然后在int main()主函数中判断是哪一进制,输出转换后的数字的时候,通过如下代码实现:

int otherNum = other_dec(num,font);
string otherStr = to_string (otherNum);
reverse(otherStr.begin(), otherStr.end());
cout<< otherStr <<endl;

其中reverse()是字符串逆序的函数,先把结果数字通过to_string函数转换成字符串,然后在通过reverse函数逆序字符串,最终输出结果。else里的实现思路也可以根据上述代码进行改编。如果还有什么不明白的地方,可以在问答里进行提问,助教都会帮助解决。祝学习愉快~

好帮手慕查理 2018-11-29 15:22:55

您好,同学的代码中是转换数制,请问dec_other函数实现了答案的逆序是指什么?另想在这个函数中的rev_num直接倒过来输出又是指什么呢?请具体描述一下实现的效果,以便帮助您解决问题。祝学习愉快!

  • 提问者 慕盖茨6136298 #1
    就是你输入fe,转之前的数制16,转之后的数制为10,rev_num输出就是71,现在就是我想输出是17,怎样实现呢?
    2018-12-03 10:45:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       594    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师