CodeUp C언어 기초 100제 [기초 - 종합] 1078~1084

jychan99·2021년 8월 19일
0
post-thumbnail
  1. 정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
#include <stdio.h>
int main()
{
    int x,i,sum=0;
    scanf("%d",&x);
    for(i=1;i<=x;i++)
    {
        if(i%2==0)
        sum+=i;
    }
    printf("%d",sum);
    return 0;
}

짝수만 더하려면 if(i%2==0) 조건을 걸면 짝수만 더해진다.

  1. 'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.
#include <stdio.h>
int main()
{
    char c;
    while(1)
    {
        scanf("%c ",&c);
        printf("%c\n",c);
        if(c=='q')
        break;
    }
    return 0;
}

while(1)은 무한루프이다.
무한루프에 q가 입력이 되면 break를 걸어준다.

  1. 1, 2, 3 ... 을 계속 더해 나갈 때,
    그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
    계속 더하는 프로그램을 작성해보자.
    1, 2, 3, 4, 5 ... 를 순서대로 계속 더해 합을 만들어가다가,
    입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다.
#include <stdio.h>
int main()
{
    int x,i,sum=0;
    scanf("%d",&x);
    for(i=1;i<=x;i++)
    {
        sum+=i;
        if(sum>=x)
        {
            printf("%d",i);
            break;
        }
    }
    return 0;
}

for반복문과 if조건문으로 쉽게 풀수있다.

  1. 1부터 n까지, 1부터 m까지 숫자가 적힌
    서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.

입력
주사위 2개의 면의 개수 n, m이 공백을 두고 입력된다.
단, n, m은 10이하의 자연수

출력
나올 수 있는 주사위의 숫자를 한 세트씩 줄을 바꿔 모두 출력한다.
첫 번째 수는 n, 두 번째 수는 m으로 고정해 출력하도록 한다.

슬슬 응용이되는 문제가 나오는것 같다.

#include <stdio.h>
int main()
{
    int n,m,i,j;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            printf("%d %d\n",i,j);
        }
    }
    return 0;
}

주사위의 수를 출력할때 2개의 주사위를 모두 출력해야하기때문에
2차원배열을 사용한다.

  1. A, B, C, D, E, F 중 하나가 입력될 때,
    1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
    (단, A ~ F 까지만 입력된다.)
#include <stdio.h>
int main()
{
    int hex;
    int i;
    scanf("%X",&hex);
    for(i=1;i<16;i++)
    {
        printf("%X*%X=%X\n",hex,i,hex*i);
    }
    return 0;
}

16진수를 입력받거나 출력할때는 (문제에 A~F까지만 입력된다라고 나와있기때문에)%X를 쓴다.

  1. 3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자.

입력
10 보다 작은 정수 1개가 입력된다.
(1 ~ 9)

출력
1 부터 그 수까지 순서대로 공백을 두고 수를 출력하는데,
3 또는 6 또는 9인 경우 그 수 대신 영문 대문자 X 를 출력한다.

369의 완벽한 프로그램이라고 보기엔 어렵지만 나중에 더 완벽한 369게임을 만들 수 있을것이다

#include <stdio.h>
int main()
{
    int x,i;
    scanf("%d",&x);
    for(i=1;i<=x;i++)
    {
        if(i%3==0)
        printf("X ");
        else
        printf("%d ",i);
    }
    return 0;
}

369게임은 숫자에 3,6,9가 들어가면 박수를 치는게임이다.
3의 배수일때 박수를 치는게임이 아니다.
그래도 지금은 입력받을 정수의 범위가 매우작기때문에 3의 배수일때 X를 출력하도록 했다.
제대로 하려면
if(i==3 || i==6 || i==9)조건문을 붙이면 될것이다.

  1. 빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
    (빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)

주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.

입력
빨녹파(r, g, b) 각 빛의 강약에 따른 가짓수(0 ~ 128))가 공백을 사이에 두고 입력된다.
예를 들어, 3 3 3 은 각 색깔 빛에 대해서 그 강약에 따라 0~2까지 3가지의 색이 있음을 의미한다.

출력
만들 수 있는 rgb 색의 정보를 오름차순(계단을 올라가는 순, 12345... abcde..., 가나다라마...)으로
줄을 바꿔 모두 출력하고, 마지막에 그 개수를 출력한다.

#include <stdio.h>
int main()
{
    int r,g,b,i,j,k,cnt=0;
    scanf("%d %d %d",&r,&g,&b);
    for(i=0;i<r;i++)
        for(j=0;j<g;j++)
            for(k=0;k<b;k++)
            {
                printf("%d %d %d\n",i,j,k);
                cnt++;
            }
    printf("%d",cnt);
    return 0;
}

3가지 색깔을 출력해야하므로 3차원 배열을 이용한다.
k가 한바퀴돌면 j가 한바퀴돌아가고, j가 한바퀴돌면 i가 한바퀴돌아가는 구조이다.
이러면 모든 경우의수가 돌아간다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐍

0개의 댓글

관련 채용 정보