본문 바로가기
프로그래밍

반복문_횟수가 달라지는 반복문, break와 countinue, 소수 판별 프로그램, 무한 반복문 [실습문제]

by 스텔라게이트 2023. 3. 25.

반복문 실습 

반복문_횟수가 달라지는 반복문, break와 countinue, 소수 판별 프로그램, 무한 반복문 [실습문제]

횟수가 달라지는 반복문, break와 countinue, 소수 판별 프로그램, 무한 반복문을 이용한 프로그램에 대하여 알아보겠습니다. 

실습할 반복문의 종류와 순서

1. 횟수가 달라지는 반복문

2. break 와 countinue

3. 소수 판별 프로그램 

4. 무한반복문을 이용한 프로그램

5. 실습문제1

6. 실습문제2

기존의 반복문은 아래 참조 부탁드립니다. 

2023.03.11 - [IT] - [중첩반복문] for문, while문, do-while문_쉬운 설명과 예시_쉼표연산자,break문,continue문

2023.03.11 - [IT] - [중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습

2023.03.10 - [IT] - [중첩반복문] for문 while문 if_else 포함

반응형

기존에 했었던 반복문들에 대하여 종합하여 실습해 보는 시간을 가지겠습니다. 

횟수가 달라지는 반복문 

자 아래의 그림에 맞춰서 반복문을 작성해 볼 예정입니다. 

처음에 기본 구조가 어렵지 막상하다보면 금방 작성하실 수 있으실 겁니다.

 

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

for(i=0;i<5;i++)
	{
	for(j=0;j<i+1;j++)
	{
	printf("%d",j);
	}
	printf("\n");
	}
}

프로그램의 결과는 아래와 같습니다. 

 

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

for(i=0;i<5;i++)
	{
	for(j=4;j>=i;j--)
	{
	printf("%d",j);
	}
	printf("\n");
	}
}

프로그램의 결과는 아래와 같습니다. 

 

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

for(i=0;i<5;i++)
	{
	for(j=0;j<5;j++)
	{
	if(j>=i)
	printf("%d",j);
	
	else
	printf(" ");
	}
	printf("\n");
	}
}

프로그램의 결과는 아래와 같습니다. 

반응형

break 와 countinue

break와 countinue를 이용한 프로그램을 작성해 봅시다. 

 

#include <stdio.h>
int main(void) {
int i, a; 
scanf_s("%d", &a); 

for(i=2;i<a;i++)
	{
	if(a%i==0)
	break;
	printf("%d \n",i);
	}
}

프로그램의 결과는 아래와 같습니다. 

#include <stdio.h>
int main(void) {
int i, a; 
scanf_s("%d", &a); 

for(i=2;i<a;i++)
	{
	if(a%i==0)
	continue;
	printf("%d \n",i);
	}
}

35를 입력할때 소수인 5와 7만 제외한 상태로 출력됨을 확인하실 수 있습니다. 

 

소수 판별 프로그램 

반응형

양의 정수를 입력한 후 

소수라면 "소수번호"라고 출력 

소수가 아니라면 "소수번호가 아님"을 출력  

 

#include <stdio.h>
int main(void) {
int i, a, b; 
scanf_s("%d", &a); 

b = 0; 
for(i=2;i<a;i++)
	{
	if(a%i == 0){
	printf("소수번호가 아닙니다. \n");
    b = 1;
    break;
	}
	}
	if( b == 0){ 
    printf("소수번호 입니다. \n");
	}
}

프로그램의 결과는 아래와 같습니다. 

무한반복문을 이용한 프로그램 

무한 반복문 : 반복문 자체의 조건의 의해서가 아니라 반복문 몸체 안에서 break 등에 의해 반복이 종료되는 반복문을 얘기합니다. 

자 그럼 반복문은 어떻게 만들어지는지 보겠습니다. 

반복문 case 1 

while (1==1) 이나 for(i=0; 1==1; i++)과 같이 항상 맞는 조건을 넣어서 지속 반복하게 만드는 것이 무한 반복문 

반복문 case 2 

  1. while 조건 자리 : 1   ||  while(1
  2. for 조건 자리 빈칸  ||  for(i=0; ;i++)
    for문에서 위와 같이 공란으로 두는 것은 항상 맞는 조건이라 문법에 나와있습니다. 
  3. 참고로 for문에서 '초기화' 나 '증감 연산' 자리를 비워도 괜찮습니다. 단, ;을 빠뜨리면 안됩니다. 

반응형

그럼 프로그램을 만들어 보겠습니다. 

문제 1. 정수를 하나씩 입력받아 더하다가 음수를 입력받으면 입력을 멈추고 그때까지 더한 합을 출력하기 

 

#include <stdio.h>
int main(void) {
int a, sum; 
sum = 0; 
while(1)
	{
		scanf_s("%d", &a); 
		if (a<0) 
		{
		break; 
		}
		sum = sum + a; 
	}
printf ("%d \n", sum); 
}

위와 같이 1,2,3,4,5 를 입력 후 -1을 입력하면 break 되면서 1,2,3,4,5에 대한 합인 15가 출력됨을 확인할 수 있습니다. 

 


실습문제 

자 그럼 실습문제를 만들어 한번 표현해 보겠습니다. 

1. 정수를 하나씩 입력받으면서 더해 나가다가, 0을 입력 받으면 더하는 것을 멈추고 그때까지의 합을 출력하시오. 

 

#include <stdio.h>
int main(void) {
int a, sum; 
sum = 0; 
while(1)
	{
		scanf_s("%d", &a); 
		if (a==0) 
		{
		break; 
		}
		sum = sum + a; 
	}
printf ("%d \n", sum); 
}

 

 

2. 두 개의 양수를 입력 받은 뒤, 두 수의 최대공약수를 구하여 출력하시오. 

 

12와 30의 최대 공약수는 약수 중 가장 큰 6 입니다.

자 그럼 어떻게 프로그램을 만들 수 있을까요?  

#include <stdio.h>
int main(void) {
int a,b,i; 
 
scanf_s("%d", &a);
scanf_s("%d", &b);

	for(i=b;i>=1;i--)
	{
		if((a%i==0) && (b%i==0)){
		break; 
		}
	}
printf("%d \n", i); 
}

프로그램의 결과는 아래와 같습니다. 

반응형

3. 양의 정 수 n을 입력 받은 뒤 다음의 그림과 같이 출력하시오. 

Key point: 

  • 홀수 줄 일때는 짝수 칸이 공백 
  • 짝수 줄 일떄는 홀수 칸이 공백 
#include <stdio.h>
int main(void) {
int n,i,j; 
 
scanf_s("%d", &n);

	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
		if((i+j)%2==0) {
		printf(" * ");
		}else {
		printf("   ");		
		}
		}
	printf("\n");
	} 
}

프로그램의 결과는 아래와 같습니다. 

이상으로 반복문_횟수가 달라지는 반복문, break와 countinue, 소수 판별 프로그램, 무한 반복문 [실습문제]에 대한 글이였습니다. 읽어주셔서 감사합니다. 

반응형

댓글