c语言递归反转整数数有空格
时间: 2024-12-17 10:22:07 浏览: 9
在 C 语言中,递归反转整数并保持原数组顺序不变,通常是指将数组(包括正负数表示的整数)的元素逆序排列,而不是直接操作数值。这种方法常用于处理字符串,因为字符数组可以看作是一个数字的二进制形式。下面是一个简单的示例,它假设输入的是一个包含空格分隔的整数串:
```c
#include <stdio.h>
#include <stdlib.h>
void reverse(int* arr, int start, int end) {
if (start >= end) {
return;
}
// 交换当前元素和结束位置的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 递归处理剩余部分
reverse(arr, start + 1, end - 1);
}
// 主函数测试
int main() {
char input[100]; // 假设输入不超过99个字符
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串
// 分割输入并转换为整数数组
int num[] = {0};
int count = 0;
for (size_t i = 0; input[i] != '\n'; i++) {
if (input[i] != ' ') {
num[count++] = input[i] - '0';
} else {
num[count] = '\0'; // 结束当前整数
count++; // 开始处理下一个整数
}
}
// 调用reverse函数反转数组
reverse(num, 0, count - 1);
// 打印结果
for (int i = 0; i < count; i++) {
printf("%d ", num[i]);
}
return 0;
}
```
阅读全文