문제는
두개의 정수 n.m을 입력받아서 n이m의 배수이면 1을 반환하고 그렇지 않으면 0을 반환하는 함수 is_multiple(int n, int m)을 작성하시오
첫번째 정수를 입력하세요 :
두번째 정수를 입력하세요 :
XX은 XX의 배수입니다. 또는 XX은 XX의 배수가 아닙니다.
교수님이 보여준 답은
#include<stdio.h>
int is_multiple(int n, int m);
int main(void)
{
int a, b, c;
printf("첫번째 정수를 입력하세요");
scanf("%d", &a);
printf("두번쨰 정수를 입력하세요");
scanf("%d", &b);
c = is_multiple(a,b);
if (c = 1)
printf("%d는%d의 배수입니다.", a, b);
else
printf("%d는%d의 배수가 아닙니다.", a, b);
return 0;
}
int is_multiple(int n, int m)
{
if (n%m == 0)
return 1;
else
return 0;
}
이거인데 이렇게하면 m에 4를 넣고 n에 2를 넣으면 4는 2의 배수입니다. 이렇게 출력되고
m에 2를 넣고 n에 4를 넣으면 2는 4의 배수입니다. 이렇게 모순되게 출력되요
else 부분은 정상적으로되고
그래서 보완하려고 아래 int is_multiple(int n, int m)이 함수부분을
int is_multiple(int n, int m)
{
static int G;
for (G = 1;G<=1000; G++)
{
if (n == m*G)
return 1;
else if (m == n*G)
return 1;
else
return 0;
}
1000의 배수까지 지원하는 걸로 해봤는데 결과는 그냥 뭘넣든 else로 흘러서 배수가아니라고나옴ㅠㅠㅠ 어떻게해야지 저거보완할수있어요?
내가 보기엔 교수님 정답은 정확한딩
2 4 넣으면 else 에서 0으로 가서 배수가 아닙니다 출력하는거 아님?
교수님이 잘못 했네
return 하는 순간 함수가 끝남
배수라면 함수 종료가 맞겠지만 아니면 다음 g도 검사해봐야지
교수꺼에 n하고 m하고 크기비교하는 조건을 추가하는데 맞을듯
뭐 어떻게해야하는거죵 ㅠㅠㅜ
배운지 이제 한달되어가서 뭔말인지 잘 모르겠어요 ㅠ