/* File: p5test2.c The program that nested calling works correctly. */ #include int a, b, c ; void proc4 ( int a01, int a02, int a03, int a04, int a05, int a06, int a07, int a08, int a09, int a10 ) { printf("%d %d %d %d %d %d %d %d %d %d\n", a01,a02,a03,a04,a05,a06,a07,a08,a09,a10) ; } void proc3 ( int a01, int a02, int a03, int a04, int a05, int a06, int a07, int a08, int a09, int a10 ) { printf("%d %d %d %d %d %d %d %d %d %d\n", a01,a02,a03,a04,a05,a06,a07,a08,a09,a10) ; /* swap first & second half */ proc4(a10,a01,a02,a03,a04, a05,a06,a07,a08,a09) ; } void proc2 ( int a01, int a02, int a03, int a04, int a05, int a06, int a07, int a08, int a09, int a10 ) { printf("%d %d %d %d %d %d %d %d %d %d\n", a01,a02,a03,a04,a05,a06,a07,a08,a09,a10) ; /* swap adjacent parameters */ proc3(a02,a01,a04,a03,a06,a05,a08,a07,a10,a09) ; /* swap blocks of 4 */ proc4(a05,a06,a07,a08,a01,a02,a03,a04,a10,a09); } void proc1 ( int a01, int a02, int a03, int a04, int a05, int a06, int a07, int a08, int a09, int a10 ) { printf("%d %d %d %d %d %d %d %d %d %d\n", a01,a02,a03,a04,a05,a06,a07,a08,a09,a10) ; /* circular shift a10 to front */ proc2(a10,a01,a02,a03,a04,a05,a06,a07,a08,a09) ; /* another cicular shift */ proc2(a09,a10,a01,a02,a03,a04,a05,a06,a07,a08) ; } main() { proc1(1,2,3,4,5,6,7,8,9,10) ; }