[정답] 44. 정리하기(제어문)

1. 두 개의 정수를 입력받아 작은 값을 출력하는 코드를 작성하시오.
답:

//두 개의 정수를 입력받은 후에 직은 값을 출력하는 프로그램
#include <stdio.h>
int main(void)
{
    int a, b;
    printf("두 개의 정수 입력:");
    scanf_s("%d%d", &a, &b);
    if (a > b)
    {
        printf("두 수 중에 작은 수는 %d\n", b);
    }
    else
    {
        printf("두 수 중에 작은 수는 %d\n", a);
    }
    return 0;
}

2. 10개의 정수를 입력받아 최솟값과 최댓값을 출력하는 코드를 작성하시오.

답:

//10개의 정수를 입력받아 최솟값과 최댓값을 출력하는 코드
#include <stdio.h>
int main(void)
{
    int num;
    int n;
    int min, max;
    printf("10개의 정수 입력하세요.\n");
 
    printf("1번째:");
    scanf_s("%d", &num);
    min = max = num;//처음 입력받은 값을 최솟값, 최댓값으로 설정
    for (n = 2; n <= 10; n++)
    {
        printf("%d번째:", n);
        scanf_s("%d", &num);
        if (min > num)
        {
            min = num;
        }
        if (max < num)
        {
            max = num;
        }        
    }
    printf("최솟값:%d 최댓값:%d\n", min, max);
    return 0;
}

3. 정수를 입력받아 약수를 출력하는 코드를 작성하시오.
답:

//정수를 입력받아 약수 출력
#include <stdio.h>
int main(void)
{
    int n;
    int i;
    printf("정수 입력:");
    scanf_s("%d", &n);
 
    printf("%d의 약수", n);
    for (i = 1; i <= n; i++)
    {
        if (n%i == 0)//나누어서 나머지가 0일 때
        {
            printf("%d ", i);
        }
    }
    printf("\n");
 
    return 0;
}

4. 1부터 1000 사이에 소수(Prime Number, 1과 자기 자신만 약수인 수)를 출력하는 코드를 작성하시오.
답:

//1~1000 사이에 소수(Prime Number)를 출력
#include <stdio.h>
int main(void)
{
    int n;
    int i;
    int check;
    for (n = 1; n <= 1000; n++)
    {        
        for (i = 2; i < n; i++)//n이 소수면 i가 n이 되면 반복문이 끝남
        {
            if (n%i == 0)//i는 n의 약수
            {     
                break;//i가 n보다 작은 상태로 반복문 탈출
            }
        }
        if (i == n)//소수임
        {
            printf("%3d ", i);
        }
    }
    printf("\n");
    return 0;
}
 

5. 정수를 입력받은 후에 이진수로 출력하는 코드를 작성하시오.
답:

//정수를 입력받은 후 이진수로 출력
#include <stdio.h>
int main(void)
{
    int n;
    int i;
    printf("정수 입력:");
    scanf_s("%d", &n);
 
    for (i = 31; i >= 0; i--)
    {
        if (n & (1 << i))
        {
            putchar('1');
        }
        else
        {
            putchar('0');
        }
    }
    putchar('\n');
    return 0;
 
}

6. 정수를 입력받은 후에 다음과 같이 화면에 출력하는 코드를 작성하시오.

답:

//모래 시계 출력
#include <stdio.h>
int main(void)
{
    int n;
    int line,space, star;
    printf("정수를 입력:");
    scanf_s("%d", &n);
 
    for (line = n; line >= 1; line--)
    {
        for (space = 0; space < (n-line); space++)
        {
            putchar(' ');
        }
        for (star = 0; star < (2 * line - 1); star++)
        {
            putchar('*');
        }
        putchar('\n');
    }
    for (line = 2; line <= n; line++)
    {
        for (space = 0; space < (n - line); space++)
        {
            putchar(' ');
        }
        for (star = 0; star < (2 * line - 1); star++)
        {
            putchar('*');
        }
        putchar('\n');
    }
    return 0;
}