Hugh_휴 님의 블로그

C언어 코드 공부2(while, do_while, star) 본문

실습 연습

C언어 코드 공부2(while, do_while, star)

Hugh_휴 2026. 4. 3. 10:34

어렵다..

“While2.c” - 얍삽이(결과만 맞으면 돼…. 그래도 while 써보자.)

#include <stdio.h> //stdio.h - 헤더 이름. printf를 쓰기 위해 필요함.

int main(void)//int(integer): 결과값을 정수로 돌려준다는 이야기. main: 1개만 있어야 하고, 시작하는 곳.
//void: 빈공간을 뜻하는데, 프로그램 시작 시 외부에서 전달받는 재료가 없다는 이야기.
{
    int num1; //어느 수가 들어올지 모르겠지만, 숫자 넣을 수 있는 공간
    int num2 = 14;//20을 넣었을 때, 결과값을 6으로 받기 위해 만든 것.
    {
    printf("숫자를 입력하시오 : ");//결과창에 문자가 나올 수 있게 ""안에 내용 작성함.
    scanf("%d", &num1);//사용자의 입력을 받아 num1의 위치에 뭐가 들었는지 표현하기 위해 &을 쓴다. scanf 함수와 같이 쓴다.
    printf("%d", num1-num2);//사용자가 앞서 입력한 수와 지정한 수를 빼준다.
    scanf("%d - %d = %d\n", num1, num2, num1 - num2);//빼기를 한 결과값을 보여준다.
    }

    return 0;//종료신호.
}

 

<용어>

scanf: ("형식 지정자", &변수명);

 

“While2.c” - 다시 도전(책만 보고 while문 사용 완성)

#include <stdio.h>

int main(void)
{
    int value = 20; //While 초기값. while문 반복을 통해 점점 줄어든다.
    int result; //최종 결과값.
    
        printf("숫자를 입력하시오 : ");//문자 입력.
        scanf("%d", &value);//사용자의 입력을 받아 value의 위치에 뭐가 들었는지 표현하기 위해 &을 쓴다.
        
        while(value>6)//조건문. 6보다 큰 놈들만 통과 가능.
        {
        --value;//변화조건. -1씩 줄어드는 걸 반복한다. 위에서 7에서 걸릴 예정.
        }
        result = value;//마지막 반복 결과값을 받기 위한 조건.
        printf("%d\n", result);//결과 출력.

        return 0;//종료신호.
    }

 

“While2.c” - 책보고 완료

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int number, count=1, result=1;//number: 반복문을 멈춰줄 숫자. count: 더해줄 숫자 result: 지금까지 더한 합계

    printf("숫자를 입력하시오 : ");
    scanf("%d", &number);

    while (result < number)
    {
        ++count;//다음 수로 넘어가기 = +1
        result +=count;//새로운 숫자를 지금까지의 합에 보태자
    }
    printf("정답: %d\n", count);
    return 0;
}

 

“While3.c”(해설 보니 이해됨)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int number = 0;//아무값도 안넣으면 쓰레기값이 들어갈 수 있어 0을 넣어줌.
    while(number>=0)//while 조건문.0이랑 같거나 크면 계속 반복하겠다는 조건.
    {
        printf("숫자를 입력하시오 : ");
        scanf("%d", &number);
        if(number<0) break;//만약 사용자가 0보다 작은 값을 넣게 된다면 반복문 끝.
        printf("입력한 숫자는 %d입니다.\n", number);
           
    }

    return 0;
}

 

<용어>

while문이 조건이 맞을 때까지 반복, if문은 조건이 맞을 때 딱 한 번 ****실행

 

“do_while2.c”(조금 이해됨)

 

이걸 아래와 같이 바꿨다.

while 문은 초기식 → 조건식 → 반복 실행 명령문 → 조건식 결과 변경 명령문

do_while문은 초기식→ 반복 실행 명령문 → 조건식 결과 변경 명령문 → 조건식

위치를 바꿔주면 된다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int cnt =0, sum =0;//cnt:짝수가 몇개인지 센다. sum: 합계
    int num, avg;//num: 입력할 수 담을 공간. avg: 나중에 계산할 평균값.
    do
    
    {
        printf("정수를 입력하시오 : ");
        scanf("%d", &num);
        if(num == 0) break;//만약 입력한 수가 0과 같다면 반복 끝.
        if(num % 2 ==1) continue;//만약 입력값에 2를 나눈 나머지가 1과 같다면 계속해서 반복.
        sum += num;//sum = sum+num
        cnt++;//+1 증가
    } while (1);

    avg = sum /cnt;//합계 나누기 짝수 갯수.
    printf("입력된 짝수의 개수는 모두 %d개 입니다\n", cnt);
    printf("입력된 짝수의 합계는 %d이고 평균은 %d입니다\n", sum, avg);
    return 0;
}

 

“gugudan1.c”(조금 이해됨)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    int number;//구구단 몇단을 보고 싶은지 정함. 입력한 숫자 저장.
    int i;//반복 횟수 세는 역할.

    printf("숫자를 입력하시오 : ");
    scanf("%d", &number);

    
    for(i=1; i<10; i++)
    //순서대로 초기식(1), 조건식(2), 증감식(3). 초기식은 딱 한번만 실행.
    //조건식은 참이면 아래로 내려감. 증감식은 내용 실행 후에 증감을 적용함.
    //아래 내용이 (4)번이라면 작동 순서는 1-2-4-3-2-4-3...
    {
        printf("%d*%d = %d\n", number, i, number*i);//입력한 숫자, 계속 변하는 숫자, 계산 결과.
    }

    return 0;
}

 

 

“star1.c”(이해 조금 되나 직접 만들지 못함;)

#include <stdio.h>

int main(void)
{
    int i, j, k;//i는 몇번째 줄인지 보여줌, j는 공백, j는 별의 몇개 놓을지 정하는 것.

    // i는 줄 번호이자 그 줄에 찍을 '별의 개수'입니다. (10부터 1까지)
    for (i = 10; i >= 1; i--)
    {
        // 1. 공백 출력: 줄이 내려갈수록 공백이 하나씩 늘어납니다.
        for (k = 1; k <= 10 - i; k++)//*만들기 전 공백 몇개 만들지 알려주는 값.
        {
            printf(" ");
        }

        // 2. 별 출력: i가 10일 땐 10개, 9일 땐 9개... i만큼 찍습니다.
        for (j = 1; j <= i; j++)//
        {
            printf("*");//별 출력
        }

        printf("\n"); // 줄바꿈
    }

    return 0;
}

 

직접 만들지 못해서 제미나이 이용..

 

 

#include <stdio.h>

int main(void)
{
    int i, j, k;

    // 1. i는 10부터 1까지 줄어듭니다 (총 10줄)
    for(i = 10; i >= 1; i--) 
    {
        // 2. 먼저 공백을 찍습니다 (줄어드는 i에 맞춰 공백은 늘어남)
        for(j = 1; j <= 10 - i; j++) 
        {
            printf(" "); 
        }

        // 3. 그다음에 별을 찍습니다 (i의 개수만큼)
        // 별 뒤에 공백을 하나 추가(" *")하면 균형 잡힌 모양이 됩니다!
        for(k = 1; k <= i; k++) 
        {
            printf("* "); 
        }

        // 4. 한 줄 끝났으니 줄바꿈
        printf("\n");
    }
    return 0;
}

 

<실패의 흔적>