c输入正整数N,输出数字12345组成的方阵,例如:输入:N=3 输出: 1 2 1 3 1 4 1 5 1
时间: 2024-05-01 22:16:22 浏览: 90
以下是一种可能的C语言程序实现:
```
#include <stdio.h>
int main() {
int N;
printf("请输入正整数N:");
scanf("%d", &N);
int i, j;
for (i = 1; i <= N; i++) {
for (j = 1; j <= N; j++) {
if (i == (N+1)/2 || j == (N+1)/2) { // 中心位置
printf("1 ");
} else {
printf("%d ", (j+i)%2+2); // 按照规律输出
}
}
printf("\n");
}
return 0;
}
```
程序中,先读入正整数N,然后使用两个循环遍历每个位置,根据题目要求输出数字。特别地,当位置在方阵的中心位置时,输出1。具体输出规律是,对于不在中心位置的位置,按照(i+j)%2+2的结果输出,其中i和j分别表示该位置在行和列的坐标,(i+j)%2表示该位置的行列坐标之和的奇偶性,结果为0或1,再加上2即可得到该位置的数字。最后每行输出完毕后记得换行。
相关问题
输入正整数N(N≤20),输出数字12345组成的方阵输入 正整数N(N≤20) 输出 由 12345 组成的 N×N 数字方阵例如: N=1 1 N=2 1 1 1 1 N=3 1 2 1 3 1 4 1 5 1请帮我用c语言编写一个程序要求显示代码
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数N:");
scanf("%d", &n);
int matrix[n][n]; // 定义一个N*N的矩阵
// 初始化矩阵
int num = 1;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
matrix[i][j] = num;
num++;
}
}
// 输出矩阵
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
输入正整数N (N<20) ,输出数字12345组成的方阵,
要求按照从左到右,从上到下的顺序依次填充数字,例如当N=3时,输出如下方阵:
1 2 3
4 5 1
2 3 4
当N=4时,输出如下方阵:
1 2 3 4
5 1 2 3
4 5 1 2
3 4 5 1
以此类推。
解法:
观察样例可以发现,方阵中每个数都是1~5的循环,每一行都是上一行循环后右移一位得到的。因此可以用一个数组来表示第一行的5个数,然后循环左移一位得到下一行,再依次输出即可。
代码如下:
阅读全文