C언어 문제 질문
조회수 1363회
두 양의 정수 a, b의 최대공약수를 계산하여 리턴하는 함수 int GetGCD(int a, int b)를 작성하 고 이를 이용하여 사용자가 0을 입력할 때까지 양의 정수를 입력 받아 그 수들의 최대공약수 를 출력하는 프로그램을 작성하시오.
int GetGCD(int x, int y) {
int a, b, c;
a = (x >= y) ? x : y;
b = (x >= y) ? y : x;
while (b != 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}
유클리드 방식으로 최대 공약수를 구하는 함수는 작성하였는데 main함수를 어떻게 작성해야 할 지 모르겠습니다.ㅠㅠ
2 답변
-
#pragma warning(disable : 4996) #include <stdio.h> int GetGCD(int x, int y); //사용자 함수 선언 int main() { int x, y, result; //main 함수 내의 지역변수 선언 x = y = -1; result = 0; while (!(x == 0 && y == 0)) // x, y 모두 0인 경우 while문을 빠져나가고, 그렇지 않은 경우에는 반복하여 수행 { printf("두 수를 입력하세요 : "); scanf("%d %d", &x, &y); result = GetGCD(x, y); printf("%d, %d의 최대공약수 = %d\n\n", x, y, result); } return 0; } int GetGCD(int x, int y) { int a, b, c; a = (x >= y) ? x : y; b = (x >= y) ? y : x; while (b != 0) { c = a % b; a = b; b = c; } return a; }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
#pragma warning(disable : 4996) #include <stdio.h> int GetGCD(int x, int y); //사용자 함수 선언 int main() { int result; //main 함수 내의 지역변수 선언 int tmp = 0; int num = -1; printf("2개 이상의 음이 아닌 정수를 입력하세요 [0을 입력하기 전까지의 수만 유효함] : "); while(1) { if (tmp == 0) { scanf("%d", &result); tmp++; } else { scanf(" %d", &num); tmp++; } if (num == 0) break; if (tmp >= 2) result = GetGCD(result, num); } rewind(stdin); getchar(); printf("최대공약수 = %d\n\n", result); printf("종료하려면 아무키나 누르세요"); getchar(); return 0; } int GetGCD(int x, int y) { int a, b, c; a = (x >= y) ? x : y; b = (x >= y) ? y : x; c = a % b; a = b; b = c; if (c == 0) return a; else return GetGCD(a, b);//c의 값이 0이 될때까지 재귀함수를 호출하고 c의 값이 0이 되면 비로소 최대공약수를 반환 }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력