for的妙用

作者在 2011-08-26 21:06:35 发布以下内容
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
 1   2   3   4
12  13  14   5
11  16  15   6
10   9   8   7
#include<stdio.h>
#define N 21
void main()
{
    int i,j,k,n,sum=1,s;
    int a[N][N]={0};
    printf("Input n (n<=20):");
    scanf("%d",&n);
    s=n*n;
    for(i=1;i<=n;i++)
    {
        for(j=i,k=i;k<=n-i+1;k++)
        {
            a[j][k]=sum;
            sum++;
            if(sum>s)
                break;
        }
        for(j=i+1,k=n-i+1;j<=n-i+1;j++)
        {
            a[j][k]=sum;
            sum++;
            if(sum>s)
                break;
        }
        for(j=n-i+1,k=n-i;k>=i;k--)
        {
            a[j][k]=sum;
            sum++;
            if(sum>s)
                break;
        }
        for(j=n-i,k=i;j>=i+1;j--)
        {
            a[j][k]=sum;
            sum++;
            if(sum>s)
                break;
        }
    }
    for(j=1;j<=n;j++)
    {
        for(k=1;k<=n;k++)
            printf("%4d",a[j][k]);
        printf("\n");
    }
}
C/C++ | 阅读 936 次
文章评论,共2条
lkz1987n
2011-09-10 14:34
1
我把你的代码给写了一遍。用C++。我漏了一个“=”,让我检测了几十分钟。终于得到和你一样的结果。如果我复制过去,就没有这个错误,但是也就没有意义了。应该自己写代码,而不能拷呗。<img src="image/face/2.gif" class="face">
laznrbfe(作者)
2011-09-10 15:03
2
<div class="quote"><span class="q"><b>lkz1987n</b>: 我把你的代码给写了一遍。用C++。我漏了一个“=”,让我检测了几十分钟。终于得到和你一样的结果。如果我复制过去,就没有这个错误,但是也就没有意义了。应该自</span></div>嗯,你的做法值得学习。
游客请输入验证码
浏览48166次