我是编程的新手,我正在尝试编码以获得以下模式
如果n=3
3 3 3
3 1 3
3 2 3
3 3 3
如果n=4
4 4 4 4 4
4 4 1 4 4
4 4 2 4 4
4 4 3 4 4
4 4 4 4 4
如果n=5
5 5 5 5 5
5 5 1 5 5
5 5 2 5 5
5 5 3 5 5
5 5 4 5 5
5 5 5 5 5
等等。
上述模式的代码在
之下#include<stdio.h>
int main() {
int n, row, col, mid, i, j, mat[50][50], midValue = 1;
printf("Enter the value of N\n");
scanf("%d",&n );
if(n % 2 == 0) {
row = col = n + 1;
}
else{
col = n;
row = n + 1;
}
mid = col / 2;
printf("%d\n",mid );
for(i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
if(j == mid && i != 0) {
mat[row][col] = midValue;
midValue++;
}
else {
mat[row][col] = n;
}
}
}
for(i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
printf("%d\t",mat[row][col]);
}
printf("\n");
}
return 0;
}
但是,我所有的矩阵元素都设置为N的值。我无法弄清楚我哪里出错了。有谁可以指出错误?
答案 0 :(得分:2)
您正在设置和打印矩阵的唯一元素 - mat[row][col]
。
i
和j
均未用于设置值并打印值。
您需要更改:
mat[row][col] = midValue;
到
mat[i][j] = midValue;
和
mat[row][col] = n;
到
mat[i][j] = n;
和
printf("%d\t",mat[row][col]);
到
printf("%d\t",mat[i][j]);