void main() { int save[3][9], i, ii, dan; for(i = 0; i < 3; i++) { back: printf("출력하고 싶은 구구단을 입력해 주세요 : "); scanf("%d", &dan); if((dan < 2) || (dan > 9)) { printf("다시 입력해 주세요.\n\n"); goto back; } for(ii = 1; ii < 10; ii++) { save[i][ii - 1] = dan * ii; printf("%d * %d = %d\t", dan, ii, save[i][ii - 1]); } printf("\n\n"); } for(i = 0; i < 3; i++) { printf("%d번지에 저장된 값.\n", i + 1); for(ii = 0; ii < 9; ii++) printf("%d\t", save[i][ii]); printf("\n\n"); } }
설계과정을 따로 두고 싶은데 아직 설계를 할 수 있을만한 프로그램이 없는 것 같다. 이전에 했었던 구구단 출력에서 저장기능을 추가한 프로그램이다. 구구단을 3번 저장할 수 있는 이차원 배열인 save[3][9]를 선언했다.
반복문을 위해 i, ii를 선언했고 몇 단인지 입력받기 위해 dan을 선언했다. 총 3번 저장하면 되기에 처음 for문은 3번 반복한다. 출력할 단을 입력받고(물론 오류검사도 함께) 해당 단을 출력하면서 동시에 save[][]에 값을 저장한다.
이차원 배열이긴 하지만 쉽게 이해될꺼라 생각된다. 그리고 3번 입력이 끝났으면 저장한 값을 중복 for문을 통해서 출력하면 끝이 난다. while(1){}을 통해서 무한루프를 구현한 적이 있었는데 그때는 goto문 대신에 continue를 사용했다.
결과야 같지만 지금은 왜 continue를 사용하지 않고 goto문을 사용했을까? continue문을 한번 사용해보고 왜 사용하지 않았는지 확인해 보기 바란다.