矩阵之字形打印教材.docVIP

  • 8
  • 0
  • 约1.34千字
  • 约 6页
  • 2017-07-09 发布于湖北
  • 举报
题目 实现矩阵之字形打印 实验要求:任给一个矩阵(m*n),实现元素的之字形输出。 例如:A[4][4]={1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16} 程序应依次输出: 1 2, 5 3, 6, 9 4, 7, 10, 13 8, 11, 14 12, 15 16 实验思路:利用2个坐标点a(x,y),b(m,n)分别标记一个参考点,用来划分一条对角线(对角线上元素就是需要依次打印)。一轮结束之后根据具体条件移动参考点,继续打印。我们假设a(x,y)先向下移动,再向右移动,不同的是b(m,n)先向右移动,再向下移动。当a(x,y),b(m,n)重合时,就到达矩阵的最后一个元素。 实验源码: #includestdio.h #define paraX 5 //矩阵行参数 #define paraY 5 //矩阵列参数 void main() { int a[paraX][paraY]; int x,y,m,n,i,j; int num=1; printf(输出原矩阵\n); for(i=0;iparaX;i++) //初始化并显示a[i][j] { for(j=0;jparaY;j++) { a[i][j]=num; printf(%-3d,a[i][j]); num+=1; } printf(\n\n); } x=0; //标记坐标(x,y) y=0; m=0; //标记坐标(m,n) n=0; //利用以上坐标画出矩阵的一条对角线 printf(\n之字形打印\n); while(x=paraX-1y=paraY-1m=paraX-1n=paraY-1) //坐标没有走到底就执行循环 { i=m; j=n; while(i=xj=y) //利用坐标(m,n)(x,y)从右上到左下依次打印斜线上元素 { printf(%-3d,a[i][j]); i=i+1; j=j-1; } printf(\n\n); if(xparaX-1) //(x,y)的行x移动 { x=x+1; } else //(x,y)的列y移动 { y=y+1; } if(nparaY-1) //(m,n)的列n移动 { n=n+1; } else //(m,n)的行m移动 { m=m+1; } } } 实验效果: 图 1 打印5*5矩阵 图 2 打印5*1矩阵 图 3 打印1*5矩阵

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档