[C] 일단 써봐!

장세민·2022년 7월 22일
0

📝 TIL

목록 보기
11/40
post-thumbnail

글을 10번만 적는다면,

for (i=1; i<=10; i++)
      printf("글을 써라")

이런 식으로 표현 할 수 있다.

근데 만약 외울 때 까지 적는다면?

for (i=1; i<=?; i++)
      printf("글을 써라")

몇 번 반복해야 하는 지 알 수 없다.
이럴 때 while문을 사용하면 알 수 있다.

while문 형식

while문은 반복 조건이 참이면 반복하고,
거짓이면 다음 문장으로 넘어간다.

따라서, 반복 횟수는 알 수 없지만
특정 조건을 만족하는 한 계속 반복하는 것으로 해석할 수 있을 때 사용한다.

처음부터 반복 조건이 거짓이라면 한 번도 반복하지 않게 된다.

while문을 이용해보자.

1~n의 합이 처음으로 100을 넘게 하는 n 찾기

앞의 예시처럼 1부터 몇까지 더해야 100이 넘는 지 모르는 문제이다.

즉, sum이 100을 넘지 않으면 sum에 n을 계속 더한다.

#include <stdio.h>
 
int main()
{
	int n, sum;
 
	n = 0;
	sum = 0;
	while (sum <= 100)
	{
		n++;
		sum = sum + n;
	}
 
	printf("1~%d의 합 = %d", n, sum);
 
 
	return 0;
}
 

실행해보자

이상 무!

나는 이 문제를 풀 때 n을 0으로 잡아주고,
n을 더한 후 sum을 계산해줬지만,

작성자에 따라서 sum을 먼저 잡아주고,
1을 초기값으로 설정할 수도 있다.

그럴 때는

#include <stdio.h>
 
int main()
{
	int n, sum;
 
	n = 1;
	sum = 0;
	while (sum <= 100)
	{
		sum = sum + n;
		n++;
	}
 
	printf("1~%d의 합 = %d", n-1, sum);
 
 
	return 0;
}

이런 식으로 식을 바꿔 표현해줘야 오류가 생기지 않는 다는 것 기억하자!

do-while문

사람들은 아플 때 병원에 가서 약을 처방 받는다.
약을 지으면서 얼마나 먹어야 하냐 물어보면,
일단 복용하면서 상태가 호전되는 지 지켜보라고 한다.

do-while문은 이렇게 일단 반복해야 할 내용을 먼저 실행하지만, 반복 횟수를 모를 때 사용한다.


즉, 저 '?'에 들어가는 값을 지금 지정할 수 없을 때 사용하는 것이다!

do-while문을 이용한 프로그램

온라인 쇼핑 하다보면,

"45,000원 이상 구매 시 2500원 배송비 무료"

이런 안내를 많이 볼 수 있다.

배송비가 포함되는 경우와 포함되지 않는 경우
모두 계산할 수 있는 프로그램을 작성해보자.

구매 개수를 입력받는 것이 목표이므로 무조건 한 번은 입력을 수행해야 한다.
따라서, 구매 개수가 0 이하라면 새로 입력받도록 반복해야 한다.

-> do-while?

  • 필요한 변수:
    개당 가격 cost
    개수 n
    배송비 delivery
    총 결제액 total_cost
#include <stdio.h>
 
int main()
{
	int cost, n, delivery, total_cost;
 
	n = 0;
	cost = 4500;
	delivery = 2500;
 
	printf("1개 가격: %d원 \n", cost);
	printf("10개 이상 구매 시 %d원 배송비 무료 \n\n", delivery);
 
	do
	{
		printf("구매 개수는?");
		scanf("%d", &n);
	} while (n <= 0);
 
	total_cost = cost * n;
 
	if (n < 10)
		total_cost += delivery;
 
 
	printf("총 결제액은 %d원 입니다.", total_cost);
 
 
	return 0;
}

상술에 넘어가지 말고 잘 따져보자.

do-while문 TIP

나처럼 코딩 초보들은 반복문을 작성 하려면 어떻게 반복시켜야 할 지 감이 안 올 것이다.
어떻게 하면 좀 더 수월할까?

(1) 일단 반복을 생각하지 말고 코드 작성

#include <stdio.h>
 
int main()
{
	int n;
 
	printf("구매 개수: ");
	scanf(%d, &n);
 
	return 0;
}

만일 0 이하의 값이 입력되면 새로 입력 받아야한다.
그럼 일단 이 코드 부분을 do-while 본체로 포함시키고
반복 해야하는 while(조건)을 생각해본다.

do
{
    printf("구매 개수: ");
    scanf("%d", &n);
 
} while (n <= 0);

이렇게!

for...while...do-while.. 코린이는 어떤 반복문을 어떤 질문에 작성하는 것이 가장 적절한 지 헷갈린다..

그럼 정리하자!

  • for 문

for문은 예시처럼 1~10까지 10번 같이 반복횟수가 정해질 때 사용한다.

  • while 문

while문은 반복횟수는 모르지만,
어떤 조건을 만족하는 한 반복할 때 사용한다.

  • do-while 문

do-while문은 예시처럼 무조건 한 번은 반복하고,
이후로는 조건을 만족하는 한 반복할 때 사용한다.

끗.

profile
분석하는 남자 💻

0개의 댓글