【发布时间】:2021-12-13 22:09:30
【问题描述】:
打印一个具有 n 维的矩阵,其列之间的距离为 r。对于 n = 4 和 r = 7,这是如下所示的输出,其中每列之间有 7 个空格。 (不允许使用矩阵或数组)
这里的主要问题是我试图弄清楚如何根据n、r 和i 概括 1 的位置。我被卡住了,因为似乎没有简单的方法可以做到这一点,或者我只是想念它。
这是解决这类问题的好方法还是有更好的方法?
#include <stdio.h>
int main() {
int n; // Dimensions
int r; // Distance between columns
printf("Enter n: ");
scanf("%i", &n); // Dimensions
printf("Enter the distance between columns in matrix: ");
scanf("%i", &r); // Distance
int i, j, k;
for (i = 0; i < n; i++) { // Row
for (j = 0; j < (r + 1) * n; j++) {
if (j % r == 0) {
if (j == r * (1 + i) && j != 0) { // For 1s
printf("1");
} else {
printf("0"); // For -0s
}
} else {
printf("X");
}
}
printf("\n");
}
return 0;
}
【问题讨论】:
-
你试过用
printf(" ");替换printf("X");吗?此外,如果您只想为前导对角线 (i == j) 打印1并为所有其他元素打印0,那么您的循环逻辑似乎非常复杂。 -
printf("%10s", "X")在 10 个字符的列中打印 X。
标签: c for-loop printf nested-loops