본문 바로가기

PROGRAM/C

이름 입력받아 테두리에 별 찍기

#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>

void get_your_info(char* name, int* pad) {
	printf("이름을 입력하세요>");
	gets(name);
	printf("공백의 수를 입력하세요>");
	scanf_s("%d", pad);
}

int main() {
	char myName[20];
	int pad, rows, stars;
	get_your_info(myName, &pad);
	//printf("%s %d\n", yourName,pad);
	//printf("size : %d %d\n", strlen("Hello,"), strlen(myName));
	rows = 2 * pad + 3;
	stars = strlen("Hello,") + strlen(myName) + 2 * pad + 2;
	for (size_t i = 0; i < rows; i++){
		//printf("%d :", i);
		if (i == 0 || i == rows - 1) {
			for (int star = 0; star < stars;star++) {
				printf("*");
			}
			printf("\n");
		}
		else if (i == pad + 1) {
			int c = 0;
			while (c != stars) {
				if (c == pad + 1) {
					printf("%s%s", "Hello,", myName);
					c += strlen("Hello,")+strlen(myName);
				}
				else {
					if (c == 0 || c == stars-1) {
						printf("*");
					}
					else {
						printf(" ");
					}
					c++;
				}
			}
			printf("\n");
		}
		else {
			for (int star = 0; star < stars;star++) {
				if (star == 0 || star == stars - 1)
					printf("*");
				else
					printf(" ");
			}
			printf("\n");
		}
	}

	return 0;
}

 

# 더 줄여서

#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>

void get_your_info(char* name, int* pad) {
	printf("이름을 입력하세요>");
	gets(name);
	printf("공백의 수를 입력하세요>");
	scanf_s("%d", pad);
}

int main() {
	char myName[20];
	int pad, rows, stars;
	get_your_info(myName, &pad);

	rows = 2 * pad + 3;
	stars = strlen("Hello,") + strlen(myName) + 2 * pad + 2;
	for (size_t i = 0; i < rows; i++){
		int c = 0;
		while (c != stars) {
			if (i == pad + 1 && c == pad + 1) {
				printf("%s%s", "Hello,", myName);
				c += (strlen("Hello,")+strlen(myName));
			}
			else {
				if (i==0 || i==rows-1 || c == 0 || c == stars-1) {
					printf("*");
				}
				else {
					printf(" ");
				}
				c++;
			}
		}
		printf("\n");
	}
	
	return 0;
}

'PROGRAM > C' 카테고리의 다른 글

10진수를 2진수 16진수로 출력하기  (0) 2021.08.17
구구단 가로로 출력 + 제외할 단 입력  (0) 2020.06.14