数制转换 Conversion

十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:
N = (N div d)*d + N mod d (其中div为整除运算,mod为求余运算)

/***************************************
 *							    	   *
 * 文件夹: ▲03 栈和队列\02 Conversion *
 * 							    	   *
 * 文件名: Conversion.h         	   *
 * 							    	   *
 * 内  容: 进制转换相关操作列表 	   *
 *                              	   *
 ***************************************/

#ifndef CONVERSION_H
#define CONVERSION_H

#include <stdio.h> 
#include "../01 SequenceStack/SequenceStack.c" 		//**▲03 栈和队列**//

/* 进制转换函数列表 */
void conversion(int i);
/*━━━━━━━━━━━━━━━━━┓
┃(01)算法3.1:十进制数转八进制数。 ┃
┗━━━━━━━━━━━━━━━━━*/

#endif
/***************************************
 *					     			   *
 * 文件夹: ▲03 栈和队列\02 Conversion *
 * 					     			   *
 * 文件名: Conversion.c  			   *
 * 				         			   *
 * 算  法: 3.1           			   * 
 *                       			   *
 ***************************************/

#ifndef CONVERSION_C
#define CONVERSION_C

#include "Conversion.h"					//**▲03 栈和队列**//

/*════╗
║ 算法3.1║ 
╚════*/
void conversion(int i)
{	
	SqStack S; 
	SElemType_Sq e;
	
	InitStack_Sq(&S);

	printf("十进制数 %d 转换为八进制数后为:0", i);
	
	while(i)
	{
		Push_Sq(&S, i%8);				//进栈时从低位到高位 
		i = i/8;
	}
	
	while(!StackEmpty_Sq(S))
	{
		Pop_Sq(&S, &e);					//出栈时从高位到低位 
		printf("%d", e);
	}
} 

#endif
/***************************************
 *						        	   *
 * 文件夹: ▲03 栈和队列\02 Conversion *
 * 						        	   *
 * 内  容: 进制转换相关函数测试		   *
 *                              	   *
 ***************************************/

#include "Conversion.c"					//**▲03 栈和队列**//

int main(int argc, char **argv)
{
	int i = 342391;
		
	printf("将十进制数转换为八进制数...\n");

	conversion(i);
	
	printf("\n\n");
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/87818796