C:과제1

aiden·2023년 3월 28일
0

C

목록 보기
7/28

사용자로부터 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;
}

출력 결과

profile
파인애플 좋아하세요?

0개의 댓글