사용자로부터 9 이하의 양의 홀수 하나를 입력받은 후(이 값은 패턴의 행과 열의 길이를
의미함) 아래와 같이 5개 패턴을 출력하는 하나의 프로그램을 작성하시오(네번째 패턴에서
는 가운데 행만 전체 공백으로 출력함). 단, 반드시 중첩 반복문을 포함해야 하며, 양의 홀
수를 입력받은 문장 이후에는 printf 함수는 다음 3가지 형태 중 하나만 사용해야 한다.패턴의 출력 함수
printf(“”); : ‘’하나를 출력함
printf(“\n”); : 개행문자(Enter)를 출력함
printf(“ ”); : 공백(Space) 한 칸을 출력함
<실행 예시>
양의 홀수 하나를 입력하시오 : 5
*****
****
***
**
*
*
**
***
****
*****
****
*** *
** **
* ***
****
*
***
***
*
* *
* *
*
* *
* *
작성 코드
/*
함수 이름 : main
기능 : 한자리의 홀수n을 입력받아 n*n의 5가지 패턴을 출력
반환값 : 정수
작성 날짜 : 2023/03/23
작성자 : Aiden Lee
*/
#include <stdio.h>
int main(void) {
int num;
do{
printf("9 이하의 양의 홀수를 입력하시오 : ");
scanf("%d", &num);
} while (num > 10 || num % 2 == 0);
//패턴1
for (int i = 0; i < num; i++) {
for(int j = num - i; j > 0; j--)
printf("*");
printf("\n");
}
printf("\n");
//패턴2
for (int i = 0; i < num; i++) {
for (int j = num - i; j > 1; j--)
printf(" ");
for (int j = 0; j <= i; j++)
printf("*");
printf("\n");
}
printf("\n");
//패턴3
for (int i = 0; i < num; i++) {
for (int j = i + 1; j < num; j++)
printf("*");
printf(" ");
for (int j = i; j > 0; j--)
printf("*");
printf("\n");
}
printf("\n");
//패턴4, 5의 출력에는 좌표를 이용하여 조건문으로 출력 선택
//좌표 이용하기 위해 변수 i, j는 1부터 시작
int n = num / 2 + 1;
int s = n; //시작
int f = n; //끝
//패턴4
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
if (j >= s && j <= f && i != n)
printf("*");
else
printf(" ");
}
if (i < n) {
s--;
f++;
}
else {
s++;
f--;
}
printf("\n");
}
printf("\n");
//패턴5
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
if (i + j == num + 1 || i == j)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
출력 결과