두 정수의 최대공약수를 구하는 코드입니다.뭐가 문제인지 잘 모르겠습니다.왜 고쳐야 하는지하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다.
코드의 세세한 실수가 많네요 |
○ Scanf() 함수의 입력 포멧 ("%d%d") 사이에 여백이 있어야 합니다. 이대로는 3, 36, 3 6 을 구분할 수 없습니다.
○ 두 숫자가 같은 것을 확인하는 부분은 (a == b) 입니다. 여기가 (a = b) 로 되니, 이 부분만 지나면 a, b 값이 똑같아 지고, 이후 부분은 건너뛰게 됩니다.
○ 출력 부분에 "%d" 가 없으니, c 를 출력할 수가 없습니다 .Printf() 함수 사용법을 더 명확하게 보세요
○ 최대공약수를 못찾는 경우에 대한 예외처리 추가해주세요
코드 예제 |
#includeint main() { int a = -1, b = -1, c = -1; printf("두 정수를 입력하시오"); scanf("%d %d", &a, &b); if (a > b) { c = a - 1; while (c > 1) { if (a%c == 0) { if (b%c == 0) { printf("두 정수의 최대공약수 : %d\n", c); break; } } c--; } } else if (a == b) { printf("두 정수의 최대공약수 : %d\n", a); } else { c = b - 1; while (c > 1) { if (b%c == 0) { if (a%c == 0) { printf("두 정수의 최대공약수 :%d\n", c); break; } } c--; } } if (c == 1) { printf("최대공약수가 없습니다\n"); } getchar(); //Just for screen break return 0; }
실행 결과 |
'ECIM list (Help!)' 카테고리의 다른 글
c언어 메모리동적할당 문제 Memory Allocation Malloc (0) | 2015.09.04 |
---|---|
Const (한정자) 관련 질문입니다. (0) | 2015.09.03 |
C언어 재귀함수로 삼각형 그리기 - 재귀함수 연습 (0) | 2015.08.30 |
피보나치 수열 비재귀방법으로 풀기 - Fibonacci number without recursion (0) | 2015.08.30 |
배열 구조체를 이용한 성적출력 - 버블소팅 예제 (Bubble soring example) (0) | 2009.02.10 |