按照顺时针的顺序从外向里打印整形数组

    xiaoxiao2021-03-25  63

      做这道题时要有清晰的思路,分4个方向打印,每次从左上角(0,0),(1,1)....开始,最后一次为行或列中小的一个的1/2,如果行和列不相等

    最后都会剩下一行或者一列,只剩一行时只需再打印第一步,剩一列时需要打印1 ,2步

    #include <stdio.h> void outPrint( int arr[3][5], int clo, int row) { if ( NULL == arr || clo <= 0 || row <= 0) return ; int end = 0; if (clo<row) end = (clo+1)/2; else end = (row+1)/2; for (int start = 0; start <end ; start++) { int i = 0; for (i = start; i < row; i++) //从左到右打印 printf("%d ",arr[start][i]); if (start < clo -1) { for (i= start + 1; i < clo; i++) //从上到下打印 printf("%d ",arr[i][row-1]); } if (start < row - 1 && start < clo -1) { for (i=row-2; i >= start; i --) //从右到左打印 printf("%d ",arr[clo-1][i]); } if (start < row - 1 && start < clo -1) { for (i=clo-2 ;i > start; i--) //从下到上打印 printf("%d ",arr[i][start]); } clo -- ; row -- ; } } int main() { int arr[3][5] = { {7,8,9,4,5}, {10,11,1,2,5}, {13,14,1,5,6} }; outPrint(arr,3,5); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-32259.html

    最新回复(0)