[C] 기준에 부합할 때 까지 계속.

장세민·2022년 7월 16일
0

📝 TIL

목록 보기
9/40
post-thumbnail

요즘 오전/오후 운동을 강제로 시켜서 체력이 부족하다.
처음에 3급만 나와도 강제로 시키지 않는다고 했는데,
2급으로 올려도, 1급으로 올렸는데도! 강제로 시킨다.

기준에 만족할 때까지, 계속해서 운동을 시키는 것처럼
for문도 반복조건에 부합하면 문장을 반복한다.

for문 형식

for문을 실행시켰을 때,
초기화 한 번 실행하고,

  • 반복조건이 참
    반복할 문장 -> 증감문 순으로 반복되고,

  • 만약 반복되다가 반복조건에 부합하지 않으면 for문을 끝내고 다음 문장으로 넘어간다.

for문을 분석해보자

이 간단한 for문 예시의 헤더 부분은
i를 1부터 4가 될 때까지 1씩 증가시켜가며 {} 부분을 반복 실행하는 것으로 해석한다.

for문은 주의사항이 있다.

  • for (i = 1; i <= 4; i++)
    () 안은 반드시 세미콜론으로 세 부분(초기화; 반복조건; 증감문)으로 구분해야한다.

  • 위의 for문을 끝낸 후 i 값은 i++에 의해 i가 5가 되어 i <= 4 조건이 거짓이어서 for문을 벗어나는 것이다. i는 4가 아니다!

for문의 제어변수

for문의 헤더 부분에 있는 제어변수를 잘 활용하면
무언가를 반복했을 때 위의 결과처럼 변하는 부분을 해결할 수 있다.

for문에서 제어변수가 뭔데!
바로 위에서 본 for문 예시의 i에 해당하는 것이다.

강제로 운동 당하는 요즘 내 상황을 가지고 한 번 실습 해보자.

  • 필요한 변수:

for 제어변수 i

  • 급수는 3급부터 1급.


매우 얹짢다.

구구단 출력을 해보자.

  • 필요한 변수:

for 제어변수 i
출력할 구구단의 단 n

#include <stdio.h>
 
int main()
{
	int i, n;
 
	printf("구구단 중 몇 단?");
	scanf("%d", &n);
 
	for (i=1; i <=9 ; i++)
	{
		printf("%d * %d = %d\n", n, i, n*i);
	}
 
	return 0;
}
 

EZ

이번에는 150cm~185cm까지 5단위로 표준체중 표를 만들어보자.

  • 필요한 변수:
    height, s_weight(표준체중)

  • 키에 맞는 표준체중 = (height-100)*0.9

#include <stdio.h>
 
int main()
{
	int height, s_weight;
 
	s_weight = (height-100) * 0.9;
 
	for (height = 150; height <= 185 ; height += 5)
	{
		printf("키: %d(cm), 표준체중: %d(kg) 입니다.\n", height, s_weight);
	}
 
	return 0;
}
 

가보자잇

..? 뭔가 대단히 잘못된 것 같다.

1시간동안 붙잡고 뭐가 잘못된 건지 계속 고민했는데..
내가 매우 기본적이면서도 중요한 실수를 했다.

s_weight = (height-100) * 0.9;
 

위 식에서 알 수 있듯이
s_weight는 결과값이 실수로 도출될 것이다.

근데 나는 ?

int height, s_weight;
 

무의식적으로 s_weight를 정수형 변수로 선언해버린 것..

이제 문제를 알았으니 s_weight를 실수형으로 선언해주고,
표준체중: %d%.1lf로 바꿔주자.

#include <stdio.h>
 
int main()
{
	int height;
	double s_weight;
 
	s_weight = (height-100) * 0.9;
 
	for (height = 150; height <= 185 ; height += 5)
	{
		printf("키: %d(cm), 표준체중: %.1lf(kg) 입니다.\n", height, s_weight);
	}
 
	return 0;
}
 

이제는 되겠지

;;;;

생각해보니까, 뭔가
s_weight = (height-100) * 0.9;
위치가 잘못된 것 같다.

for문에서 height를 150cm부터 185cm까지 반복해주는데
s_weight를 for문 보다 앞에서 정의를 해버리면 같은 결과 값이 계속 나오는 게 당연한거 아닐까

시도 해보자 일단 ㄱㄱ

#include <stdio.h>
 
int main()
{
	int height;
	double s_weight;
 
 
	for (height = 150; height <= 185 ; height += 5)
	{
		s_weight = (height-100) * 0.9;
		printf("키: %d(cm), 표준체중: %.1lf(kg) 입니다.\n", height, s_weight);
	}
 
	return 0;
}
 
 
 

!!!

기본기의 중요성을 깨닫고, 추가적인 생각을 할 수 있었던 공부였다. 😁

profile
분석하는 남자 💻

0개의 댓글