for문 구현문제인 별찍기이다.
1-2학기 중간고사 대비를 위해 문제를 풀어보았다.
안이 채워지지 않은 직사각형 구현하기
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == 1 || i == n) { //i가 1이거나 n일때 즉 가로의 두줄
printf("*");
}
else {
if (j == 1 || j == n) {//j가 1이거나 n일때 즉 세로의 두줄
printf("*");
}
else {
printf(" ");
}
}
}
printf("\n");
}
}
다이아몬드(마름모) 구현하기
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = n-1; j > i; j--) {
printf(" ");
}
for (int j = 0; j < i * 2 + 1; j++) {
printf("*");
}
printf("\n");
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = n*2; j > i * 2 + 1; j--) {
printf("*");
}
printf("\n");
}
}
1~n까지 한줄에 출력하기, 숫자가 커지면 커진만큼 숫자 출력
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
printf("%d", j);
}
printf("\n");
}
}
반대로 감소하는거 출력하기.
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
printf("%d", j);
}
printf("\n");
}
}
채워지지 않은 다이아몬드, 중간줄이 있음
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
if (i < n/2) {
for (int j = n/2; j > i; j--) {
printf(" ");
}
for (int j = 0; j < i * 2 + 1; j++) {
if (j == i * 2 || j == 0) {
printf("*");
}
else {
printf(" ");
}
}
}
else if (i == n/2) {
for (int j = 0; j < n; j++) {
printf("*");
}
}
else if (i > n / 2) {
for (int j = 0; j < i - n/2; j++) {
printf(" ");
}
for (int j = n * 2; j > i * 2 + 1; j--) {
if (n*2 == j || j == i * 2 + 2) {
printf("*");
}
else {
printf(" ");
}
}
}
printf("\n");
}
}
사각형 안에 X
//정수 n(>1, 홀수)에 3,5,7,9가 입력되면 다음과 같은 모양을 출력하는 프로그램을 작성해보자. 짝수가 입력되면 홀수 입력시까지 재입력한다.
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
while ((n < 3 || n >10) || n % 2 != 1) {
scanf_s("%d", &n);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j || i == 0 || i == n - 1 || j == 0 || j == n -1 || i+j == n-1) {
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
위가 빈 모래시계
//정수 n(>1, 홀수)에 3,5,7이 입력되면 다음과 같은 모양을 출력하는 프로그램을 작성해보자.
#include<stdio.h>
int main() {
int n = 0;
scanf_s("%d", &n);
while (n < 3 || n % 2 == 0) {
scanf_s("%d", &n);
}
for (int i = 0; i < n; i++) {
if (i < n / 2) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = n; j >= i * 2 + 1; j--) {
if (i == 0 || j== n || j == i * 2 + 1) {
printf("*");
}
else {
printf(" ");
}
}
}
else if (i == n / 2) {
for (int j = 0; j < i; j++) {
printf(" ");
}
printf("*");
}
else {
for (int j = n; j > i+1; j--) {
printf(" ");
}
for (int j = 0; j < (i-(n/2)) * 2 + 1; j++) {
printf("*");
}
}
printf("\n");
}
}
나비 모양
#include <stdio.h>
int main() {
int n;
scanf_s("%d", &n);
while (n % 2 == 0 || n < 1) {
scanf_s("%d", &n);
}
for (int i = 0; i < n * 2 -1; i++) {
if (n > i+1) {
for (int j = 0; j<=i; j++) {
printf("*");
}
for (int j = n * 2 - 1; j > i * 2 + 2; j--) {
printf(" ");
}
for (int j = 0; j <= i; j++) {
printf("*");
}
}
else if (n == i + 1) {
for (int j = 0; j < n * 2 - 1; j++) {
printf("*");
}
}
else {
for (int j = n*2 - 1; j > i; j--) {
printf("*");
}
for (int j = n * 2; j < i * 2 + 1; j++) {
printf(" ");
}
for (int j = n * 2 - 1; j > i; j--) {
printf("*");
}
}
printf("\n");
}
}
'CS 공부 > 기초 알고리즘' 카테고리의 다른 글
[Python] DFS와 BFS (0) | 2023.01.11 |
---|---|
[C언어/기초알고리즘] 버블 정렬 (Bubble Sort) (0) | 2021.11.16 |
[C언어/기초알고리즘] 선택 정렬 (Selection sort) (0) | 2021.11.15 |
최대 공약수, 최소 공배수 알고리즘 파악하기 (0) | 2021.10.08 |