简易的10进制整数进制转换程序,要求支持2进制 8进制 支持16进制 要简单一点的 C语言初学者求助!

C程序 ,别来其他的 谢谢
输入:10 2 表示 输出2进制
输入:10 8 表示输出8进制
输入:10 16 表示输出16 进制
10代表10进制的任意数

仅仅是输出而已,不是进制转换。

C语言,输出八、16进制形式,都有格式符。

输出2进制,需要按照位,来输出。

下列程序, 即可达到不同进制的输出要求。

#include <stdio.h>

void main(void)

{

    unsigned char xxx = 0, i;

    printf("输入一个十进制数字(0~15): ");

    scanf("%d", &xxx);

    printf("\n十进制形式:  %d. ", xxx);

    printf("\n二进制形式:  ");

    for (i = 0; i < 4; i++)

      if (xxx & (1 << (3 - i))) printf("1");

      else  printf("0");

    printf(".");

    printf("\n八进制形式:  %02o. ", xxx);

    printf("\n16进制形式:  %02X. ", xxx);

 //   getch();

}

在VC中运行的画面如下:

追问

怪我没把问题描清楚。。。
其实还是转换,就是输入:10 2 表示输入10进制和2进制转换
输入:10 8 表示输入10进制和8进制转换
输入:10 16表示输入10进制和8进制转换
而不是像你这样运行的结果。
例如我输入 12 2 结果输出 1100就完了,不是把8进制和16进制都输出来。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-12
哈哈,刚刚帮别人改了一个关于进制的函数
#include<stdio.h>
int f(int x,int y);
void main()
{
int a[10],a1,b1,b2,c,b[10],k=0,i,sum=0;
printf("请输入要输入的数和该数的进制和你想要转化的进制");
scanf("%d %d %d",&a1,&b1,&b2);
for(i=0;(c=a1/f(10,i))!=0;i++)
a[i]=c%10;
for(i=0;(c=a1/f(10,i))!=0;i++)
sum+=a[i]*f(10,i);
for(i=0;(c=sum/f(b2,i))!=0;i++)
b[i]=c%b2;
for(i=0;(c=sum/f(b2,i))!=0;i++)
k+=b[i]*f(10,i);
printf("%d\n",k);
}
int f(int x,int y)
{
int j,sum;
sum=1;
for(j=0;j<y;j++)
sum=sum*x;
return(sum);
}追问

跑不起来

第2个回答  推荐于2016-03-06
#include <stdio.h>

void main(void)
{ int m,n; //m为输入的十进制数,n为转化的进制;
int b[100];
for(int i=0;i<100;i++) b[i]=0;
printf("输入一个十进制数字: ");
scanf("%d", &m);
printf("\n输入转化后的进制为:");
scanf("%d",&n);
int a=m;
i=0;
do
{
b[i++]=a%n;
a=a/n;

} while (a);

printf("\n十进制数%d转化为%d数的结果为:",m,n);
for(i=i-1;i>=0;i--)
printf("%d",b[i]);

}本回答被提问者采纳
第3个回答  2011-04-10
void to_base_n(unsigned long n, unsigned int base) //将数字n 以base进制形式打印
{
int r;

r = n % base;
if (n >= base)
to_base_n(n / base, base);
putchar('0' + r);

}
第4个回答  2011-04-10
你好,你是要输入一个10进制的,然后输出其他进制的吗?
C的话那只需要在输出的时候就好了!
相似回答