一个十进制转其他进制的程序

#include <stdio.h>
int a[20]={0},i=0,n;
#define push(n) (a[i++]=n);
#define pop()  a[i--];
main()
{
   int a,b,m;
   scanf("%d %d",&a,&b);
   m=a;
   while(m){
         n=m%b;
         push(n);       
         m=m/b;
        
   }
   i++;
   while(i>0)printf("%d",pop());
}

 --------------------------------------------------------------------------------------------------------------------

原先的写的比较乱,这里重新整理一便。

#include <stdio.h>
#include <math.h>

int main()
{
          int number = 0; /*表示要进行进制转换的数字,初始化为0 */
          int index = 0; /*表示转换的进制书,初始化为0 */
 
          /*这里注意要考虑越界的问题,为方便这里只分配20空间,其实在实际中是不够的*/
          /*可以考虑用malloc()来实现动态分配, 我这里就先不考虑了*/
          int space[20] = {0}; /*定义一个存放20个数的空间,来模拟堆栈的效果*/
          int i = 0;
          /*输入数字number和要转换的进制数*/
          scanf("%d %d", &number, &index);
 
          /*进行进制转换,把结果放入数组space中*/
          while(number)
         {
                     space[i] = (number%index);
                     number = number/index;
                     i++;
         }

         /*print result*/
         while(i >0)
         {
                       if(space[i] >9)
                       {
                                       /*转换十进制以上的数需要考虑表示为字母*/
                                       printf("%s", space[i] + 55);
                       }
                       else
                       {
                                        printf("%d", space[i]);
                      }
                       i--;
          }
          return 0;
}

 

展开阅读全文

没有更多推荐了,返回首页