解题思路:
注意事项:
参考代码:
#include<iostream>
using namespace std;
#define INITSIZE 10
#define INCREM 5
typedef int ElemType;
typedef struct //先定义栈,包含有栈底、栈顶、栈的长度
{
ElemType* base;
ElemType* top;
int listsize;
}SqStack;
int initStack(SqStack *Q) //初始化栈
{
Q->base = (ElemType*)malloc(INITSIZE*sizeof(ElemType));
if (!Q->base)
return 0;
Q->top = Q->base;
Q->listsize = INITSIZE;
return 1;
}
int emptyStack(SqStack* Q) //判断栈是否为空
{
return Q->top == Q->base;
}
int pushStack(SqStack *Q, ElemType e) //入栈
{
if (Q->top == Q->base + Q->listsize) //栈满重新分配内存
{
ElemType *newbase = (ElemType*)realloc(Q->base, (Q->listsize + INCREM) * sizeof(ElemType));
if (!newbase)
return 0;
Q->base = newbase;
Q->listsize += INCREM; //栈的长度发生变化
}
*Q->top = e;
Q->top++;
return 1;
}
int popStack(SqStack* Q, ElemType* e) //出栈
{
if (emptyStack(Q))
return 0;
Q->top--;
*e = *Q->top;
return 1;
}
int convert(int num) // 转化
{
SqStack Q;
initStack(&Q);
ElemType e = 0;
while (num != 0)
{
e = num % 8;
pushStack(&Q, e);
num /= 8;
}
while(!emptyStack(&Q))
{
popStack(&Q, &e);
cout << e;
}
cout << endl; // 别忘记换行用于多组数据
return 1;
}
int main()
{
int num;
while (cin >> num)
{
if (num == 0)
{
cout << 0 << endl;
}
else
{
convert(num);
}
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复