End a clean C program for any matrix in a 2D array with a given column of row x.
#include <stdio.h> void printspiral(int *p,int r, int c) { int i=0,j=0,m=1,n=0; static int firstrun=1,gCol; if (!p||r<=0||c<=0) return ; if(firstrun) { gCol=c; firstrun=0; } for(i=0,j=0;(0<=i && i<c)&&(0<=j && j<r);i+=m,j+=n) { printf(" %d",p[i+j*gCol]); if (i==0 && j==1 && (i+1)!=c) break; else if (i+1==c && !j) {m=0;n=1;} else if (i+1==c && j+1==r && j) {n=0;m=-1;} else if (i==0 && j+1==r && j) {m=0;n=-1;} } printspiral(&p[i+j*gCol+1],r-2,c-2); firstrun=1; printf("\n"); } int main() { int a[3][3]={{0,1,2},{3,4,5},{6,7,8}}; int b[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}; int c[4][3]={{0,1,2},{3,4,5},{6,7,8},{9,10,11}}; int d[3][1]={{0},{1},{2}}; int e[1][3]={{0,1,2}}; int f[1][1]={{0}}; int g[5][5]={{0,1,2,3,4},{5,6,7,8,9},{10,11,12,13,14},{15,16,17,18,19},{20,21,22,23,24}}; printspiral(a,3,3); printspiral(b,3,4); printspiral(c,4,3); printspiral(d,3,1); printspiral(e,1,3); printspiral(f,1,1); printspiral(g,5,5); return 0; }