在数据结构中,栈是一个重点,如何利用栈将一个十进制正整数N转换成r进制数据并将其转换结果输出,以下是输出代码及结果(运用的是dev c++软件):
输出结果如下:
以下则是代码部分:
在这里插入代码片
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define L 20 //定义 L 为栈的最大容量
void conversion(int N,int r) //将十进制数 N 转换为 r 进制的数
{
int s[L],top; //定义一个顺序栈,top 为栈顶指标
int x;
top =-1; //初始化栈
while ( N ) //此循环为入栈操作
{
s[++top]=N%r; //余数入
N=N / r ; //商作为被除数继续
}
while (top!=-1) //此循环为出栈操作
{
x=s[top--];
if(x<=9)
printf(" %d",x);
else
switch(x)//16 进制时的情况
{ case 10:printf(" A");break;
case 11:printf(" B");break;
case 12:printf(" C");break;
case 13:printf(" D");break;
case 14:printf(" E");break;
case 15:printf(" F");break;
default:printf(" error");break;
}
}
}
int main()
{
int N,r=1;
printf("十进制数N向r进制转换\n");
printf("请输入待转换的十进制数:N=");
scanf("%d",&N);
while(r!=0)
{
printf("\n请输入要转换的进制数r<2,8,16>;若想结束请输入0:");
scanf("%d",&r);
printf("转换结果如下:\n");
if(r==0) break;
else
{
conversion(N,r);
printf("\n---------------------------");
}
}
}