用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。(是C++,不是C)

编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。程序运行结果如下(输出依次为二进制、八进制和十六进制数):输入:16输出:... 编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。 程序运行结果如下(输出依次为二进制、八进制和十六进制数):输入: 16
输出:
10000
20
10
语言(C++)
是C++的语言啊!比如:
#include<iostream>
using namespace std;
int main()
{

}
本人才学c++,望得到各位帮助!
能对执行语句或者特殊函数进行解释吗?谢谢
展开
 我来答
xsyhzhb1991
推荐于2018-04-11 · TA获得超过1.4万个赞
知道大有可为答主
回答量:5125
采纳率:75%
帮助的人:8690万
展开全部
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
cout<<"请输入待转换的数:";
cin>>a;
//二进制分别计算每一位
if(a==0)cout<<a;
b=a;c=0;d=1;
while(b!=0)
{
c+=(b%2)*d;//依次把b除以2的余数写在c的对应位置上
b=b/2;
d*=10;
}
cout<<c<<endl;
//八进制和十六进制使用格式化输出即可,oct表示八进制,hex表示十六进制
cout<<oct<<a<<endl;
cout<<hex<<a<<endl;
}

如果有不懂请追问。
追问
"c+=(b%2)*d;//依次把b除以2的余数写在c的对应位置上"这句话是怎么做到将每位数字存进去的?因为里面的“c+=”?
追答
拿个例子来说明吧。比如用户输入5
那么一开始
b=5,c=0,d=1
b%2=1,那么应该把1写入c的个位,c+=1*d,c就变成了1,其中d就是控制加在哪一位的。
然后,得到了
b=2,c=1,d=10
b%2=0,那么应该把0写入c的十位,注意到这时d已经变成10了,所以还是可以用c+=0*d来计算
然后,就得到了
b=1,c=01(实际上还是1,只不过程序员自己内心清楚已经计算了十位了),d=100
b%2=1,应该写入百位,此时d=100,就应该是c+=1*d

这样讲应该清楚了吧?
税礼滕凰
2019-02-16 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.3万
采纳率:35%
帮助的人:787万
展开全部
#include
using
namespace
std;
int
main()
{
cout<<"该程序可以转换36进制之内的数,9之后的后续数为大写字母A-Z"<
>n;
cout<<"请输入您要转换成的进制:"<
>x;
chg10tox(n,x);
return
0;
}
void
chg10tox(int
n,int
x)
{
char
p[20];
int
t;
for(int
i=0;n;i++)
{
t=n%x;
n=(n-t)/x;
if(t>=0&&t<=9)
p[i]=t+48;
else
p[i]=t+65-10;
}
for(i=i-1;i>=0;i--)
cout<
评论
0
0
加载更多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伤我中国心
2013-03-23 · TA获得超过112个赞
知道答主
回答量:233
采纳率:0%
帮助的人:143万
展开全部
#include <iostream>
using namespace std;
int main()
{
cout<<"该程序可以转换36进制之内的数,9之后的后续数为大写字母A-Z"<<endl;
void chg10tox(int n,int x);
int n,x;
cout<<"请输入一个任意正整数:"<<endl;
cin>>n;
cout<<"请输入您要转换成的进制:"<<endl;
cin>>x;
chg10tox(n,x);
return 0;
}
void chg10tox(int n,int x)
{
char p[20];
int t;
for(int i=0;n;i++)
{
t=n%x;
n=(n-t)/x;
if(t>=0&&t<=9)
p[i]=t+48;
else
p[i]=t+65-10;
}
for(i=i-1;i>=0;i--)
cout<<p[i];
cout<<endl;
}
望采纳,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shlyao
2013-03-23 · TA获得超过475个赞
知道小有建树答主
回答量:401
采纳率:50%
帮助的人:198万
展开全部
有输出格式设置的,

#include <iostream.h>
#include <iomanip.h>

int main()
{
int num=123;
cout << hex << num << endl; //十六进制
cout << oct<< num << endl; //八进制
cout << dec<< num << endl; //十进制
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lotayou
2013-03-23 · TA获得超过382个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:88.4万
展开全部
有一个转换函数很好用:
char *itoa(int value, char *string, int radix);
int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
头文件: <stdlib.h> itoa操作使用

但注意:这个不是C++标准库函数,只能在Visual C++系列编译器环境下使用
想在GCC上做的话,可以设置输出格式,也可以自己编函数进行转换……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式