C语言,在线等急

题目描述
输入正整数N(N≤9)按照回形输出整数1~N2
输入
输出
样例输入
3
样例输出
1 2 3
8 9 4
7 6 5
提示
按照题目要求,数组中的最大值是81,因此按照%3d格式输出每个元素的值即可

#include <stdio.h>
#include "stdlib.h"
int main(int argc,char *argv[]){
    int n,m,i,t,x,*q,**p;
    printf("Input n(int 1~9)...\nn=");
    if(scanf("%d",&n)!=1 || n<1 || n>9){
        printf("Input error, redo: ");
        return 0;
    }
    q=(int *)malloc(sizeof(int)*n*n);
    if(q==NULL || (p=(int **)malloc(sizeof(int *)*n))==NULL){
        printf("Application memory failure...\n");
        return 0;
    }
    for(t=i=0;i<n;p[i++]=q+t,t+=n);
    for(m=n>>1,t=x=1;t<=m;t++){
        for(i=t-1;i<n-t;i++)
            p[t-1][i]=x++;
        for(i=t-1;i<n-t;i++)
            p[i][n-t]=x++;
        for(i=n-t;i>=t;i--)
            p[n-t][i]=x++;
        for(i=n-t;i>=t;i--)
            p[i][t-1]=x++;
    }
    if(n&1)
        p[t=n>>1][t]=x;
    for(i=0;i<n;i++)
        for(t=0;t<n;printf(t<n-1 ? "%3d" : "%3d\n",p[i][t++]));
    free(q);
    free(p);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网