算法设计题:输入一个任意的非负数十进制整数,输出与其等值的八进制数

来源:百度知道 编辑:UC知道 时间:2024/06/19 19:30:21

最近好多这样的问题哦,如果不能用%o来输出的话,那么一个很好的方法就是用堆栈,我用的是链式堆栈:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef int DataType;
#include "LSNode.h";

void main()
{
LSNode *head;
float a;//为了判断输入是否为整数而设的变量
int x,y;

StackInitiate(&head);//初始化

printf("请输入一个非负十进制整数: ");
scanf("%f",&a);
x=(int)a;
if(x<0||x!=a){printf("您输入的是负数或小数!\n");return;}

do
{
y=x%8;//除8取余
if(StackPush(head,y)==0)//入栈所得余数y
{
printf("错误!\n");
return;
}
x=x/8;//取得本循环的商数作为下一循环被除数
}while(x!=0);

printf("转换成八进制为: ");

while(StackNotEmpty(head))
{
StackPop(head,&x);//出栈,次序刚好与入栈时相反
printf("%d",x);//显示各位元素
}

printf("\n");

Destroy(head);//撤销链式堆栈
}

然后用