编写并解释程序sample1.c的具体功能,该程序应能在屏幕上显示一个矩阵,其中元素遵循的规则是:正对角线上的元素以及对角线上方的元素值均为1,而其余位置的元素值等于其所在的行号减去列号加1。展示矩阵生成的详细过程和代码实现方法。
时间: 2024-10-23 19:17:46 浏览: 31
程序sample1.c的主要功能是创建并打印一个二维数组,这个数组的特点是主对角线和从左上到右下的斜对角线上的元素都是1,其他位置的元素则由它们所在的位置(行号减去列号加1)计算得出。以下是详细的代码解释:
```c
#include <stdio.h>
// 定义矩阵的大小
#define ROWS 5
#define COLS 5
int main() {
// 初始化一个ROWS * COLS的二维数组,动态分配内存
int matrix[ROWS][COLS];
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
// 对于主对角线和左上到右下斜对角线上的元素赋值为1
if (i == j || i + j == ROWS - 1) {
matrix[i][j] = 1;
}
// 其他位置的元素值为行号减去列号加1
else {
matrix[i][j] = i - j + 1;
}
// 打印当前元素
printf("%d ", matrix[i][j]);
}
// 每行结束换行
printf("\n");
}
return 0;
}
```
在这个程序中,首先通过两层嵌套循环遍历整个矩阵。对于每个元素,如果它的索引(i, j)满足条件i == j(主对角线)或者i + j == ROWS - 1(左上到右下的斜对角线),那么就将其值设为1;否则,将其设置为行号i减去列号j再加上1。然后将当前元素的值打印出来,并在每行结束后添加换行符。
运行此程序,你会看到一个按照指定规则生成的矩阵在屏幕上显示。
阅读全文