반복문 실습
반복문_횟수가 달라지는 반복문, 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
- while 조건 자리 : 1 || while(1)
- for 조건 자리 빈칸 || for(i=0; ;i++)
for문에서 위와 같이 공란으로 두는 것은 항상 맞는 조건이라 문법에 나와있습니다. - 참고로 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, 소수 판별 프로그램, 무한 반복문 [실습문제]에 대한 글이였습니다. 읽어주셔서 감사합니다.
'프로그래밍' 카테고리의 다른 글
[자료형 형변환] 실수형과 실수형의 변환 명세 [쉬운 설명과 예시] (0) | 2023.03.25 |
---|---|
[자료형 형변환] 정수형 정수형의 변환 명세 [쉬운 설명과 예시] (0) | 2023.03.25 |
[중첩반복문] for문, while문, do-while문_쉬운 설명과 예시_쉼표연산자,break문,continue문 (0) | 2023.03.11 |
[중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습 (0) | 2023.03.11 |
[중첩반복문] for문 while문 if_else 포함 (0) | 2023.03.10 |
댓글