C 如何使用前一行的右移值初始化8x10矩阵的每一行
所以我要做的是让8x10矩阵的第一行显示12345678910。第二行是10123456789。第三个是91012345678。发射型计算机断层扫描仪。这就是我目前所拥有的。它只是继续计数C 如何使用前一行的右移值初始化8x10矩阵的每一行,c,C,所以我要做的是让8x10矩阵的第一行显示12345678910。第二行是10123456789。第三个是91012345678。发射型计算机断层扫描仪。这就是我目前所拥有的。它只是继续计数 #include<stdio.h> #define ROWS 8 #define COLS 10 int main(int argc, char *argv[]) { int A[ROWS][COLS]; int B[COLS][ROWS]; int x,y;
#include<stdio.h>
#define ROWS 8
#define COLS 10
int main(int argc, char *argv[])
{
int A[ROWS][COLS];
int B[COLS][ROWS];
int x,y;
for (x=0; x<ROWS; x++)
{
for (y=0; y<COLS; y++)
{
A[x][y] = 1*x + y;
}
}
printf("=== Original matrix === \n");
for (x=0; x<ROWS; x++)
{
for (y=0; y<COLS; y++)
{
printf("%3d ", A[x][y]);
}
printf("\n");
}
#包括
#定义第8行
#定义COLS 10
int main(int argc,char*argv[])
{
int A[行][COLS];
int B[COLS][ROWS];
int x,y;
对于(x=0;x我没有遵循你的逻辑
A[x][y] = 1*x + y;
使用%
,我似乎离得更近了:
A[x][y] = (1+x + y) % 10;
这将取x
和y
之和除以10的剩余部分-如果我们从1开始,而不是从0开始,它开始接近你想要的。这并不完全正确,但这是一个开始
=== Original matrix ===
1 2 3 4 5 6 7 8 9 0
2 3 4 5 6 7 8 9 0 1
3 4 5 6 7 8 9 0 1 2
4 5 6 7 8 9 0 1 2 3
5 6 7 8 9 0 1 2 3 4
6 7 8 9 0 1 2 3 4 5
7 8 9 0 1 2 3 4 5 6
8 9 0 1 2 3 4 5 6 7
代码如下:
#include <stdio.h>
#define ROWS 8
#define COLS 10
int main(int argc, char* argv[]) {
int A[ROWS][COLS];
int B[COLS][ROWS];
int x,y;
for (x=0; x<ROWS; x++) {
for (y=0; y<COLS; y++) {
A[x][y] = (1+x + y) % 10;
}
}
printf("=== Original matrix === \n");
for (x=0; x<ROWS; x++) {
for (y=0; y<COLS; y++) {
printf("%3d ", A[x][y]);
}
printf("\n");
}
}
#包括
#定义第8行
#定义COLS 10
int main(int argc,char*argv[]){
int A[行][COLS];
int B[COLS][ROWS];
int x,y;
对于(x=0;xFirst,只需在第一行中填入所需内容即可。例如,对于从零开始计数的数字:
for (y = 0; y < COLS; y++)
A[0][y] = y;
(y=0;y
A[0][y]=y;
填充第一行后,将按照所述填充其余的行(每行从上一行右转一行):
(x=1;x
对于(y=0;y
以上从第二行开始填充(索引为1)向前,并始终从第一行复制值。但是,它复制到的当前行中的位置被行号偏移,因此它在每行后开始一个位置。
%
运算符用于在索引到达行的末尾时将索引环绕到行的开头。更直观的解决方案是a[x][y]=A[0][(x+y)%COLS]
@Suryavanshi从A[x][(x+y)%COLS]=A[0][y]
到A[x][y]=A[0][(x+y)%COLS]
反转换档方向。正确的解决方案是A[x][y]=A[0][(abs(COLS+y-x))%COLS]
这在计算上是不必要的昂贵,我不是这么说的。
for (x = 1; x < ROWS; x++)
for (y = 0; y < COLS; y++)
A[x][(x + y) % COLS] = A[0][y];