用C语言编写一个程序,利用栈的特点和基本操作,实现如下功能:将一个100以内的正整数N转换为二进制数,并输出转换后的结果。(注:即可采用顺序栈,也可采用链式栈)
时间: 2024-10-18 18:21:47 浏览: 50
在C语言中,我们可以使用链式栈来实现这个功能,因为链式栈更适合动态存储。下面是一个简单的链式栈实现的示例,用于将整数转换为二进制:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} StackNode;
// 初始化栈
StackNode* initStack() {
StackNode* stack = (StackNode*)malloc(sizeof(StackNode));
if (!stack)
return NULL;
stack->next = NULL;
return stack;
}
// 入栈操作
void push(StackNode** stack, int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
if (!newNode)
return;
newNode->data = value;
newNode->next = *stack;
*stack = newNode;
}
// 出栈操作(获取栈顶元素)
int pop(StackNode** stack) {
if (*stack == NULL)
return -1; // 栈空
StackNode* temp = *stack;
int topValue = temp->data;
*stack = temp->next;
free(temp);
return topValue;
}
// 转换整数为二进制并打印
void convertToBinary(int n) {
StackNode* stack = initStack();
while (n > 0) {
push(&stack, n % 2);
n /= 2;
}
printf("二进制表示: ");
while (stack != NULL) {
int binaryDigit = pop(&stack);
printf("%d", binaryDigit);
}
printf("\n");
}
int main() {
int num;
printf("请输入一个100以内的正整数: ");
scanf("%d", &num);
if (num >= 0 && num < 100) {
convertToBinary(num);
} else {
printf("输入错误, 请输入一个100以内的正整数.\n");
}
return 0;
}
```
当你运行此程序时,它会提示用户输入一个100以内的正整数,然后将其转换为二进制并显示出来。
阅读全文