编写C语言代码 ,输入一个十进制数N,将其转换成八进制数。在计算过程中,把N与8求余得到的八进制数的各位依次进栈,计算完毕后将栈中的八进制数依次出栈输出
时间: 2024-10-11 07:15:16 浏览: 45
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
4星 · 用户满意度95%
在C语言中,我们可以使用数组来模拟栈的数据结构,并通过循环和取余操作来实现十进制数到八进制数的转换。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h> // 引入字符串库处理八进制字符
// 定义栈结构体
typedef struct {
int data[100]; // 用于存储八进制数的栈元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 入栈
void push(Stack *s, int num) {
if (s->top == sizeof(s->data) - 1) {
printf("Stack overflow.\n");
return;
}
s->data[++s->top] = num;
}
// 出栈并打印八进制数
void pop_and_print(Stack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return;
}
printf("%d", s->data[s->top--]);
}
// 主函数
int main() {
int N, remainder;
char octal_num[100];
Stack stack;
init(&stack);
printf("Enter a decimal number: ");
scanf("%d", &N);
while (N > 0) {
remainder = N % 8; // 取余得到的八进制位
push(&stack, remainder); // 进栈
N /= 8; // 更新N
}
pop_and_print(&stack); // 出栈并打印结果
printf("\n");
return 0;
}
```
当你运行这个程序时,它会提示你输入一个十进制数,然后逐步转换成对应的八进制数并输出。如果栈满或栈为空,它会相应地给出错误信息。
阅读全文