当前位置: 代码迷 >> C语言 >> 关于2 .10. 8.16.进制的转换方法.
  详细解决方案

关于2 .10. 8.16.进制的转换方法.

热度:378   发布时间:2006-07-29 22:09:42.0
关于2 .10. 8.16.进制的转换方法.
关于2 .10. 8.16.进制的转换方法. 有什么书或者电子读物能解决这些基础问题?请个位大侠客指点下迷津.谢谢!!
搜索更多相关的解决方案: 进制  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
void to_B (unsigned int num1);
int main ( void )
{
unsigned int a;
printf ("Input the number :");
while (1==scanf ("%u",&a))
{
to_B (a);
putchar ('B');
printf ("\nInput the number :");
}
return 0;
}
void to_B (unsigned int num1)
{
unsigned int x=0;
if (num1>0)
{
x=num1%2;
to_B(num1/2);
printf ("%u",x);
}
else
{ if (num1%2)
putchar('1');
else
putchar('0');
}
return ;
}
这是10进制转换2进制的递归转换。
其他的10进制转化八进制用%o十六进制用%x。
----------------解决方案--------------------------------------------------------

#include<stdio.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int top;
}sequence_stack;


void init_seqstack(sequence_stack *st)
{ st->top=0;
}

void printseqstack(sequence_stack *st,int m)
{ int i;
i=st->top-1;
while(i>=0)
{ if(m==16)/*十进制转换为十六进制*/
{ switch(st->a[i])
{ case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: printf("%d",st->a[i]);break;
}
}
else printf("%d",st->a[i]);
i--;
}
}

void jzhzhh(sequence_stack *st,int n,int m)/*堆栈存放各个数*/
{ int i=0;
while(n!=0)
{ st->a[i]=n%m;
n=n/m;
st->top++;
i++;
}
}

main()
{ int n,m;
sequence_stack p;
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
init_seqstack(&p);
jzhzhh(&p, n, m);
printseqstack(&p,m);
printf("\n");
getch();
}

/*以前写的,不知道能不能用了.10进制转(<10或16)进制数*/


----------------解决方案--------------------------------------------------------
  相关解决方案