我写了个程序想把二进制的数变八进制,但不知道那里错了,可以运行但没法输出。。。。。。。。
/* 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);}
}
>> 本文固定链接: http://www.vcgood.com/archives/1837
>> 转载请注明: yipiantiannick 2007年09月23日 于 C语言帝国 发表
你这样应该是把十进制的数,转化为八进制吧,如果是二进制你应该把它转化为十进制,
再由十进制转化为八进制。
要不你也可以这样,从右数起每三位二进制数当一位八进制数计算,比如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”);
}
哦,是我打错了,谢谢你的指导啊!!!!
可我看了半天还看不出来我的那里错了。。。。。。。。。
我试过不用函数来进栈,结果可以正常运行并输出,可医用函数就只能运行却什么也没输出。。。。。。。。。
高手再帮帮我好吗。。。。。。。。。。