一道螺旋矩阵的C语言题!
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/21 23:23:22
一道螺旋矩阵的C语言题!
请打印出螺旋方阵.如4*4的矩阵效果是:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
矩阵的维度n,也就是矩阵的边长,如上例中n=4..输出结果为一个4*4的矩阵.
n的范围小于100.
请打印出螺旋方阵.如4*4的矩阵效果是:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
矩阵的维度n,也就是矩阵的边长,如上例中n=4..输出结果为一个4*4的矩阵.
n的范围小于100.
#include <stdio.h>
//基本思想是将所有数按照螺旋顺序存入2维数组,再输出
int main()
{
\x09int n,u,d,l,r,i,j, mat[100][100] = {0}; //定义各个变量,其中u,d,l,r为存入数组时的上下左右边界.
\x09scanf("%d",&n);\x09//输入n的值
\x09for (i = 1; i<=n ; i++)\x09//先存数组第一行,i为数组里存入的数,在程序中一直递增
\x09{
\x09\x09mat[0][i-1] = i;
\x09}
\x09u = 1; d = n -1 ; l = 0 ; r = n -1;\x09//初始化螺旋的上下左右边界,因为存入了第一行,所以u = 1
\x09while(1)\x09//此循环实现螺旋顺序存入数据
\x09{
\x09\x09for (j = u; j <= d ; j++,i++)\x09//由上到下存入最右边的一列数
\x09\x09{
\x09\x09\x09mat[j][r] = i;
\x09\x09}
\x09\x09
\x09\x09r--;\x09//右边界减一
\x09\x09for (j = r ; j >= l ; j--,i++)\x09//由右到左存入最下边的一行数
\x09\x09{
\x09\x09\x09mat[d][j] = i;
\x09\x09}
\x09\x09d--;//下边界减一
\x09\x09if (i >= (n*n)) break;\x09//判断是否存满,存满跳出
\x09\x09for (j = d ; j >= u ; j--,i++)\x09//由下到上存入最左边的一列数
\x09\x09{
\x09\x09\x09mat[j][l] = i;
\x09\x09}
\x09\x09l++;//左边界加一
\x09\x09for (j = l ; j <= r ; j++,i++)\x09//由左到右存入上边的一行数
\x09\x09{
\x09\x09\x09mat[u][j] = i;
\x09\x09}
\x09\x09u++;//上边界加一
\x09\x09if (i >= (n*n)) break; //判断是否存满,存满跳出
\x09}
\x09for (i = 0 ; i < n ; i++)
\x09{
\x09\x09for( j = 0 ; j < n ; j++)
\x09\x09{
\x09\x09\x09printf("%d\t", mat[i][j]);
\x09\x09}
\x09\x09printf("\n");
\x09}
}
再问: while(1)是什么意思?不好意思,我是初学者。 另外,底下的for循环是干嘛的?\t又是什么?
再答: while(1)就是一直循环的意思,如果没有break语句就是个死循环 最后最后的那两个for循环是用来输出数组的啊~\t是制表符,用来让输出的矩阵比较整齐,就像图里面的。
//基本思想是将所有数按照螺旋顺序存入2维数组,再输出
int main()
{
\x09int n,u,d,l,r,i,j, mat[100][100] = {0}; //定义各个变量,其中u,d,l,r为存入数组时的上下左右边界.
\x09scanf("%d",&n);\x09//输入n的值
\x09for (i = 1; i<=n ; i++)\x09//先存数组第一行,i为数组里存入的数,在程序中一直递增
\x09{
\x09\x09mat[0][i-1] = i;
\x09}
\x09u = 1; d = n -1 ; l = 0 ; r = n -1;\x09//初始化螺旋的上下左右边界,因为存入了第一行,所以u = 1
\x09while(1)\x09//此循环实现螺旋顺序存入数据
\x09{
\x09\x09for (j = u; j <= d ; j++,i++)\x09//由上到下存入最右边的一列数
\x09\x09{
\x09\x09\x09mat[j][r] = i;
\x09\x09}
\x09\x09
\x09\x09r--;\x09//右边界减一
\x09\x09for (j = r ; j >= l ; j--,i++)\x09//由右到左存入最下边的一行数
\x09\x09{
\x09\x09\x09mat[d][j] = i;
\x09\x09}
\x09\x09d--;//下边界减一
\x09\x09if (i >= (n*n)) break;\x09//判断是否存满,存满跳出
\x09\x09for (j = d ; j >= u ; j--,i++)\x09//由下到上存入最左边的一列数
\x09\x09{
\x09\x09\x09mat[j][l] = i;
\x09\x09}
\x09\x09l++;//左边界加一
\x09\x09for (j = l ; j <= r ; j++,i++)\x09//由左到右存入上边的一行数
\x09\x09{
\x09\x09\x09mat[u][j] = i;
\x09\x09}
\x09\x09u++;//上边界加一
\x09\x09if (i >= (n*n)) break; //判断是否存满,存满跳出
\x09}
\x09for (i = 0 ; i < n ; i++)
\x09{
\x09\x09for( j = 0 ; j < n ; j++)
\x09\x09{
\x09\x09\x09printf("%d\t", mat[i][j]);
\x09\x09}
\x09\x09printf("\n");
\x09}
}
再问: while(1)是什么意思?不好意思,我是初学者。 另外,底下的for循环是干嘛的?\t又是什么?
再答: while(1)就是一直循环的意思,如果没有break语句就是个死循环 最后最后的那两个for循环是用来输出数组的啊~\t是制表符,用来让输出的矩阵比较整齐,就像图里面的。
一道螺旋矩阵的C语言题!
求C语言程序,N*N的螺旋矩阵.
C语言,输出4*4的螺旋矩阵.
求一份C语言做的数字螺旋矩阵的程序
一个5x5的螺旋矩阵如下所示,C语言编写程序输出N x N的螺旋矩阵 (N
一道初学者的C语言题目 矩阵运算,
请问一道C语言程序题输出4X4矩阵的四周元素之和
C语言编写 螺旋矩阵编写 一个形如这样的矩阵宽度 自制~1 2 3 4 516 17 18 19 615 24 25 2
C语言螺旋矩阵从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填
C语言螺旋数字矩阵 谁知道这个程序怎样编写 代码是什么?
C语言请教高手,输入一个数字n,以该数字作为矩阵的大小,把1,2,3...n*n的数字按顺时螺旋输出.
如何使用C# 语言实现螺旋加上蛇形的动态生成矩阵?n随机取数.