这就是我写的
int n=0,i=0,j=0,k=0,s=0,a=0,b=0;
int blk[n][n];
printf("how many blocks?\n");
scanf ("%d", &n);
printf("\n");
for(i=0;i<n;i++){
blk[i][j]=k;
printf("%d: %d\t ",k, blk[i][j]);
k++;
printf("\n");
}
应该看起来像这样
0:0
1:1
2:2
...
8:8
9:9
用户然后拥有一组命令,这些命令可以通过函数以不同方式移动数字 我的问题是我不知道如何移动数字,例如这样
0:0
1:1 9
2:2
...
8:8
9:
第一个命令将“ a”放在b之上(所以9在1之上)
第一个数字是位置(#:),前面的数字是矩阵的起始位置
答案 0 :(得分:3)
像这样阅读n
之后,应该已经声明了blocks变量。
您还忘记了第二个for循环。
int n=0,i=0,j=0,k=0,s=0,a=0,b=0;
printf("Enter the numember of blocks desired\n");
scanf ("%d", &n);
printf("\n");
int blocks[n][n];
for(i = 0; i < n; i++){
for (j = 0; j < n; j++){
blocks[i][j]=k;
printf("%d: %d\t ",k, blocks[i][j]);
k++;
printf("\n");
}
}
答案 1 :(得分:1)
您似乎正在描述一个NxN矩阵。对于N == 10,并初始化为零,它在概念上可能看起来像这样:
然后,您描述要移动一个数字。例如,将值放置到特定位置,例如将55放置到matrix[3][3]
中。牢记从零开始的索引系统,矩阵现在看起来像:
可以执行以下操作的步骤:
步骤:
0)使用命令行值调用程序以求矩阵顺序。
1)使用在命令行上输入的值创建nxn表。
2)提示用户输入位置以及要放置或退出的值。
3)清除以前的内容。
4)放置新值。
5)转到第2步。
实施示例:
int main(int argc, char *argv[])
{
int x = 0, y = 0;
int value = 0;
if(argc != 2)
{
printf("Usage: %s <integer value for order>\n Exiting", argv[0]);
getchar();
return 0;
}
int order = atoi(argv[1]);
int matrix[order][order];
int exit = 'x';
while(exit != 'q')
{
printf("Enter 3 space delimited digits with values from 0 to %d.\n\n", order-1);
scanf(" %d %d %d", &x, &y, &value);
memset(matrix, 0, x*y*sizeof(int));
matrix[x][y] = value;
for(int i=0;i<order;i++)
{
for(int j=0;j<order;j++)
{
if((i==x) && (j==y))
{
printf("%3d", value);
if(j == order-1)printf("\n");
}
else
{
printf("%3d", 0);
if(j == order-1)printf("\n");
}
}
}
printf("\nHit 'q' to quit, any other key to continue");
exit = getchar();
}
return 0;
}
对于order == 10
矩阵,已针对以下x
,y
和value
命令行条目进行了测试:
0 0 99
,0 9 99
,9 0 99
,9 9 99