输入一个n,在屏幕上打印出N*N的矩阵(华为面试题)

题目:输入一个n,在屏幕上打印出N*N的矩阵。

例如:输入一个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>
#include<conio.h>
#define N 10
void printCube(int a[][N],int n);//数组存放矩阵结点的值
void main()
{
 int a[N][N],n;
 printf("input n:\n");       //输入矩阵的行、列数
 scanf("%d",&n);
 printCube(a,n);             //执行赋值和打印函数
 getch();
}
void printCube(int a[][N],int n)//数组存放矩阵结点的值
{
 int i,j,round=1;
 int m=1;                    //初始值为1
 for(i=0;i<n;i++)
  a[0][i]=m++;            //赋值第一行
 for(i=n-1;i>=n/2;i--)       //几次循环,得到矩阵数组的所有值
 {
  for(j=round;j<=i;j++)
   a[j][i]=m++;        //赋值最后一列
  for(j=i;j>=round;j--)
   a[i][j-1]=m++;      //赋值最后一行
  for(j=i;j>round;j--)
   a[j-1][round-1]=m++;//赋值第一列
  for(j=round;j<i;j++)
   a[round][j]=m++;    //赋值里面的第一行,即第二行
  round++;                //倒数第二列,重新运算,round+1时,减少一列,因为最后一列已经赋值
 }                           //循环得到矩阵数组的值
 for(i=0;i<n;i++)            //循环输入矩阵
 { for(j=0;j<n;j++)
   printf("%3d",a[i][j]);//打印一行
  printf("\n");             //换行
 }
}

程序执行结果:

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值