问题及代码:
/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:ysx.cpp
作 者:于苏显
完成日期:2016年11月10日
版 本 号:v1.0
问题描述:把十进制的整数转换为任一进制数输出.
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),
直到商为0,得到的一系列余数的逆序就是转换结果。
这里的“逆序”,意味着后产生的余数,会先输出,后进先出。
输入描述:十进制的整数和要转换为的进制数。
程序输出:数制转换后的整数。
*/
在sqstack算法库的基础上
#include "sqstack.h"
void conversion(int num,int base)
{
int e;
SqStack *s;
InitStack(s);
while(num)
{
Push(s,num%base);
num/=base;
}
while(!StackEmpty(s))
{
Pop(s,e);
printf("%d",e);
}
printf("\n");
DestroyStack;
}
int main()
{
int num,base;
printf(" 数制转换\n\n");
printf("请输入任意十进制整数\n");
scanf("%d",&num);
printf("请输入要转换成的进制数\n");
scanf("%d",&base);
printf("\n转换成的 %d 进制数为\n",base);
conversion(num,base);
return 0;
}
运行结果:
知识点总结:运用了栈的性质,使运算更加简便。
学习心得:要熟练掌握栈的使用和进制转换的方式(取整取余)。