输入多组数据,每组第一个是整数N,接下来输入N个整数,倒序输出N个整数,使用C语言
时间: 2024-12-15 14:18:23 浏览: 8
在C语言中,你可以通过循环和栈的数据结构来实现在控制台输入多组数据并按照逆序输出。下面是一个简单的示例,我们将使用`stdio.h`和`stdlib.h`头文件以及自定义的栈结构来完成这个任务:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int top;
int* array;
int capacity;
} Stack;
// 创建栈
Stack* createStack(int capacity) {
Stack* stack = (Stack*) malloc(sizeof(Stack));
stack->top = -1;
stack->array = (int*) malloc(capacity * sizeof(int));
stack->capacity = capacity;
return stack;
}
// 入栈
void push(Stack* stack, int value) {
if (stack->top == stack->capacity - 1) {
printf("Stack is full!\n");
return;
}
stack->array[++stack->top] = value;
}
// 出栈并返回顶部元素
int pop(Stack* stack) {
if (stack->top == -1) {
printf("Stack is empty.\n");
return -1;
}
return stack->array[stack->top--];
}
// 主程序
int main() {
int n;
while (scanf("%d", &n) == 1) { // 读取整数N
Stack* inputStack = createStack(n + 1); // 预留空间以防溢出
for (int i = 0; i < n; i++) { // 读入N个整数
scanf("%d", &inputStack->array[inputStack->top]);
push(inputStack, inputStack->array[inputStack->top]);
}
// 输出倒序的数字
while (!isEmpty(inputStack)) {
printf("%d ", pop(inputStack));
}
printf("\n"); // 每组之间换行
}
// 释放栈内存
free(inputStack->array);
free(inputStack);
return 0;
}
```
在这个程序中,我们首先创建了一个栈,然后将输入的数值一个个压入栈中。当需要输出时,我们从栈顶开始弹出数字并打印,实现了倒序的效果。
阅读全文