c·c++/c 프로그래밍

2개의 for문을 사용한 별찍기

바로이순간 2012. 11. 20. 12:50


지나친 요구조건을 강요하는 문제입니다 (두개의 for문을 사용하여 작성할것.)


[15번]

#include <stdio.h>

int main() {

    int i, j, n, x;

    printf("n=");

    scanf("%d", &n);

    for(i=1;i<n+n;++i) {

        for(j=0;j<n;++j)

            if(j<n-i||j<i-n) printf(" ");

            else printf("*");

        printf("\n");

    }

    return 0;

}


[19번]

#include <stdio.h>

int main() {

  int i, j, n, x;

  printf("n=");

  scanf("%d", &n);

  for(i=1;i<n+n;++i) {

    for(j=0;j<n+n+1;++j)

      if(j<n-i+1||j<i-n+1||n+n+n<j+i+1||i+n<j+1) printf("*");

      else printf(" ");

    printf("\n");

  }

  return 0;

}


[18번]

#include <stdio.h>

int main() {

  int i, j, n, x;

  printf("n=");

  scanf("%d", &n);

  for(i=1;i<n+n;++i) {

    for(j=0;j<n+i-1;++j)

      if(j<n-i||j<i-n||n+n+n<j+i+2) printf(" ");

      else printf("*");

    printf("\n");

  }

  return 0;

}


[17번]

#include <stdio.h>

int main() {

int i, j, n, x;

  printf("n=");

  scanf("%d", &n);

  for(i=0;i<n;++i) {

    for(j=0;j<n+n-i-1;++j)

      if(j<i) printf(" ");

      else printf("*");

    printf("\n"); 

  }

  return 0;

}


[16번]

#include <stdio.h>

int main() {

  int i, j, n, x;

  printf("n=");

  scanf("%d", &n);

  for(i=0;i<n;++i) {

    for(j=0;j<n+i;++j)

      if(j+1<n-i) printf(" ");

      else printf("*");

    printf("\n");

  }

  return 0;

}




[101]

#include <stdio.h>

int main() {

    int i, j, n=5;


    printf("정수: ");

    scanf("%d", &n);

    for(i=1-n;i<n;i+=1) {

        for(j=-n;j<n+1;j+=1) {

            (i-j)*(i+j)>=0 ? putchar(' ') : putchar('*');

        }

        printf("\n");

    }


    return 0;

}



[102]

#include <stdio.h>

int main() {

    int i, j, n=5;


    printf("정수: ");

    scanf("%d", &n);

    for(i=1-n;i<n;i+=1) {

        for(j=1-n;j<n+1;j+=1) {

            (i-j)*(i+j)>=0 ? putchar('*') : putchar(' ');

        }

        printf("\n");

    }


    return 0;

}


[103]

#include <stdio.h>

int main() {

  int i, j, n;

  int b, c=0; 

  while(1) {

    printf("정수: ");

    scanf("%d", &n);

    if(n==0) break;

    for(i=1-n;i<1+n;i+=1) {

      b=i;

      if(b<0) b=-b;

      for(j=0;j<b;j+=1) {

        printf(" ");

      }

      b=n-b;

      for(j=1-b;j<b;j+=1) {

        c=j;

        if(c<0) c=-c;

        printf("%d", 1+c);

      }

      printf("\n");

    }

    printf("\n\n");

  }

  return 0;

}


[12번]

#include<stdio.h>

int main() {

    int i, j, n, x;

 

    printf("정수: ");

    // n은 최대 별의 갯수

    scanf("%d", &n);


    // 전체 줄수는 2*n-1줄이 된다.

    // i값은 -4 -3 -2 -1 0 1 2 3 4 (n이 5일 경우)와 같이 변한다.

    for(i=1-n;i<n;i+=1) {

        // i값이 음수일 경우는 (n+i)/n의 값은 0이다.

        // i값이 0또는 양수일 경우는 (n+i)/n의 값은 1이다.

        x=(n+i)/n;

        // i값이 음수일 경우에 x의 값은 -1이다.

        // i값이 0또는 양수일 경우 x의 값은 1이다.

        x=2*x-1;

        // n-x*i의 값은 별의 갯수를 나타낸다.

        for(j=0;j<(n-x*i);j+=1) {

            printf("*");

        }

        printf("\n");

    }

    return 0;

}