c/자습

반복문(쉽게 풀어쓴 C언어 EXPRESS)

지트리아 2022. 12. 30. 00:22

용어정리

 

 

 

 

본문정리

반복의 개념

구성은 초기식, 조건식, 증감식으로 되어 있다.

 

while 문

 

반복 루프에서 보초값 사용하기

센티널 값이란 데이터의 끝을 알리는데 사용되는 데이터 값이다.

 

do - while 문

 

for 문

 

break와 continue

 

 

본문제

Q1. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int a;

    printf("카운터의 초기값을 입력하시오: ");
    scanf("%d", &a);

    while (a) {
        printf("%d ", a);
        a--;
    }
    printf("\a");

    return 0;
}

 

Q2. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int a = 0, sum = 0;

    for (a = 1; a < 100; a++) {
        if (a % 3 == 0) {
            sum += a;
        }
    }
    printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.", sum);

    return 0;
}

 

Q3. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int a;

    printf("정수를 입력하시오: ");
    scanf("%d", &a);

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

    return 0;
}

 

Q4. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    for (int i = 7; i > 0; i--) {
        for (int j = 0; j <= 7; j++) {
            if (i <= j) {
                printf("*");
            }
            else {
                printf(" ");
            }
        }
        printf("\n");
    }

    return 0;
}

 

Q5. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int k;

    printf("정수를 입력하시오: ");
    scanf("%d", &k);
    for (int i = 1; i <= k; i++) {
        for (int j = 1; j <= i; j++) {
            if (j <= i) {
                printf("%d ", j);
            }
        }
        printf("\n");
    }

    return 0;
}

 

Q6.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int a, b;
    char op;
    
    printf("*********************\n");
    printf("A ---- Add\n");
    printf("S ---- Subtract\n");
    printf("M ---- Multiply\n");
    printf("D ---- Divide\n");
    printf("Q ---- Quit\n");
    printf("*********************\n");
   
    do {
        printf("연산을 선택하시오: ");
        scanf(" %c", &op);
        if ( !(op == 'A' || op == 'S' || op == 'M' || op == 'D' || op == 'Q')) {
            printf("잘못된 연산자입니다.\n");
        }
        else {
            break;
        }
    } while (1);

    printf("두수를 공백으로 분리하여 입력하시오: ");
    scanf("%d%d", &a, &b);

    switch (op) {
        case 'A':
            printf("%d", a + b);
            break;
        case 'S':
            printf("%d", a - b);
            break;
        case 'M':
            printf("%d", a * b);
            break;
        case 'D':
            printf("%d", a / b);
            break;
    }

    return 0;
}

 

Q7.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int num;
    for (int i = 2; i < 100; i++) {
        num = 0;
        for (int j = 2; j < i; j++) {
            if (i == 2 && j == 2) {
                printf("2 ");
                break;
            }
            if (i % j == 0) {
                num = 1;
                break;
            }
        }
        if (!num) {
            printf("%d ", i);
        }
    }

    return 0;
}

 

Q8.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int a = 0;
    while (1) {
        printf("막대의 높이(종료: -1): ");
        scanf("%d", &a);
        if (a == -1) {
            break;
        }
        for (int i = 0; i < a; i++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

 

Q9.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int k = 0, sum = 0;

    scanf("%d", &k);

    for (int i = 0; i <= k; i++) {
        sum += i;
        if (sum > 10000) {
            sum -= i;
            break;
        }
    }
    printf("1부터 %d까지의 합이 %d입니다.", k, sum);

    return 0;
}

 

Q10.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    float a, sum = 1;
    int b;

    printf("실수의 값을 입력하시오: ");
    scanf("%f", &a);
    printf("거듭제곱횟수를 입력하시오: ");
    scanf("%d", &b);

    for (int i = 0; i < b; i++) {
        sum *= a;
    }
    printf("결과값은 %f", sum);

    return 0;
}

 

Q11.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int n = 0, sum = 0;

    printf("n의 값을 입력하시오: ");
    scanf("%d", &n);

    for (int i = 0; i <= n; i++) {
        sum = sum + i * i;
    }
    printf("계산값은 %d입니다.", sum);

    return 0;
}

 

Q12.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int n = 0, a = 0, b = 0, sum = 0;

    printf("몇번째 항까지 구할까요? ");
    scanf("%d", &n);

    for (int i = 0; i <= n; i++) {
        if (i == 0) {
            a = 0;
            b = 0;
            sum += 0;
        }
        else if (i == 1) {
            a = 0;
            b = 1;
            sum = a + b;
        }
        else if (i == 2) {
            a = 1;
            b = 1;
            sum = 1;
        }
        else {
            a = b;
            b = sum;
            sum = a + b;
        }
        printf("%d, ", sum);
    }

    return 0;
}

 

Q13.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int n = 0, r = 0, sum = 1;

    printf("n의 값: ");
    scanf("%d", &n);
    printf("r의 값: ");
    scanf("%d", &r);

    if (r < 1) {
        printf("잘못된 r의 값");
    }
    else {
        for (int i = 0; i < r; i++) {
            sum *= n;
            n--;
        }
    }
    printf("순열의 값은 %d입니다.", sum);

    return 0;
}

 

Q14.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


int main(void) {
    long long k, dk, count = 10;
    int n, div = 10;

    printf("정수를 입력하시오: ");
    scanf("%lld", &k);

    dk = k;

    do {
        n = dk % div;
        dk = dk / div;
        printf("%d", n);
        count *= 10;
    } while (k > count);
    n = dk % div;
    printf("%d", n);

    return 0;
}