0
点赞
收藏
分享

微信扫一扫

环形矩阵的输出- c语言

Android开发指南 2022-04-05 阅读 86
c语言

输入,一个n,一个m,代表行和列

输出,一个n行m列的从1开始到n*m结束的矩阵

#include<stdio.h>
int main()
{
	int i,j,k,n,m,a;
	int num[20][20],l,h;

	scanf("%d %d",&n,&m);//行 列  
	
	i=j=k=0;
	a=1;//从1开始填充 
	 
	h=n;
	l=m;
	while(a <= l*h)//当数据大于h*l时结束 
	{
		
		for(j=k;j<m;j++)//行号 i 不变,列号j自加
		{
			num[i][j]=a;	
			a++;
		}
   		j--;//j与a都多加了一次,这里减去 
   		a--;
		for(i=k;i<n;i++)//行++,列不变 
		{
			num[i][j]=a;
			a++;
		}
		i--;//j与a都多加了一次,这里减去 
		a--;
		
		for(j=m-1;j>k;j--)//列-- 行不变 
		{
			num[i][j]=a;
			a++;
		}
	    if(a>=h*l)break;
		for(i=n-1;i>k;i--)//行-- 列不变 
		{	
			num[i][j]=a;
			a++;
     	}
        i++;//i多减了一次;
		  
		n--;//下,右边界减一,圈数加一,缩小范围 
		m--;

		k++;
	}
	for(i=0;i<h;i++)//打印出已经填充好的数据 
	{
			for(j=0;j<l;j++)
				printf("%-3d ",num[i][j]);
				printf("\n");
	}
	return 0;
}

举报

相关推荐

0 条评论