C & Docker & LINUX

C언어 - 최대공약수 구하기

로픽 2016. 4. 18. 14:58
300x250

최대공약수 구하기 (파일포인터, 명령인자, 재귀함수)

#include<stdio.h>

#include<stdlib.h>


int gcd(int a, int b);


int main(int argc, char* argv[])

{

int a, b, result, correct=0, answer;


FILE* infile=NULL;

fopen_s(&infile, argv[1], argv[2]);


if (argc != 3)

{

printf("명령인수가 잘못 입력되었습니다.\n");

exit(1);

}

if (infile == NULL)

{

printf("파일이 열리지 않습니다.\n");

}


while (fscanf_s(infile, "%d %d", &a, &b) != EOF)

{

printf("%d와 %d의 최대공약수 : \n", a, b);

scanf_s("%d", &answer);


result = gcd(a, b);


if (result == answer)

{

printf("정답\n");

correct++;

}

else

printf("오답\n");

}


printf("총 %d개를 맞췄습니다.\n", correct);

}


int gcd(int a, int b)

{

int tmp;


while (b != 0)

{

tmp = b;

b = a%b;

a = tmp;

}


return a;

}




반응형