1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#include<stdio.h>
#define SIZE 4
int matrix[4][4] = { {10,11,12,13}, {14,15,16,17}, {18,19,20,21}, {22,23,24,25} };
void swap(int *p, int *q)
{
int *t;
*t = *p;
*p = *q;
*q = *t;
}
void printMatrix()
{
int i, j;
for (i = 0; i < SIZE; ++i)
{
for (j = 0; j < SIZE; ++j)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main()
{
int first, last, i, t, n = 0;
printf("Before Rotation:\n");
printMatrix();
while(n < SIZE/2)
{
first = n;
last = (SIZE-1)-n;
/* Save First Element */
t = matrix[n][n+1];
/* Top Row */
for (i = first; i <= last; ++i)
{
swap(&t, &matrix[first][i]);
}
/* Last Column */
for (i = first+1; i <= last; ++i)
{
swap(&t, &matrix[i][last]);
}
/* Bottom Row */
for (i = last-1; i >= first; --i)
{
swap(&t, &matrix[last][i]);
}
/* First Column */
for (i = last-1; i >= first; --i)
{
swap(&t, &matrix[i][first]);
}
++n;
}
printf("After Rotation:\n");
printMatrix();
}
|