03. 반복구조

2025. 6. 12. 12:42·C/Assignment

연습문제

 

 

예제 17

1부터 10까지 출력하기(1)

1로 시작되는 변수 i 값을 1씩 증가하면서,

i 값이 10보다 작거나 같을때까지 반복하며 i 값을 출력한다.

#include<stdio.h>

int main()
{
    int i;

    for(i = 1; i <= 10; i++)
    {
        printf("%d\n",i);
    }

    return 0;
}

 

예제 18

1부터 10까지 출력하기(2)

i가 1부터 1씩 증가하며 10이 될 때까지 반복하며 i 값을 출력한다.

#include<stdio.h>

int main()
{
    int i = 1;

    while (i <= 10)
    {
        printf("%d\n",i);
        i = i + 1;
    }

    return 0;
}

 

 

예제 19

10부터 1까지 출력하기

i가 10부터 1씩 감소하며 1이 될 때까지 반복하며 i 값을 출력한다.

#include<stdio.h>

int main()
{
    int i;

    for(i = 10;i > 0;i--)
    {
        printf("%d\n",i);
    }

    return 0;
}

 

예제 20

1부터 100까지의 합 구하기

0으로 초기화되어 있는 변수 sum에 1부터 100까지 1씩 증가하는 변수 i 값을 더해 1부터 100까지의 합을 구한다.

#include<stdio.h>

int main()
{
    int i;
    int sum = 0;

    for(i = 1;i < 101;i++)
    {
        sum = sum + i;
    }
    printf("%d",sum);

    return 0;
}

 

 

예제 21

1부터 100까지의 수 중 짝수의 합 구하기(1)

i가 2부터 2씩 증가하며 100이 될 때까지 반복하며 sum에 i 값을 더한다.

#include<stdio.h>

int main()
{
    int i;
    int sum = 0;

    for(i = 2;i < 101;i++)
    {
       if (i % 2 == 0)
       {
        sum = sum + i;
       }
    }
    printf("%d",sum);

    return 0;
}

 

 

예제 22

1부터 100까지의 수 중 짝수의 합 구하기(2)

i가 1부터 100까지 1씩 증가하면서 i가 짝수인 경우 sum에 i를 누적한다.

#include<stdio.h>

int main()
{
    int i = 1;
    int sum = 0;

    while (i <= 100)
    {
        if (i % 2 == 0)
        {
            sum = sum +i;
        }
        i = i + 1;
    }
    printf("%d",sum);

    return 0;
}

 

 

예제 23

1, -2, 3, -4, ..., 99, -100의 합 구하기

i가 1부터 1씩 증가하며 100이 될 때까지 반복하며 i가 홀수면 sum에 i 값을 더하고, i가 짝수면 sum에서 i 값을 뺀다.

#include<stdio.h>

int main()
{
    int i;
    int sum = 0;

    for(i=1;i<101;i++)
    {
        if (i % 2 == 0)
        sum = sum - i;
        else
        sum = sum + i;
    }
    printf("%d",sum);

    return 0;
}

 

예제 24

계승 구하기

계승이란 1부터 임의의 양의 정수 n까지의 수를 모두 곱한 것을 말하며 n!로 나타낸다.

예를 들어 5의 계승은 5!로 표시하며 1*2*3*4*5 이다. 그런데, 여기서 0!은 1로 정의한다.

#include<stdio.h>

int main()
{
    int i;
    int facto = 1;
    int n;
    scanf("%d",&n);

    if (n == 0)
    {
        printf("%d! : 1",n);
    }
    else
    {
        for (i=1;i<=n;i++)
        {
            facto = facto * i;
        }
        printf("%d! : %d",n,facto);
    }

    return 0;
}

 

 

예제 25

약수 구하기

임의의 수를 나누었을 때 나누어떨어지게 하는 수를 임의의 수의 약수라 한다.

즉, n의 약수는 1부터 n까지의 수 중 n을 나누어떨어지게 하는 수가 된다. 

예를 들면, 10의 약수는 1부터 10까지 수들로 10을 나누었을 때 나머지가 0이 되게 하는 수, 즉 1, 2, 5, 10이 된다.

#include<stdio.h>

int main()
{
    int i;
    int n;
    scanf("%d",&n);

    printf("%d의 약수 : ",n);
    for(i=1;i<n+1;i++)
    {
        if(n % i == 0)
        printf("%d ",i);
    }
    

    return 0;
}

 

예제 26

공약수 구하기

공약수란 0이 아닌 두 정수의 공통되는 약수를 말한다. 즉, 두 정수를 나누어떨어지게 하는 공통의 수를 의미한다.
n1과 n2의 공약수는 1부터 n1까지 1씩 증가하는 i로 n1과 n2 모두를 나누어떨어지게 하는수가 된다. 

단, n1이 n2보다 작다고 가정한다.

#include<stdio.h>

int main()
{
    int i;
    int num1 = 30;
    int num2 = 100;

    printf("%d와(과) %d의 공약수 : ",num1,num2);
    for (i=1;i<num1+1;i++)
    {
        if ((num1 % i == 0) && (num2 % i == 0))
        printf("%d ",i);
    }

    return 0;
}

 

예제 27

최대공약수 구하기

두 정수의 공약수 중 가장 큰 것을 최대공약수라 한다. 

그러므로 n1과 n2의 최대공약수는 n1부터 1까지 1씩 감소하는 i로 n1과 n2 모두를 나누어떨어지게 하는 첫 번째 수가 된다. 단, n1이 n2보다 작다고 가정한다.

 

#include<stdio.h>

int main()
{
    int i;
    int num1 = 30;
    int num2 = 100;

    printf("%d와(과) %d의 최대공약수 : ",num1,num2);
    for(i=num1;i>0;i--)
    {
        if ((num1 % i == 0) && (num2 % i == 0))
        {
            printf("%d",i);
            break;
        }
    }

    return 0;
}

 

예제 28

소수 판별하기

소수란 2, 3, 5, 7 …과 같이 1과 자기 자신 이외의 양의 약수를 가지지 않는 1보다 큰 자연수를 말한다.

임의의 수를

2부터, 자기 자신보다 1 작은 수까지의 수로

차례로 나누어서 나누어떨어지는 경우가 생기면 소수가 아니고, 

나누어떨어지는 경우가 생기지 않으면 소수이다.

#include<stdio.h>

int main()
{
    int i;
    int num;
    scanf("%d",&num);
    int deter_count = 0;

    for(i=2;i<num;i++)
    {
        if (num%i == 0)
        {
            deter_count = deter_count + 1;
        }
    }
    if (deter_count == 0)
    printf("%d은(는) 소수입니다.",num);
    else
    printf("%d은(는) 소수가 아닙니다.",num);

    return 0;
}

 

예제 29

피보나치수열 구하기

다음과 같은 수열이 있다.

 

이 수열의 두 번째 항 이후의 항들은 이전의 두 항을 더해 구해진다. 즉, 첫 번째 항과 두번째 항을 더한 값이 세 번째 항이 되고, 두 번째 항과 세 번째 항을 더한 값이 네 번째 항이 된다. 이와 같은 수열을 피보나치수열이라 한다.

 

피보나치수열을 구하는 과정은 다음과 같다.
전전 항을 저장하는 변수를 a, 전 항을 저장하는 변수를 b, 현재 항을 저장하는 변수를 c라 하고,

a에 첫 번째 항인 1을, b에 두 번째 항인 1을 저장하고 시작한다.

현재 항 c는 a 값과 b 값을 더한 값이 된다.

그 후 전 항 b값을 a에, 현재 항 c 값을 b 저장하고 현재 항 c를 새롭게 구하는 과정을 반복하며 피보나치수열을 구한다.

 

#include<stdio.h>

int main()
{
    int i;
    int f_num = 1; // 피보나치 수열의 첫번째 항
    int s_num = 1; // 피보나치 수열의 두번째 항
    int t_num; // 피보나치 수열의 세번째 항
    int temp; // 값을 임시로 저장할 변수
    int num;
    scanf("%d",&num);
    
    for(i=1;i<num+1;i++)
    {
        if ((i == 1) || (i == 2))
        printf("%d ",f_num); // 혹은 printf("%d",s_num); 도 가능함
        else
        {
            t_num = f_num + s_num;
            temp = s_num;
            s_num = t_num;
            f_num = temp;
            printf("%d ",t_num);
        }
    }

    return 0;
}

 

예제 30

최댓값 구하기

max 값과 새롭게 입력받은 a 값을 비교하여 큰 값을 max에 저장하는 동작을 반복해 최댓값을 구한다.

#include<stdio.h>

int main()
{
    printf("총 10번 반복합니다.\n");
    int max = 0;
    int i;
    for (i=1;i<11;i++)
    {
        printf("%d번째 정수 : ",i);
        int num1;
        scanf("%d",&num1);
        if (max < num1)
        max = num1;
    }
    printf("최댓값 : %d",max);

    return 0;
}

 

 

예제 31

직각 삼각형 모양으로 수 출력하기

바깥쪽 반복문은 i 값을 1부터 5까지 반복하고, 안쪽 반복문은 j 값을 1부터 i까지 반복하며 j 값을 출력하면 다음과 같이 된다. 단, 안쪽 반복문을 마치면 “\n”을 이용해서 다음줄로 넘긴다.

#include<stdio.h>

int main()
{
    int i;
    for(i=1;i<6;i++)
    {
        int j;
        for(j=1;j<i+1;j++)
        {
            printf("%d",j);
        }
        printf("\n");
    }

    return 0;
}

 

 

예제 32

1부터 10까지의 정수에 대한 약수 구하기

1부터 10까지의 정수에 대한 약수를 구한다.

 

#include<stdio.h>

int main()
{
    int i;
    for(i=1;i<11;i++)
    {
        printf("%d의 약수 : ",i);
        int j;
        for(j=1;j<i+1;j++)
        {
            if(i % j == 0)
            printf("%d ",j);
        }
        printf("\n");
    }

    return 0;
}

 

 

예제 33

2부터 100까지의 소수 구하기

i가 2부터 1씩 증가하며 100이 될 때까지 반복하며 각 i 값이 소수인지 판별한다. 소수를 판별하는 방법은 예제 28에서 살펴보았다.

#include<stdio.h>

int main()
{
    int i;
    for(i=2;i<101;i++)
    {
        int deter_count = 0;

        if (i == 2)
        deter_count = 0;
        else
        {
            int j;
            for(j=2;j<i;j++)
            {
                if(i % j == 0)
                deter_count += 1;
            }
        }

        if (deter_count == 0)
        printf("%d : 소수입니다.\n",i);
        else
        printf("%d : 소수가 아닙니다.\n",i);
    }

    return 0;
}

 

 

예제 34

1, (1+2), (1+2+3), …, (1+2+…+10)의 합 구하기

i가 1부터 1씩 증가하며 10이 될 때까지 반복하며 n은 i 값을 누적하고, sum은 n 값을 누적하면서 원하는 값을 구한다.

#include<stdio.h>

int main()
{
    int i;
    int n;
    int sum = 0;
    for(i=1;i<11;i++)
    {
        n = 0;
        int j;
        for(j=1;j<i+1;j++)
        {
            n = n + j;
        }
        sum = sum + n;
    }
    printf("%d",sum);

    return 0;
}

 

예제 35

구구단

다음과 같은 형식으로 출력되는 구구단 순서도와 프로그램을 작성한다.

 

단에 해당하는 2부터 9까지의 수는 변수 i로, 곱하여지는 수 1부터 9까지는 변수 j로, 곱한 결과는 j*j로 나타낸다.

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=2;i<10;i++)
    {
        for(j=1;j<10;j++)
        {
            int mul = i * j;
            printf("%d*%d = %d ",i,j,mul);
        }
        printf("\n");
    }

    return 0;
}

 

과제

 

과제16

1부터 10까지 출력하는 다음 순서도의 ①과 ②를 채우고 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    while (i<10)
    {
        i += 1;
        printf("%d\n",i);
    }

    return 0;
}

 

 

과제17

5부터 15까지 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 4;
    while (i<15)
    {
        i += 1;
        printf("%d\n",i);
    }

    return 0;
}

 

 

과제18

while형 반복 구조를 이용해서 10부터 1까지 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 11;
    while (i>1)
    {
        i -= 1;
        printf("%d\n",i);
    }

    return 0;
}

 

 

 

과제19

while형 반복 구조를 이용해서 1부터 100까지의 합을 구해 출력하는 순서도와 C 프로그램을 작성하여라.

 

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;
    while (i<100)
    {
        i += 1;
        sum += i;
        printf("%d\n",sum);
    }

    return 0;
}

 

 

 

과제20

1부터 입력받은 수까지의 합을 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int sum = 0;
    int n;
    scanf("%d",&n);
    for(i=1;i<n+1;i++)
    {
        sum += i;
    }
    printf("%d",sum);


    return 0;
}

 

 

 

과제21

while형 반복 구조를 이용해서 1부터 100까지의 수 중 짝수의 합을 구해 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;

    while(i<100)
    {
        i += 1;
        if (i % 2 == 0)
        sum += i;
    }
    printf("%d",sum);

    return 0;
}

 

 

 

과제22

1부터 100까지의 수 중 3의 배수의 합을 구해 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;

    while(i<100)
    {
        i += 1;
        if (i % 3 == 0)
        sum += i;
    }
    printf("%d",sum);

    return 0;
}

 


과제23

while형 반복 구조를 이용해서 1, -2, 3, -4, ..., 99, -100의 합을 구해 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;

    while(i<100)
    {
        i += 1;
        if (i % 2 == 0)
        sum -= i;
        else
        sum += i;
    }
    printf("%d",sum);

    return 0;
}

 

 

과제24

while형 반복 구조를 이용해서 계승을 구하는 순서도와 C 프로그램 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    int sum = 0;
    int facto = 1;
    int n;
    scanf("%d",&n);

    while(i<n)
    {
        i += 1;
        facto = facto *i;
    }
    printf("%d",facto\);

    return 0;
}

 

 

과제28

약수와 약수의 개수를 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i = 0;
    int count = 0;
    int n;
    scanf("%d",&n);

    printf("%d의 약수 : ",n);
    while(i<n)
    {
        i += 1;
        if (n % i == 0)
        {
            count += 1;
            printf("%d ",i);
        }
    }
    printf("\n약수 개수 : %d\n",count);

    return 0;
}

 

 

과제29

세 수의 공약수를 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int num1 = 10;
    int num2 = 30;
    int num3 = 100;
    int i;

    printf("공약수 : ");
    for(i=1;i<num1;i++)
    {
        if((num1 % i == 0) && (num2 % i == 0) && (num3 % i == 0))
        printf("%d ",i);
    }

    return 0;
}

 

 

과제30

1부터 자기 자신까지의 수로 차례로 나누어서 나누어떨어지는 경우 2번 발생하면 이 수는 소수이고,

그렇지 않으면 소수가 아니다.

이 방법을 이용해서 소수를 판별하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int count = 0;
    int num;
    scanf("%d",&num);

    for(i=1;i<num+1;i++)
    {
        if(num%i ==0)
        count += 1;
    }
    if(count == 2)
    printf("%d : 소수",num);
    else
    printf("%d : 소수아님",num);

    return 0;
}

 

 

 

과제31

피보나치수열의 20번째 항까지의 합을 구하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int f_num = 1;
    int s_num = 1;
    int t_num = 0;
    int temp = 0;
    int sum = 0;

    for(i=1;i<21;i++)
    {
        if((i==1) || (i==2))
        sum += f_num;
        else
        {
            t_num = f_num + s_num;
            sum += t_num;
            f_num = s_num;
            s_num = t_num;
        }
    }
    printf("20번째 항까지 합 : %d",sum);
    return 0;
}

 

 

 

과제32

최솟값을 구하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int min;
    int num;
    printf("총 10번 반복합니다.");
    printf("\n");
    printf("정수 : ");
    scanf("%d",&min);

    for(i=2;i<11;i++)
    {
        printf("정수 : ");
        scanf("%d",&num);
        if (min>num);
        min = num;
    }
    
    printf("최솟값 : %d",min);

    return 0;
}

 

 

 

과제33

다음과 같이 과제 출력하는 순서도와 C 프로그램을 각각 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=1;i<6;i++)
    {
        for(j=1;j<i+1;j++)
        printf("%d",i);
    printf("\n");
    }

    return 0;
}

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=5;i>-1;i--)
    {
        for(j=1;j<i+1;j++)
        printf("%d",j);
    printf("\n");
    }

    return 0;
}

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=1;i<6;i++)
    {
        for(j=6-i;j>0;j--)
        printf("%d",j);
    printf("\n");
    }

    return 0;
}

 

 

과제34

1!, 2!, 3!, 4!, 5!의 합을 출 과제 력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>

int main()
{
    int i;
    int j;
    int sum = 0;
    int facto = 1;
    for(i=1;i<6;i++)
    {
        for(j=1;j<i+1;j++)
        {
            facto *= j;
        }
        sum += facto;
        facto = 1;
    }
    printf("%d",sum);

    return 0;
}

 

 

 

과제35

다음과 같은 형식으로 출력되는 구구단 순서도와 C 프로그램을 작성하여라.

 

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=1;i<10;i++)
    {
        for(j=2;j<10;j++)
        {
            printf("%d*%d = %d ",j,i,j*i);
        }
        printf("\n");
    }

    return 0;
}

 

+추가) 별찍기

#include<stdio.h>

int main()
{
    int i;
    int j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if (i==j)
            printf("*");
            else if (i+j == 4)
            printf("*");
            else
            printf(" ");
        }
        printf("\n");
    }

    return 0;
}

 

'C > Assignment' 카테고리의 다른 글

CS study3  (1) 2025.08.05
04. 배열  (0) 2025.06.13
CS study2  (0) 2025.06.11
02. 선택구조  (0) 2025.06.11
01. 순차구조  (0) 2025.06.10
'C/Assignment' 카테고리의 다른 글
  • CS study3
  • 04. 배열
  • CS study2
  • 02. 선택구조
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
03. 반복구조
상단으로

티스토리툴바