[c언어] 반복문 주의하기

yed·2021년 6월 25일
0

반복문

  • for(초기식 ; 조건식 ; 증감식)

    for문은 조건을 만족할때까지 반복한다.
  • while(조건)

    while문은 조건이 참일동안 반복한다.

두 개가 가장 대표적인데 동작은 비슷하지만 용도가 조금씩 달라 문제를 보고 어떤것을 적용해야 효율적인지 판단할 줄 알아야 한다고 합니다,,^^

과연 6개월 뒤엔 판단할 수 있을까요!?🤔

반복문은 c언어 뿐만 아니라 모든? 내가 아는 한 대부분의 프로그래밍 언어에서 다 나오고 동작도 똑같기때문에! 잘 짚고 넘어가야한다고 생각합니다.

codeup에서 문제를 풀면서 어려웠던 코드를 보겠습니다~


#include <stdio.h>

int main(){ // codeup 1089
	int i, a, d, n, sum; // 시작값, 등차, n번째
	scanf("%d %d %d", &a, &d, &n);
	// a, a+d, a+d+d, a+d+d+d ... a+(n-1)d
	
	for(i=0;i<n;i++){
		sum = a+(i*d);
		printf("%d ",sum);

	}
	printf("\n>>%d",sum);
	
	return 0;
}

수열 문제입니다!

제시된 수열 문제 중 가장 난이도가 낮지만 꽤나 애먹었던 문제ㅠ

"반복문은 문제의 패턴을 찾아내는게 중요합니다."

강사님이 강조하셨을 때 그냥 적어만 뒀는데 직접 문제를 풀면서 패턴의 중요성을 느끼게 된 문제라 기록해두고싶었어요

무작정 코드부터 치면서 문제를 풀려고 했는데 이 수열문제는 그렇게 하려니깐 반복문을 어떻게 사용해야할지 모르겠더라고요

다시 문제로 돌아가 천천히 수식을 적으면서 패턴을 찾았고 for문에서 변수i가 무슨 역할을 해야하는지를 파악하고나서야 코드를 완성할 수 있었습니당.. (;´・`)>


#include <stdio.h>

int main(){ // codeup  1078 초기화는 반드시 
	int n,i, sum;
	scanf("%d", &n);
	
	for(i=1;i<=n;i++){
		if(i%2 == 0){
			sum = sum+i;
			printf("%d ", sum);
		}
	}
	printf("\n>>%d", sum);
	
	return 0;
} 

이건 짝수값들만 더한 결과를 출력하는 문제입니다.

나름 쭉쭉 코드를 써내린 문제인데요
왜 여기 있느냐?

무엇 때문인지 계속 홀수 값이 출력되더라고요 분명 나머지가 0이면 짝수가 나오는게 맞잖아요..?

동공지진((👀))

계속 홀수만 나오니깐 %가 나머지 연산자가 아니였던건지.. 스스로를 의심하는 지경까지..

그 런 데!

바로 제 코드의 치명적인 단점.
알아차리셨나요 ?
변수 초기화가 원인이었습니다...

초기화되지않은 sum을 사용했기 때문에 최초 for문 수행 시 sum이 0이 아닌 채로 덧셈이 시작되었고 그 결과 기존 sum값때문에 홀수만 출력된거였습니다!

sum=0;

sum을 0으로 초기화하니까 코드는 정상적으로 수행되었답니다!


수열문제도 그렇고 이전에 풀었던 모든 문제가 초기화없이 진행하고 있었는데 용케도 반복문까지 오류한번 없이 넘어왔네요ㅎㅎㅎㅎ

운이 좋았구나..

변수 초기화는 기본중의 기본!! 잊지마세요~

초기화안하면.. 저처럼 됩니다(˘̩̩̩ε˘̩ƪ)


c언어 사전 학습은 이렇게 반복문까지로 끝을 맺었습니다
이제 다음주부터는 본격적인 웹개발자 교육과정이 시작되는데요
html css js부터 sql java까지..! 멀고도 험한 과정이 기다리고 있습니다

과연 제가 잘 버틸 수 있을까요? 아니 그전에 velog에 꾸준히 기록할 수는 있을지 ?

과연 !!!

함께 지켜보기👋

profile
6개월 국비과정 기록하기

0개의 댓글