一个5X5的二维数组,其某一列数据全为1,某一行数据全为1,其余数据全为0,编程找到两条线的交点用C语言
时间: 2024-10-07 14:06:29 浏览: 94
在C语言中,我们可以使用嵌套循环遍历这个5x5的二维数组来查找全为1的行和列的交点。假设我们有一个名为`array`的二维整型数组,下面是一个简单的示例代码来完成这个任务:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
// 函数声明
int findIntersection(int array[ROWS][COLS], int row, int col);
int main() {
// 初始化一个5x5的二维数组,其中某些元素设为1,其余为0
int array[ROWS][COLS] = { {0, 0, 0, 1, 1},
{0, 0, 1, 1, 0},
{0, 1, 1, 0, 0},
{1, 1, 0, 0, 0},
{1, 0, 0, 0, 0} };
// 找到所有全为1的行和列
int foundRow = -1, foundCol = -1; // 初始化未找到的位置
for (int i = 0; i < ROWS; i++) {
if (std::all_of(array[i], array[i] + COLS, [](int j) { return j == 1; })) {
foundRow = i;
break;
}
}
for (int j = 0; j < COLS; j++) {
if (std::all_of(array, array + ROWS * COLS, [&](int val) { return val[j] == 1; })) {
foundCol = j;
break;
}
}
// 如果找到了交点,打印结果
if (foundRow != -1 && foundCol != -1) {
printf("交点在第%d行第%d列\n", foundRow + 1, foundCol + 1);
} else {
printf("没有找到全为1的行和列作为交点。\n");
}
return 0;
}
// 辅助函数:检查给定行或列是否全为1
int findIntersection(int array[ROWS][COLS], int row, int col) {
// 这里仅用于演示如何使用外部函数,主函数中已处理了这种情况
return row == foundRow && col == foundCol ? 1 : 0;
}
```
运行上述代码后,它会寻找数组中全为1的一行和一列,并报告它们的交点位置。如果找不到这样的交点,程序会显示相关信息。
阅读全文