본문 바로가기

Code.D IT 프로젝트/C언어

[C언어 문제] 지정 배수의 합계 구하는 프로그램

C언어 문제

지정 배수의 합계 구하는 프로그램



문제)

특정 숫자 범위에서 지정 배수의 합계를 구하는 프로그램을 만들어 주세요.



#include <stdio.h>

int main(void){

     int numStart, numEnd;
     int numMultiple;
     int i;
     int sum;

     printf("범위의 시작 숫자를 입력하세요 >>> ");
     fflush(stdout);
     scanf("%d", &numStart);

     printf("범위의 끝 숫자를 입력하세요 >>>  ");
     fflush(stdout);
     fflush(stdin);
     scanf("%d", &numEnd);

     printf("합계를 구할 배수를 입력하세요 >>> ");
     fflush(stdout);
     fflush(stdin);
     scanf("%d", &numMultiple);

     sum = 0;

       //AND 연산자(&&)를 이용하여 범위를 설정
     for(i = numStart; numStart <= i && i <= numEnd; i++){


         if (i % numMultiple == 0)
              sum += i;

         }

        printf("%d ~ %d 범위에서 %d 배수의 합계: %d \n", numStart, numEnd, numMultiple, sum);

     return 0;

}



다음은 출력 결과입니다.






범위의 시작 숫자는 1, 끝 숫자는 50으로 설정한 뒤

합계를 구할 배수 7을 입력합니다.

1 ~ 50 범위에서 7배수의 합계는 196으로 출력됩니다.

수를 입력받을 때 fflush(stdout)과 fflush(stdin)을 사용했습니다.

이 차이에 대해 궁금하신 분은 아래의 링크를 확인하시기 바랍니다.

fflush 함수, fflush(stdin)/fflush(stdout) 개념 제대로!

fflush(stdout)으로 출력 버퍼를 비워준 즉시 출력하고,

fflush(stdin)으로 입력 버퍼에 있는 개행문자(\n)를 비워줍니다.


if (i % numMultiple ==0)

→ 합계를 구할 배수를 numMultiple이라는 변수에 저장한 뒤 1~50까지 numMultiple로 나눠줍니다.

numMultiple로 나누어떨어질 때마다 sum에 누적되어 합해집니다.

sum을 출력하면 지정 배수의 합계를 확인할 수 있습니다.