用c语言,通过二维数组完成蛇形矩阵

问题:通过二维数组完成蛇形矩阵
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16

#include 


int main(int argc,char *argv[])
{
    //变量
	int i,j,k,n,m=0;
	int count=0;//赋值
	
	//从键盘输入
	printf("请输入矩阵的层数\n");
	scanf("%d",&n);//4
	int buf[n][n];//定义二维数组
	
	//上半部分
	for(i=1;i<=n;i++)//n=4 遍历行数
	{
		k=0;
		//控制数据的位置
		for(j=i;j>0;j--)//j=1 
		{
			//赋值累计
			count++;
			//判断当前为奇数行还是偶数行
			if(i%2 == 0)//偶数行 第2行
			{
				buf[j-1][k]=count;//buf[2-1][0]=buf[1][0]
				                  //buf[1-1][1]=buf[0][1]
			}
			else//第3行
			{
				buf[k][j-1]=count;//buf[0][3-1]=buf[0][2]
				                  //buf[1][2-1]=buf[1][1]
								  //buf[2][1-1]=buf[2][0]
			}
			k++;
		}
	} 
	
	//下部分 i=5  5 6 7
	for(;i<=2*n-1;i++,m++)//2*4-1=7
	{
		k=n-1;// 4-1=3 
		for(j=0;j<n-1-m;j++)//4-1-0=3 4-1-1=2
		{
			//赋值累计
			count++;
			//判断当前为奇数行还是偶数行
			if(i%2 == 0)//偶数行 第2行
			{
				buf[k][i-1-k]=count;//buf[3][6-1-3]=buf[3][2]
				                    //buf[2][6-1-2]=buf[2][3]
			}
			else//第3行
			{
				buf[i-1-k][k]=count;
			}
			k--;
		}
	}
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%d ",buf[i][j]);
		}
		printf("\n");
	}
	return 0;
}

运行结果:
用c语言,通过二维数组完成蛇形矩阵_第1张图片

你可能感兴趣的:(c语言,矩阵,算法)