[C언어] 반복문 (1) _ while 문
✔ 반복문의 필요성
만약 "HELLO WORLD" 를 총 열 번 출력하고 싶다면 어떻게 할 것인가 ? 반복문을 모르는 상태라면 printf 함수 호출문을 열번 적어주어야한다. 반복문은 이러한 비효율성에서 벗어나 효율적으로 코드를 작성할 수 있게 도와준다.
✔반복문의 종류
반복문의 종류로는 1) while 문 2) do ~ while 문 3) for 문 이 있다.
for문과 while 문은 서로 변환이 가능하여 반복문을 작성할 때 어느 쪽을 선택해도 무방하나, for 문은 반복횟수를 명확히 알고 있을 때 주로 사용하며 while 문은 조건에 따라 반복횟수를 결정해야할때 주로 사용한다.
✔ while 문
while문은 특정조건을 주고 그 조건을 만족하는 동안, 특정영역을 계속해서 반복하는 구조이다.
while 문의 기본 구조를 먼저 살펴보자.
while (조건문)
{
반복할 로직 수행
}
즉, while 뒤에 오는 조건문이 만족(TRUE 일때) 할 동안 중괄호 {} 내부의 로직을 수행하는 것이다.
기본 예제를 통해 살펴보자 !
while (num <3) // 반복의 조건은 num <3
{
printf("Hello World \n");
num ++;
}
위에 int num =0; 으로 num의값을 0인 상태로 위의 while 문을 돌린다고 가정하였을 때
1) num = 0은 3보다 작은 상태이니 출력값을 출력하게 된다.
2) 또한 num ++; 으로 인해 + 1 의 상태, 즉 1이 된다.
3) 실행이 완료되면 다시 반복의 조건을 확인하러 올라간다.
위의 로직을 (num<3)을 충족할때 까지 반복하게 된다. 같은 예시를 처음부터 기재한게 밑의 코드이다.
#include <stdio.h>
int main(void)
{
int num=0; // 사용할 num 값을 0으로 설정
while (num<5)
{
printf("Hello World \n");
num ++;
}
return 0;
}
예제 1) 구구단 출력하기
프로그램 사용자가 입력한 정수를 바탕으로 구구단을 출력하는 예제이다.
먼저 구구단을 통해 결과값을 생각해보면 변수 2개가 필요하다. ( ex. 3* 7 = 21 이라 할때 단을 뜻하는 3과 1 ~ 9까지를 입력할 수 있는 메모리가 필요할 것이다.)
즉, 변수 2개 중 단을 의미하는 dan 이라는 변수에 사용자가 입력한 변수를 scanf 함수를 통해 넣자.
또 num 이라는 변수를 만들어 while 문을 통해 1~9까지를 넣어주자.
#include <stdio.h>
int main()
{
int dan = 0;
int num = 1;
printf("몇 단: ");
scanf("%d",&dan); // 사용자가 몇단인지 입력
while (num<10)
{
printf("%d * %d = %d", dan, num, dan*num);
num ++;
}
return 0;
}
예제 2) 1부터 1000까지의 합 구하기
1부터 1000까지의 합을 구하려면 먼저 총합을 의미하는 sum의 변수가 필요하다.
또한 while 문을 반복시켜 sum의 값에 1000까지의 숫자를 차근차근 넣어줄 i라는 변수도 만들어준다.
i라는 변수를 1로 초기화 시키고 1000까지 더해갈 수 있도록 while 문을 짜주면 된다.
#include <stdio.h>
int main ()
{
int i,sum;
i=1;
sum=0;
while (i <= 1000)
{
sum = sum +i
i++;
}
printf("합은 %d 입니다 \n",sum);
return 0;
}
예제 3) 프로그램 사용자로부터 계속해서 정수를 입력 받는다. 그리고 그 값을 계속해서 더해 나간다. 이러한 작업은 프로그램 사용자가 0을 입력할 때까지 계속 되어야하며, 0이 입력되면 입력된 모든 정수의 합을 출력하고 프로그램을 종료시킨다.
먼저 나는 1) 프로그램 사용자로부터 정수를 입력 (printf, scanf 함수 이용) -> 반복문 사용 2) sum 변수를 만들어 총 합 값 저장 3) 사용자가 0을 입력하기 전까지는 계속 while 문이 반복되어야 하므로 while 문의 조건을 ( i != 0) 로 설정 이라는 로직을 세웠다.
#include <stdio.h>
int main(void)
{
int total=0;
int num=1;
while(num!=0)
{
printf("정수를 입력하시오 (0 입력시 종료): ");
scanf("%d",&num);
total = total+num;
}
printf("입력된 정수의 총 합은 %d 입니다.\n" , total);
return 0;
}
다만 , while 문은 처음 시작할 때부터 조건검사를 진행하기 때문에 변수 num을 1로 초기화 하였다.
예제 4) 프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족시켜야 한다.
✔ 먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수만큼 정수를 입력 받는다.
✔ 평균 값은 소수점 이하까지 계산해서 출력한다.
#include <stdio.h>
int main()
{
int num; // 사용자로부터 입력받을 정수 개수 설정
printf("몇개 입력할거니? : ");
scanf("%d", &num);
int i = 1; int value; // while 문에 사용될거니 i는 1부터 / value는 정수의 값 의미
int sum = 0;
while (i <= num)
{
printf("정수를 입력하시오 : ");
scanf("%d", &value);
sum = sum + value;
i++;
}
float avg = sum / num; // 소수점까지 나와야하므로 avg를 실수로 설정해주기
printf("입력한 정수의 평균 값은 %f 입니다", avg);
}