완숙의 블로그

반복문 1 본문

Programing Language/C

반복문 1

완숙 2019. 1. 7. 15:04

반복문의 필요성

  • 특정 명령을 반복적으로 사용해야 함
  • 규칙적으로 반복하는 일
  • 동일한 내용을 반복할 때

 

For

  • 특정 문장을 일정한 횟수만큼 반복 시킬 때 사용

2019-01-07 10 42 12

 

Example 1

#include <stdio.h>
int main() {
	int i, Sum = 0;
	
	for (i=1; i<=10; i++)
		Sum += i;
	
	printf("1부터 10까지의 합은 %d다.\n",Sum);
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 1부터 10까지의 합은 55다.

// 프로세스가 종료되었습니다.

 

Example 2

#include <stdio.h>
int main() {
	int number, i;
	
	printf("반복 횟수를 입력하세요 : ");
	scanf("%d", &number);
	
	for (i = 1; i <= number; i++)
	{
	printf("%d번 반복입니다!!\n", i);	
	}
	return 0;
}

// 프로세스가 시작되었습니다..
> 반복 횟수를 입력하세요 : 7
1번 반복입니다!!
2번 반복입니다!!
3번 반복입니다!!
4번 반복입니다!!
5번 반복입니다!!
6번 반복입니다!!
7번 반복입니다!!

// 프로세스가 종료되었습니다.

 

 

Example 3

#include <stdio.h>
int main() {
	int i;
	
	for(i=65; i<= 90; i++)
	{
		printf("%c ",i);
	}
	
	printf("\n");
	return 0;
}

// 프로세스가 시작되었습니다..
> A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

// 프로세스가 종료되었습니다.

 

Example 4

#include <stdio.h>
int main() {
	int sum, i,j;
	
	printf("다중 for문 예제입니다.\n");
	
	for (i = 1; i<=3;i++)
	{
		for(j = 1; j<=3; j++)
		{
			sum = j + i;
			printf("%d + %d = %d\n",i,j,sum);
		}
	}
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 다중 for문 예제입니다.
1 + 1 = 2
1 + 2 = 3
1 + 3 = 4
2 + 1 = 3
2 + 2 = 4
2 + 3 = 5
3 + 1 = 4
3 + 2 = 5
3 + 3 = 6

// 프로세스가 종료되었습니다.

 

Problem 5

#include <stdio.h>
int main() {
	int i,j;
	
	for (i = 1; i<6; i++)
	{
		for (j=0;j<i;j++)
		{
			printf("*");
		}
		printf("\n");
	}
	
	return 0;
}

// 프로세스가 시작되었습니다..
> *
**
***
****
*****

// 프로세스가 종료되었습니다.

 

problem 6

#include <stdio.h>
int main() {
	int i, j, count = 0;
	
	for (i = 2; i<=100; i++)
	{
		for (j = 2; j<i; j++)
		{
			if (i%j==0)
				break;
		}
	
		if ( j == i){
			count++;
			printf("%2d%s", i, count % 5 ? " ":"\n");
		}
	}
	
	return 0;
}

// 프로세스가 시작되었습니다..
>  2  3  5  7 11
13 17 19 23 29
31 37 41 43 47
53 59 61 67 71
73 79 83 89 97

// 프로세스가 종료되었습니다.

 

Problem 7

#include <stdio.h>
int main() {
	int i,j,index,input;
	
	printf("임의의 정수를 입력하세요: ");
	scanf("%d", &input);
	
	for(i=1; i<= input; i++)
	{
		index = 0;
		for(j=1;j<=i;j++)
		{
			if (i % j ==0)
				index++;
		}
		if (index == 2)
			printf("%d\n", i);
	}
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 임의의 정수를 입력하세요: 14
2
3
5
7
11
13

// 프로세스가 종료되었습니다.

 

While

  • 횟수를 정확하게 알지는 못하지만 반복의 조건을 알고 있을 때 사용

2019-01-07 11 54 32

 

For vs While

  • 초기화의 위치가 다르다.

2019-01-07 11 55 57

 

  • for 문도 초기화를 앞에 할 수 있지만 모양이 없다.

 

Problem 1

#include <stdio.h>
int main() {
int sum = 0, number = 1;
	
	printf("1에서 10까지 합을 구합니다.\n");
	
	while(number <=10)
	{
		sum += number;
		number++;
	}
	
	printf("합은 %d입니다.\n", sum);
	
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 1에서 10까지 합을 구합니다.
합은 55입니다.

// 프로세스가 종료되었습니다.

 

Problem 2

#include <stdio.h>
int main() {
	int i = 65;
	
	while (i <=90)
	{
		printf("%c ",i);
		i++;
	}
	
	return 0;
}

//프로세스가 시작되었습니다..
> A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
// 프로세스가 종료되었습니다.

 

Problem 3

#include <stdio.h>
#define MAX 20
int main() {
	
	int n = 0;
	while(n <= MAX){
		printf("%4d",n);
		n += 3;
	}
	printf("\n");

	return 0;
}

// 프로세스가 시작되었습니다..
>    0   3   6   9  12  15  18

// 프로세스가 종료되었습니다.

 

Problem 4

#include <stdio.h>
int main() {
	int a = 1, sum = 0;
	
	while (sum<300){
		sum += a;
		a++;
		
	}
	
	printf("합이 300이 넘는 a의 최솟값은 %d다.\n", a-1);
	printf("sum = %d\n",sum);
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 합이 300이 넘는 a의 최솟값은 24다.
sum = 300

// 프로세스가 종료되었습니다.

 

For문과 While문에서 합구하기

#include <stdio.h>
int main() {
	
	int max, i, sum;
	
	
	printf("정수 입력 : ");
	scanf("%d", &max);
	
	for(i = 1, sum = 0; i <= max; i++)
	{
		sum += i;
	}
	
	printf("for 문 1에서 %d까지 합 : %3d\n", max, sum);
	
	
	i = 1, sum = 0;
	while(i<=max){
		sum += i;
		i++;
	}
	
	printf("while 문 1에서 %d까지 합 : %3d\n", max, sum);
	return 0;
}

// 프로세스가 시작되었습니다..
> 정수 입력 : 10
for 문 1에서 10까지 합 :  55
while 문 1에서 10까지 합 :  55

// 프로세스가 종료되었습니다.

 

 

실습

Problem 1

#include <stdio.h>
int main() {
	int i,j;
	
	for(i = 5; i>0; i--)
	{
		for (j = i; j>0;j--)
		{
			printf("*");
		}
		printf("\n");
	}
	
	
	
	for (i = 5; i>0; i = i - 2)
	{
		for (j = i; j>0;j--)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

// 프로세스가 시작되었습니다..
*****
****
***
**
*
*****
***
*

// 프로세스가 종료되었습니다.

 

 

Problem 2

// 구구단
#include <stdio.h>
int main() {
	int num, i, j, k;
	
	for (k =1; k<10;k++)
		printf(" %d 단  ", k);
	
	printf("\n");
	
	for (i=1; i<10;i++)
	{
			for (j=1; j<10;j++)
			{
				printf("%dx%d=%2d ", i,j,i*j);
			}
		printf("\n");
		
	}
	
	return 0;
				
}

// 프로세스가 시작되었습니다..
  1 단   2 단   3 단   4 단   5 단   6 단   7 단   8 단   9 단
1x1= 1 1x2= 2 1x3= 3 1x4= 4 1x5= 5 1x6= 6 1x7= 7 1x8= 8 1x9= 9
2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1= 3 3x2= 6 3x3= 9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1= 4 4x2= 8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

// 프로세스가 종료되었습니다.

 

 

Problem 3

#include <stdio.h>
int main() {
	
	int i, j, max;
	printf("1~9사이의 정수를 입력하시오 :");
	scanf("%d", &max);
	
	
	for (i=1; i<=max; i++)
	{
		for (j=1; j<=i; j++)
		{
			printf("%d",j);
		}
		printf("\n\n");
	}
	return 0;
}

// 프로세스가 시작되었습니다..
> 1~9사이의 정수를 입력하시오 :7
1

12

123

1234

12345

123456

1234567

// 프로세스가 종료되었습니다.

 

Problem 4

#include <stdio.h>
int main() {
	
	int max, i, j;
	
	printf("2 보다 큰 정수입력 : ");
	scanf("%d", &max);
	
	for (i = 2; i <= max; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
		}
		if (i == j)
			{
				printf("%4d", i);
			}
	}
	
	return 0;
}


// 프로세스가 시작되었습니다..
> 2 보다 큰 정수입력 : 20
   2   3   5   7  11  13  17  19
// 프로세스가 종료되었습니다.

 

Problem 5

#include <stdio.h>
int main() {
	int number, divisor, limit, count = 0;
	printf("2보다 큰 정수를 입력 :");
	scanf("%d", &limit);
	
	printf("\n 2부터 %d 까지의 소수 \n", limit);
	for (number = 2; number <= limit; number++)
	{
		for (divisor = 2; number % divisor !=0; divisor++);
		if(divisor == number)
		{
			printf("%3d%c", number, (++count % 10?' ':'\n'));
		}
	}
	
	printf("\n");
	
	return 0;
}

// 프로세스가 시작되었습니다..
> 22보다 큰 정수를 입력 :20

 2부터 220 까지의 소수
  2   3   5   7  11  13  17  19  23  29
 31  37  41  43  47  53  59  61  67  71
 73  79  83  89  97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211

// 프로세스가 종료되었습니다.

 

 

'Programing Language > C' 카테고리의 다른 글

배열 1(Array)  (0) 2019.01.10
반복문 2  (0) 2019.01.08
선택문  (0) 2019.01.03
중간 예제  (0) 2019.01.02
연산자 (operator)  (0) 2018.12.31
Comments