逆时针的蛇形矩阵

题目:取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

输入:n(即n行n列)

输出:n+1行,n行为组成的矩阵,最后一行为对角线数字之和

样例输入:3

样例输出:
5 4 3
6 1 2
7 8 9

25



#include <stdio.h>
int main(int argc, char *argv[])
{int a,d,j,i,n,t,r[100][100],ans=0;      
scanf("%d",&n);  
a=1;
j=1;
d=n;
t=n*n;     
do
{      
    for (j=d;j>=a;j--)         
    {
        r[d][j]=t--;
    }      
    for (i=(d-1);i>=a;i--)        
    {
        r[i][a]=t--;
    }      
    for (j=a+1;j<=(n-a);j++)        
    {
        r[a][j]=t--;
    }      
    for (i=a;i<=d-1;i++)         
    {
        r[i][d]=t--;
    }      
    a=a+1;
    d=d-1;     
}while (a!=n-1);     
if (n==3) r[2][2]=1 ;      
for (i=1;i<=n;i++)      
{  
    for (j=1;j<=n;j++)   
        printf("%4d   ",r[i][j]);         
    printf("\n");            
}
for (i=1;i<=n;i++)
{
    ans+=r[i][i];
    ans+=r[n+1-i][i];
}  
printf("%d",ans-1);  
}


来源:消费电子网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值