使用c语言,不使用函数,不使用define,不使用定义结构体,输入一个3×3的数字矩阵,并判断其中的数字是否在1到9之间,或者有重复,如果超出1到9的范围,那么输出NO,如果在范围内,并且没有重复的数字,那么输出YES
时间: 2024-09-19 17:16:12 浏览: 29
在C语言中,你可以使用数组来实现这个功能,因为数组本身就是连续的内存空间,可以存储并遍历整个3x3矩阵。以下是一个简单的示例,我们通过嵌套循环来检查每个元素:
```c
#include <stdio.h>
#include <stdbool.h>
#define ROWS 3
#define COLS 3
// 用于标记矩阵中的位置
bool matrix[ROWS][COLS] = {0};
int main() {
int matrix_data[ROWS][COLS]; // 存储矩阵数据
bool found_duplicate = false; // 标记是否有重复数字
bool result;
printf("Enter a 3x3 matrix with numbers between 1 and 9 (separated by space): ");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
scanf("%d", &matrix_data[i][j]);
if (matrix_data[i][j] < 1 || matrix_data[i][j] > 9) {
printf("NO\n");
return 0;
}
matrix[i][j] = true; // 标记位置已被访问
if (matrix[i][j - 1] && matrix[i][j + 1]) { // 判断左右邻居是否存在重复
found_duplicate = true;
break;
} else if (i > 0 && matrix[i - 1][j]) { // 上面的邻居
found_duplicate = true;
break;
} else if (i < ROWS - 1 && matrix[i + 1][j]) { // 下面的邻居
found_duplicate = true;
break;
}
}
if (found_duplicate) {
break;
}
}
if (!found_duplicate) {
result = true;
} else {
result = false;
}
if (result) {
printf("YES\n");
} else {
printf("There are duplicate numbers in the matrix.\n");
}
return 0;
}
```
在这个程序中,我们首先读取用户输入的矩阵数据,然后逐行逐列检查数字是否在1到9的范围内以及是否有重复。如果有重复或数字超出范围,则直接输出结果。
阅读全文