c语言用二维数组的方式去除多行前导向零
时间: 2024-09-13 12:13:10 浏览: 44
在C语言中,二维数组前导的0通常出现在初始化矩阵或者从文件读取数据时,如果数据是以空格分隔,并且包含前导空白字符。要去除这些前导零行,你可以通过遍历数组并检查每一行是否全是0来进行判断。下面是一个简单的示例:
```c
#include <stdio.h>
// 函数用来检查一行是否全为0
int isZeroRow(int row[], int size) {
for (int i = 0; i < size; ++i) {
if (row[i] != 0)
return 0;
}
return 1;
}
// 主函数处理二维数组
void removeLeadingZeros(int arr[][size], int rows, int cols) {
int new_rows = 0;
// 遍历矩阵
for (int i = 0; i < rows; ++i) {
if (!isZeroRow(arr[i], cols)) {
// 如果不是全0行,则复制到新数组
for (int j = 0; j < cols; ++j)
new_arr[new_rows][j] = arr[i][j];
new_rows++;
}
}
// 调整新数组的维度
printf("New array dimensions: %d x %d\n", new_rows, cols);
// 可能需要在这里分配新的内存并更新指针,这里为了简洁略去实际操作
// ... (可以根据需求添加实际内存管理代码)
}
// 示例用法
int main() {
int arr[4][5] = { {0, 1, 2, 0, 0},
{3, 4, 5, 6, 7},
{0, 0, 8, 9, 10},
{0, 0, 0, 0, 11} };
int cols = 5;
removeLeadingZeros(arr, sizeof(arr) / sizeof(arr[0]), cols);
// 输出处理后的数组
// ...
return 0;
}
```
阅读全文