c语言求倒序输出开头不为0的数
时间: 2024-11-06 20:36:24 浏览: 6
在C语言中,你可以通过遍历数组并逐个插入到另一个数组的开始来实现这个功能,同时检查每个数字是否以0开头。以下是简单的步骤:
1. 定义两个数组,一个存放原始数据,另一个存放倒序后的结果。
2. 使用循环从原始数组的末尾开始遍历,条件是当前元素不以0开头。
3. 检查元素时,可以使用`isdigit()`函数判断字符是否是数字,如果不是,则跳过该元素。
4. 如果元素满足条件,将其添加到结果数组的起始位置,并更新结果数组指针。
5. 遍历结束后,将结果数组的内容复制回原始数组,覆盖掉不需要的部分。
下面是一个简化的示例代码:
```c
#include <stdio.h>
#include <string.h>
int isDigit(char c) {
return (c >= '0' && c <= '9');
}
void reverseNonZero(int arr[], int n) {
int result[100], j = 0;
for (int i = n - 1; i >= 0 && arr[i] != 0; i--) {
if (isDigit(arr[i])) {
result[j++] = arr[i];
}
}
// 将结果复制回原数组
int k = 0;
for (i = 0; i < n && k < j; i++) {
arr[i] = result[k++];
}
}
// 测试函数
int main() {
int nums[] = {123, 045, 678, 00, 9};
int n = sizeof(nums) / sizeof(nums[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
reverseNonZero(nums, n);
printf("\nReversed non-zero array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
阅读全文