一个5X5的二维数组,其某一列数据全为1,某一行数据全为1,其余数据全为0,编程找到两条线的交点使用C语言
时间: 2024-10-07 11:06:42 浏览: 36
在C语言中,要找出一个5x5的二维数组中全为1的行和列的交点,可以先遍历数组,标记出所有全1的行和列的索引。然后从这两组索引中寻找它们共同的元素,即交点。以下是一个简单的示例程序:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
// 函数用于检查某一行是否全为1
int isAllOne(int arr[ROWS][COLS], int row) {
for (int i = 0; i < COLS; i++) {
if (arr[row][i] != 1) {
return 0;
}
}
return 1;
}
// 函数用于检查某一列是否全为1
int isAllOneCol(int arr[ROWS][COLS], int col) {
for (int i = 0; i < ROWS; i++) {
if (arr[i][col] != 1) {
return 0;
}
}
return 1;
}
// 主函数,查找交点
void findIntersection(int arr[ROWS][COLS]) {
// 初始化数组标识全1行和列
int onesInRow[ROWS] = {0}, onesInCol[COLS] = {0};
// 检查每行
for (int i = 0; i < ROWS; i++) {
if (isAllOne(arr, i)) {
onesInRow[i] = 1;
}
}
// 检查每列
for (int j = 0; j < COLS; j++) {
if (isAllOneCol(arr, j)) {
onesInCol[j] = 1;
}
}
// 查找并打印交点
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (onesInRow[i] && onesInCol[j]) {
printf("交点坐标: (%d, %d)\n", i, j);
break;
}
}
if (onesInRow[i]) {
break;
}
}
}
int main() {
int arr[ROWS][COLS] = {{0, 1, 1, 0, 0},
{1, 1, 1, 1, 0},
{0, 1, 0, 1, 1},
{0, 0, 1, 1, 1},
{0, 0, 0, 0, 1}};
findIntersection(arr);
return 0;
}
```
当你运行这个程序时,它会找出给定5x5二维数组中全1行和列的交点,并将其坐标打印出来。如果有多个交点,这里只会返回第一个。
阅读全文