일지

Day 16 반복문

joo_coding 2025. 3. 12. 11:45

p.221

6. C의 제어문: 루프

 

반복문 종류

1. for -------- 진입조건 루프

2. while ----- 진입조건 루프

3. do whilt -- 탈출조건 루프

 

for
while
do while

 

 

< 별찍기 >

 

 

 

#include <stdio.h>
#include <string.h>

int main()
{
    char star = '*';
    // 별찍기
    // 1
    for (int i = 0; i < 5; i++) //0.1.2.3.4
    {
        for (int j = 0; j <= i; j++)
        {
            printf("*");
            
        }
        printf("\n");
    }

    // 2
    printf("\n");
    for (int i=0; i<5; i++)
    {
        for (int j = 5; j > i ; j--)
        {
            printf("*");
        }
        printf("\n");
    }

    // 3
    printf("\n");
    for (int i=0; i<5; i++)
    {
        for (int j = 5; j > i ; j--)
        {
            printf(" ");
        }
        for (int k=0; k<=i; k++) //         0
        {                        //       1 0
            printf("*");         //     2 1 0
        }
        printf("\n");
    }

    // 4
    printf("\n");
    for (int i=0; i<5; i++) //0 1 2 3 4 = 라인갯수
    {
        for (int j=0; j<i+1; j++) // 0 1 2 3 4
        {
            printf(" ");
        }
        
        for (int k=4; k>=i; k--) // 4 3 2 1 0
        {                        //   3 2 1 0
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

실행결과

 

< 프로그래밍 연습 문제 >

p.280

    // 문제1
    char ch[26];
    for (char ch = 'A'; ch < ('A' + 26); ch++)
    {                       // 왜 표현식을 이렇게 써야할까? p.263 변형중첩루프 확인
        printf("%c", ch);
    }
    printf("\n");
    // 문제2
    for (int i = 1; i < 6; i++)
    {
        for (int j = 0; j < i; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    // 문제6
    int start, end; // 시작,마감
    scanf("%d", &start);
    scanf("%d", &end);
    for (start; start<end+1; start++)
    {
        printf("%d %d %d\n",start, start*start, start*start*start);
    }
    printf("\n");
    // 문제7 - 단어를 입력받은 뒤, 거꾸로 출력 
    char words[30];
    printf("단어 하나를 입력하세요: ");
    scanf("%s", words);

    int w = strlen(words);
    printf("%d\n", w);

    // strlen써서 몇글자인지 알아내고, 마지막 인덱싱을 찾아 
    for ( words[w]; w >= 0; w--) // strlen %zd
    {
        printf("%c", words[w]);
    }
    printf("\n");
    // 문제8
    float one,two;
    int status = 1;

    while (status == 1) // 대입연산 기호 중요
    {
        printf("2개의 실수를 입력하세요: ");
        status == scanf("%f %f",&one,&two);

        printf("결과: %f\n", (one-two)/(one*two));
        // 반복해야되니까 결과는 반복문 안쪽에
    }
    // 문제10
    int min, max;
    printf("하한과 상한을 입력하세요: ");
    scanf("%d %d", &min, &max);
    int total=0;

    for(int i = min; i <= max; i++ )
    {
        total += (i*i);
    }
    printf("합계: %d", total);

    return 0;
}

 

문제1

 

문제8-1

 

문제5

이거는 가운데 별만 찍는거
가운데 알파벳으로