C语言 整数转换

【问题描述】编写一个程序,从标准输入读入一个十进制正整数,将其转换成相应的二进制、八进制和十六进制数,并以字符串形式分三行输出到标准输出。【输入形式】从标准输入读入一个十... 【问题描述】
编写一个程序,从标准输入读入一个十进制正整数,将其转换成相应的二进制、八进制和十六进制数,并以字符串形式分三行输出到标准输出。

【输入形式】
从标准输入读入一个十进制正整数。

【输出形式】
向标准输出打印三行:第一行是该正整数的二进制字符串形式;第二行是该正整数的八进制字符串形式;第三行是该正整数的十六进制字符串形式。
注意:
1. 输出的二进制、八进制和十六进制数的每一位之间用空格符分隔,但是首位之前不要加空格符,末位后有空格符;
2. 在十六进制数中使用大写字母A-F。

【输入样例】
62147
【输出样例】
1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 1
1 7 1 3 0 3
F 2 C 3
【样例说明】
将62147转换成相应的二进制、八进制和十六进制数,并分三行输出。
展开
 我来答
liuweilhy
2006-12-09 · TA获得超过338个赞
知道小有建树答主
回答量:207
采纳率:100%
帮助的人:238万
展开全部
前者的程序运行结果不符合要求,故洒家新编了一个完全符合要求的.
该程序用位运算的方法比较容易解决.我的程序如下:
#include<stdio.h>
void main()
{
long i;
char a[65];
short m,n;

scanf("%ld",&i);

for(m=64,n=0;n<32;n++)
{
a[--m]=' ';
a[--m]=(char)(i>>n&1)+'0';
}
a[64]='\0';
while(a[m]=='0'&&m<64) m+=2;
printf("%s\n",&a[m]);

for(m=64,n=0;n<34;n+=3)
{
a[--m]=' ';
a[--m]=(char)(i>>n&7)+'0';
}
a[64]='\0';
while(a[m]=='0'&&m<64) m+=2;
printf("%s\n",&a[m]);

for(m=64,n=0;n<32;n+=4)
{
a[--m]=' ';
a[--m]=(char)(i>>n&15)+'0';
}
a[64]='\0';
while(a[m]=='0'&&m<64) m+=2;
for(n=m;a[n+1]!='\0';n+=2)
if(a[n]>'9') a[n]+=8;
printf("%s\n",&a[m]);
}
问题得解.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楠公小白L
2006-12-08 · TA获得超过525个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:415万
展开全部
#include <stdio.h>

int main(){
int number;
int i;
char buffer[100];

scanf("%d", &number);
sprintf(buffer, "%b", number);
for (i = 0; i < strlen(buffer); ++i) printf("%c ", buffer[i]);
sprintf(buffer, "%o", number);
for (i = 0; i < strlen(buffer); ++i) printf("%c ", buffer[i]);
sprintf(buffer, "%X", number);
for (i = 0; i < strlen(buffer); ++i) printf("%c ", buffer[i]);

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式