我必须创建一个程序来打印一个数组,其中包含用户指定的行数和列数,并打印具有奇数索引(行号和列号)的值
这是我设法写的:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int r, c, i, j;
printf("Number of rows: ");
scanf("%d", &r);
printf("Number of columns: ");
scanf("%d", &c);
int A[r][c];
printf("Enter your numbers\n");
for (i = 0; i < r; i++) {
for (j = 0; j < c; j++)
scanf("%d", &A[i][j]);
}
for (i = 0; i < r; i++) {
printf("\n\t");
for (j = 0; j < c; j++)
printf("%d ", A[i][j]);
}
}
如果用户指定他想要 4 行和 4 列,程序将打印如下内容:
X X X X
X X X X
X X X X
X X X X
如何让程序打印:
X X // prints only for odd columns (1st and 3rd)
// prints nothing as the index of row is even(2nd)
X X // same as 1st row
// smae as 2nd row
最佳答案
从您的示例看来,您正在考虑第一行和第一列(索引 0s
)到第一个奇数...如行和列 1
也许。
在这种情况下,在您的打印功能中,您可以简单地将递增字段更改为...
for (i = 0; i < r; i++) {
printf("\n\t");
if (i % 2 == 0) {
for (j = 0; j < c; j += 2)
printf("%d ", A[i][j]);
}
}
...或者您可以使用 modulus (%)
运算符来检查 j
的值是偶数还是奇数...
for (i = 0; i < r; i++) {
printf("\n\t");
if (i % 2 == 0) {
for (j = 0; j < c; j++) {
if (j % 2 == 0) //will print columns at index 0, 2, 4, 6, ...
printf("%d ", A[i][j]);
}
}
}
不过我更喜欢第一个......
编辑
如果你想在输出中保留行不是奇数的空格,请不要更改 i
的增量,这样它将打印 \n
每次都要维护那些空白。
关于c - 打印列数和行数为奇数的数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902705/