匿名用户
1级
2007-06-27 回答
vc++6.0编译,十进制换成八进制是参考的别人的程序,编译通过,运行这个正确
#include
#include
int * InitStack() //初始化栈
{
int * top,* base;
base=(int *)malloc(sizeof(int) * 50);
if(!base)
{
cout<
exit(1);
}
top=base;
return top;
}
int * push(int * top,int n) //元素入栈
{
* top=n;
top++;
return top;
}
int pop(int * top) //取出栈顶元素
{
int e;
top--;
e=*top;
return e;
}
int conversion1(int Num) //十进制转八进制子函数
{
int * top, * base;
int e,N;
int n,i;
int resul[8]={0,0,0,0,0,0,0,0};
N = Num;
top=InitStack();
base=top;
while(N!=0)
{
top=push(top,N%8);
N=N/8;
}
//cout<
n=0;
while(top!=base)
{
e=pop(top);
top--;
resul[n]=e;
n++;
}//cout<
e=0;
N=1;
for(i=n;i>0;i--)
{
e=e+resul[i-1]*N;
N*=10;
}
//for (n=0;n<8;n++)
// printf("%d",resul[n]);
return e;
}
int conversion2(int ss)//输入的八进制数转十进制子函数
{
int s[7];
int sswitch=0;
int ssreturn=0;
int n=0;
int i=10;
sswitch = ss;
for (n=0;n<7;n++)
{
s[n]=sswitch%i;
sswitch=sswitch/10;
}
i=1;
for(n=0;n<7;n++)
{
ssreturn = ssreturn+s[n]*i;
i*=8;
}
//printf("%d\n",ssreturn);
return ssreturn;
}
void fadd()
{
int ss1;
int ss2;
int ss1sw;
int ss2sw;
int result=0;
int resultsw;
cout<
cin>>ss1;
cout<
cin>>ss2;
ss1sw = conversion2(ss1);
ss2sw = conversion2(ss2);
resultsw = ss1sw+ss2sw;
//printf("结果为:%d\n",resultsw);
result = conversion1(resultsw);
cout<
}
void fsub()
{
int ss1;
int ss2;
int ss1sw;
int ss2sw;
int result=0;
int resultsw;
cout<
cin>>ss1;
cout<
cin>>ss2;
ss1sw = conversion2(ss1);
ss2sw = conversion2(ss2);
resultsw = ss1sw-ss2sw;
//printf("结果为:%d\n",resultsw);
result = conversion1(resultsw);
cout<
}
void main()
{
fadd();
fsub();
}