朱派金


私信TA

用户名:zhupaijin

访问量:4664

签 名:

等  级
排  名 1091
经  验 3094
参赛次数 6
文章发表 21
年  龄 21
在职情况 学生
学  校 四川轻化工大学
专  业

  自我简介:

解题思路:

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分

15 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

优质题解
2022-03-08 11:49:00
  • «
  • 1
  • »