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转换成相应的二进制、八进制和十六进制数,并分三行输出。 展开
编写一个程序,从标准输入读入一个十进制正整数,将其转换成相应的二进制、八进制和十六进制数,并以字符串形式分三行输出到标准输出。
【输入形式】
从标准输入读入一个十进制正整数。
【输出形式】
向标准输出打印三行:第一行是该正整数的二进制字符串形式;第二行是该正整数的八进制字符串形式;第三行是该正整数的十六进制字符串形式。
注意:
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转换成相应的二进制、八进制和十六进制数,并分三行输出。 展开
2个回答
展开全部
前者的程序运行结果不符合要求,故洒家新编了一个完全符合要求的.
该程序用位运算的方法比较容易解决.我的程序如下:
#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]);
}
问题得解.
该程序用位运算的方法比较容易解决.我的程序如下:
#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]);
}
问题得解.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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]);
}
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]);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询