栈-十进制整数转换为八进制

版权声明:转载请注明出处。 https://blog.csdn.net/baidu_38304645/article/details/82938457

十进制数N和其他d进制数的转换是计算机实现计算的基本问题。有一个简单算法基于下列原理:

N=(N div d) * d + N mod d (div为整除运算,mod为求余运算)

对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。

运行结果:

由于上述计算过程是从低位待高位孙旭产生八进制数的各个数位,而打印输出,一般来说应该从高位到低位进行,恰好和计算过程相反。因此,若将计算过程中得到的八进制数的各位顺序进栈,则按出栈顺序列打输出的即为对应的八进制数。

算法实现:

void Conversion(){
	//十进制整数转换成八进制
     int n;
     SqStack<int> S;
     int e;
     printf("请输入十进制整数:");
     scanf("%d",&n);
     InitStack(S);
     while(n) {
         Push(S,n%8);
         n=n/8;
	 }
	 printf("得到八进制整数:");
     while(!StackEmpty(S)){
        Pop(S,e);
        printf("%d",e);
	 }
}

猜你喜欢

转载自blog.csdn.net/baidu_38304645/article/details/82938457