在main函数中实现对于输入的任意十进制数字,例如:1234,利用栈存储每个位置上的数字,并输出其逆序:4321。请使用顺序栈实现
时间: 2024-09-30 13:04:12 浏览: 33
在C语言中,要在`main`函数中实现输入十进制数字到栈中并逆序输出,可以使用顺序栈(基于数组实现)。以下是步骤和代码示例:
1. 首先,定义一个顺序栈结构,这里我们仅包含一个整型数组和两个变量,一个是栈顶,另一个是数组长度减一(因为数组下标从0开始):
```c
#define MAX_SIZE 100 // 设置栈的最大大小
int stack[MAX_SIZE];
int top = -1; // 初始栈顶位置
```
2. 创建一个函数 `push_to_stack` 用于将数字压入栈:
```c
void push_to_stack(int num) {
if (top >= MAX_SIZE - 1) {
printf("Stack overflow.\n"); // 当栈满时,提示错误信息
return;
}
stack[++top] = num;
}
```
3. 主函数`main`里,读取用户输入的十进制数字,并逐位推入栈:
```c
int main() {
int input;
printf("Enter a decimal number: ");
scanf("%d", &input);
while (input != 0) {
push_to_stack(input % 10); // 取余获取最后一位,然后除以10移位
input /= 10;
}
// 输出逆序的栈内容
printf("Reversed number: ");
for (int i = top; i >= 0; i--) {
printf("%d", stack[i]);
}
return 0;
}
```
当运行这段代码,用户输入如1234,程序会依次将各个数字压入栈(4 -> 3 -> 2 -> 1),然后从栈顶开始弹出并打印,得到逆序的结果:4321。
阅读全文