解题思路:

QQ截图20220226181315.png

注意事项:

参考代码:

#include<stdio.h>
int main()
{
    int n;
    int k=1;
    int a[100][100];
	while(scanf("%d",&n)!=EOF) 
	{
	
	        //定义好数组下标
		for (int i=0;i<n;i++)
		{
		   for(int temp=i;temp<n-i;temp++)  //右 以5为例(0,0)~(0,-4) 
		   {
			    a[temp][n-i-1]=k;
			    k++;
		   }
		   for(int temp=n-i-2;temp>=i;temp--) //下 (-1,-4)~(-4,-4)
		   {
			    a[n-i-1][temp]=k;
			    k++;
		   }
		   for(int temp=n-i-2;temp>=i;temp--)  //左 (-4,-3)~(-4,0)
		   {
			    a[temp][i]=k;
			    k++;
		   }
		   for(int temp=i+1;temp<=n-i-2;temp++) //上 (-3,0)~(-1,0)
		   {
			    a[i][temp] = k;
			    k++;
		   }
		}
		//输出
		for(int i=0;i<n;i++)
		{
		   for(int temp=0;temp<n;temp++)
		   {
			    printf("%d",a[i][temp]);
			    //因为题中说了,除了两个数字之间有空格外,其它位置不能有空格,所以最左侧那列的右边是不能打印空格的
			    if(temp!=(n-1))
			    	printf(" ");
		   }
		   printf("\n");
		}
		printf("\n");
		//多组测试,记得k要清零
		k=1;
	}
	 return 0;
}


点赞(0)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

李怀瑞 2年前 回复TA
优质题解