반응형

while문을 중첩해서 꼭 문제를 풀어보자

 

문제1

프로그램 사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성해보자. 단! 한가지 조건이 있다. 정수는 반드시 1이상이어야 한다. 만약에 1미만의 수가 입력되는 경우에는, 이를 입력으로 인정하지 않고 재 입력을 요구해야 한다. 그래서 결국 1이상의 정수를 5개를 모두 입력 받을 수 있도록 프로그램을 완성해야 한다.

#include <stdio.h>

int main()
{
	int A = 0,num=1;
	int array[5] = { 0 };
	

	while(A < 5)
	{
		printf("정수를 입력하세요 %d ", A + 1);
		scanf_s("%d", &num);
		
		array[A] = num;
		
		
		while (num == 0)
		{
			printf("정수를 다시 입력하세요\n");
			A--;
			break;
		}
		A++;
		
	}

	for (int i = 0; i < 5; i++)
	{
		printf("num[%d]는 %d ", i + 1, array[i]);
	}

	
	return 0;
}

A가 5미만일때까지 반복하는 반복문 while은 정수를 입력 받아 num에 저장하고 array[A]값에 저장한다.

num값을 0을 입력하면 사용하면 "정수를 다시 입력하세요" 출력 / 변수 A의 숫자를 1만큼 줄이고 반복문을 탈출한다.

A를 1더해준다.

 

for문을 통해 array[0~4]까지 출력

 

----------------------------------------------------------------------------------------------------------------------------------

문제2

아래의 출력을 보이는 프로그램을 작성해보자

 

*

o*

oo*

ooo*

oooo*

 

#include <stdio.h>

int main()
{
	int A = 0;
	int i = 0;

	while(A < 5)
	{
		
		while (i < A)
		{
			printf("o");
			i++;
			
		}
		i = 0;
		printf("*\n");
		A++;
	}

	
	return 0;
}

 

A<5이고 i<A일 경우 "o"출력 첫번째 반복문에서는 i==A이기때문에 바로 "*"이 출력된다.

두번째부터 i=0, A=1이기 때문에 "o*"이 출력된다.

두번째 while문 밑에서 i를 0으로 초기화 시켜줘서 A가 커질수록 i를 여러번 반복할수있다.

반응형

+ Recent posts