首页 > 用户发贴区 > 编程问题提问区 > 高手,帮我看下好吗??
2007
09-23

高手,帮我看下好吗??

我写了个程序想把二进制的数变八进制,但不知道那里错了,可以运行但没法输出。。。。。。。。


/* Note:Your choice is C IDE */
#include “stdio.h”


void main()  //将一个二进制数变成八进制//
{
int a,m,j;
int *s,*top,*base;



void push(int *p,int x);  //进栈函数//
void print(int *p,int x); //输出函数//


scanf(“%d”,&a); //输入一个二进制给a//


s=(int*)calloc(20,sizeof(int)); //给s分配空间//
base=top=s;  //统一指向基地址//
while(a>8) 
  {j=a%8;
  push(top,j);
   a=a/8;
  }
  m=top-base;
print(top,m);
getchar(); 
}


void push(int *p,int x)
{*p=x;p=p+1;}


 


 void print(int *p,int x)
{int i;
 
 for(i=0;i<x;i++)
  {p=p-1;printf(“%d”,*p);}
}  


 


高手,帮我看下好吗??》有 2 条评论

  1. 5iluo 说:

    你这样应该是把十进制的数,转化为八进制吧,如果是二进制你应该把它转化为十进制,
    再由十进制转化为八进制。
    要不你也可以这样,从右数起每三位二进制数当一位八进制数计算,比如101 110 001,
    101 = 5, 110 = 6, 001 =1 八进制数就是561,这个你自己想一下,如果不正确,
    把代码发上来,再帮你改的,

    如果是十进制,如果你想用栈来处理,最好先定义一个结构体struct ,用数组或指针也
    可以,,我写了一个简单的,你可以参考一下,

    #include “stdio.h”
    #define N 100

    void main()  //将一个十进制数变成八进制//
    {
       int a;
       int c[N];
       int *b, i=0, j;
       b = c;
       scanf(“%d”, &a);

       while (a != 0)
       {
     
        *(b+i) = a%8;
        a = a/8;
        i++;
       }

       for (j=i-1; j>=0; j–)
       {
        printf(“%d”, *(b+j));
       }
       printf(“\n”);
     

  2. yipiantiannick 说:

    哦,是我打错了,谢谢你的指导啊!!!!

    可我看了半天还看不出来我的那里错了。。。。。。。。。

    我试过不用函数来进栈,结果可以正常运行并输出,可医用函数就只能运行却什么也没输出。。。。。。。。。

    高手再帮帮我好吗。。。。。。。。。。

留下一个回复