블로그 이미지
송시혁

calendar

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive


while문과 for문

다음예제는 while문과 for문을 비교하기 위해 사용한것이다. 출력은 똑같이 1 2 3 4 5로 세로로 나온다. 아래 소스를 for문과 while문의 형태를 보고 비교해보자. (while은 주석문 처리하였다. for문이 실행되는지 확인하기 위해서이다. )


#include <stdio.h>
int main()
{
  int iCnt;
  iCnt = 1;
  
/*  while(5>=iCnt)  
  {  
    printf("%d\n", iCnt);
    ++iCnt;
  }  
*/

  
  for(iCnt =15>=iCnt; ++iCnt)
  {
    printf("%d\n", iCnt);
  }

  
  return 0;

}

for문 형식

for(초기식; 조건식; 증감식)
{
    명령문(내용)
}
마찬가지로 뒤에 명령문이 한 줄일때는 생략이 가능하지만, 알아보기 쉽게 하도록

 while문과 마찬가지로 중괄호를 무조건 삽입하는게 낫다.


p3-23예제

#include <stdio.h>
#include <conio.h>

int main()
{
  char ch;
  int i;
  
  printf("Please enter any character : ");
  for(i=0;(ch=getche()) !='$';i++)
  {
    printf("\nYou typed : %c\n", ch);
    printf("Please enter any character ; ");
  }
  putchar('\n');
  return 0;

}
이 예제에서는 for문 형태를 유심히 보자.

for( i=0; -> 이부분은 변수를 지정한거
   조건식 -  (ch= getche()) - 이부분이 for문이 실행되는 조건이다.
   i++ 참/거짓이되는 조건.
   

다음은 for문 내부에 if문이 중첩이 되어있는 프로그램 소스이다.

 1부터 100까지의 짝수만을 출력하되 5섯줄 내려쓰는 형태로 출력한다.


#include  <stdio.h> 
int main() 
{
  int i;


  for (i  = 1;  i <= 100;  i++)  // 100번 실행
    if (i % 2  == 0)  
    {  // 짝수임을 판단
      printf ("%5d", i);  // 정수를 출력
      if (i  % 5  == 0) printf  ("\n");  // 다섯 숫자마다 줄

    }
  return 0;
}


for문에
1. 변수 i를 1로선언.
2. 조건식 i<= 100;으로 100보다 크거나 같으면 실행된다는 조건.
3. i++증감식 i를 if문이 다실행되고 다시 실행할 때, 그때 증감된다. (후치문)






for문을 이용한 1~200까지 범위에서 다음 수열을 출력하는 프로그램을 구하시오.

1  2  3  5  8  13   21   ..........    144

일단

1. 1~200까지 범위지정

2. 수의 규칙 파악하기

  1과 2를 더해서 3이된다. 즉, 앞수 + 앞앞수 = 현재값

공식에서 3개의 변수를 선언해야한다고 예상할 수 있다. 

3. 초기값 예외. 초기값은 따로 지정한다.

4.공식을 알고 원리를 알았으면 기본적인 베이스를 다 깔고 for문작성에 집중한다.

#include <stdio.h>
int main()
{  
  int ppnum;
  int pnum;
  int sum;
  ppnum =1;
  pnum =2;
  printf(" %d %d ", ppnum, pnum);
  
  for(sum=0;sum<200;)
  {
    if(sum>200)
    {
      break;
    }
    
    
    sum = ppnum + pnum;
    printf("%3d ", sum);
    ppnum = pnum;
    pnum = sum;
  
  }
  
  return 0;
}



약간 다른 형태의 소스


 

#include <stdio.h>
int main()
{  
  int ppnum;
  int pnum;
  int sum;
  ppnum =1;
  pnum =2;
  printf(" %d %d ", ppnum, pnum);
  
  for(sum=0;sum=ppnum + pnum<=200;)
  {
    
    
    sum = ppnum + pnum;
    printf("%3d ", sum);
    ppnum = pnum;
    pnum = sum;
  
  }
  
  return 0;
}
posted by 송시혁