c언어 이중반복문

조회수 465회
#include <stdio.h>  

void dice(int , int );

int main(void)
{
int input1, input2;
scanf_s("%d%d", &input1, &input2);
dice(input1, input2);

return 0;
}

void dice(int num1, int num2)
{
int a = 1, b = 1;

while (num1 >= a)
{


      while (num2 >= b)
      {
           printf("%d %d\n", a, b);
           b++;

      }
a++;
}
}

이 함수에 2, 2을 입력하면 (1,1)(1,2)(2,1)(2,2)이런 식으로 출력이 돼야합니다.(괄호는 편의를 위해 사용)

근데 2, 2를 입력하면 (1,1)(1,2)로 출력이 되고 a는 반복이 안됩니다. 똑같은 방식으로 for문으로 하면 정상 출력이 되는데 while문으로 하면 a는 반복이 안되네요...어디가 잘못된거죠???

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • printf(...)가 두번쨰 while문에 있어서 그러네요 b가 1에서 시작해서, 두번째 while문이 끝나면 b의 값이 3이 되죠

    그러면 a=2값이 되었을때 b값은 여전히 3이기 떄문에 출력을 안합니다.

    b값을 첫번째 while문에서 다시 1로 세팅하면 됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • b가 while문을 빠져나가면 int b=1;로 선언이 되었기 때문에 자동으로 1로 다시 초기화되는게 아닌가요??? 만약 아니면 반복문을 빠져나가도 계속 그 값으로 유지가 되는건가요?? 알 수 없는 사용자 2020.5.14 14:26
    • b 값이 첫번째 while문 시작전에 선언 됐기 때문에 다시 1로 초기화되지 않습니다 알 수 없는 사용자 2020.5.14 17:01
    • 감사합니다! 알 수 없는 사용자 2020.5.14 17:18

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)