在C中制作带星号的正方形

时间:2014-02-07 21:38:58

标签: c

我是C语言的新手,请帮助我。 好吧,我正在编写一个代码来制作一个方形的星号。但我无法想象如何完全制作广场。这是我的代码:

#include<stdio.h>

int main(void){
    int n;

    for(n=1;n<5;n++){
        printf("*");
    }
    for (n=1;n<4;n++){
        printf("*\n");
    }
    for (n=1;n<=5;n++){
        printf("*");
    }
    for(n=5;n<=1;n--){
        printf("*\n");
    }

    getchar();
    return 0;
}

谢谢!!     它应该特别像

                           *****
                           *   *
                           *   *
                           *   *
                           *****

6 个答案:

答案 0 :(得分:3)

由于您希望创建空心方块的星号

考虑 如何创建它。经过一番思考,你会意识到:

  1. 第一行和最后一行都是星号。
  2. 对于所有其他行,这些行的第一列和最后一列都是星号。
  3. 其他一切都是空间。
  4. 使用它,我们可以构建:

    const int n = 5;
    
    for(int i=0; i < n; i++) {
        for(int j=0; j < n; j++) {
            if (i == 0 || i == n - 1) {
                printf("*");
            }
            else if(j == 0 || j == n - 1) {
                printf("*");
            }
            else {
                printf(" ");
            }
            printf(" ");
        }
        printf("\n");
    }
    

    可以将其放入n*m案例的一般解决方案中:

    const int ROWS = 5;
    const int COLS = 5;
    
    for(int i=0; i < ROWS; i++) {
        for(int j=0; j < COLS; j++) {
            if (i == 0 || i == ROWS - 1) {
                printf("*");
            }
            else if(j == 0 || j == COLS -1) {
                printf("*");
            }
            else {
                printf(" ");
            }
            printf(" ");
        }
        printf("\n");
    }
    

答案 1 :(得分:2)

你让它变得过于复杂 - 试试这个:

#include <stdio.h>

int main(void)
{
    printf("*****\n");
    printf("*   *\n");
    printf("*   *\n");
    printf("*   *\n");
    printf("*****\n");
    return 0;
} 

答案 2 :(得分:1)

#include <stdio.h>
#include <string.h>

#define LINE_SIZE 32

int main(void){
    int i, n = 5;
    char line1[LINE_SIZE] = {0}, line2[LINE_SIZE] = {0};
    memset(line1, ' ', sizeof(line1)-1);
    memset(line1+sizeof(line1)-n-1, '*', n);
    memcpy(line2, line1, sizeof(line1));
    memset(line2+sizeof(line2)-n, ' ', n-2);

    puts(line1);
    for(i = n-2; i ; --i)
        puts(line2);
    puts(line1);
    return 0;
}

答案 3 :(得分:0)

void print_square(int size)
{
   int i;
   int j;

   for(i = 0; i < size; i++)
   {
       printf("*");
   }
   printf("\n");

   for(i = 1; i < size - 1; i++)
   {
       printf("*");
       for(j = 1; j < size - 1; j++)
       {
          printf(" ");
       }  
       printf("*");
       printf("\n");
   }

   for(i = 0; i < size; i++)
   {
       printf("*");
   }
   printf("\n");
}

答案 4 :(得分:0)

#include<stdio.h>
main()
{
int n;
for(n=1;n<4;n++){
    printf("*");
}
for (n=1;n<4;n++){
    printf("*   *\n");
}
for (n=1;n<=5;n++){
    printf("*");
}
for(n=5;n<4;n--){
    printf("*\n");
}
getch();
}

答案 5 :(得分:0)

    #include<stdio.h>
    #include<string.h>
    #define row 70
    #define coloumn 70
    #define buff_size row*coloumn
    int draw_Box(int x,int y,int height,int width,int pixel_width,char *);

    typedef struct
    {
        char r;
        char g;
        char b;
        char a;
    }rgba_t;

    typedef struct
    {
        int x;
        int y;
        int height;
        int width;
        int pixel_width;

        char * base_ptr;
    }box_t;

    rgba_t *rgba_ptr;
    unsigned char data[buff_size]={1};
    void main()
    {

        long unsigned int status,i,j=0;
        memset(data,' ',sizeof(data));
       if(status = draw_Box(28,28,15 ,15,3,data))
       {
         printf("out of boundary");
        return ;
       }

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

            if(i%coloumn==0)
            {

                if(i==0)
                {

                }
                else
                {
                    printf("%3d\n\n",(j++));
                }
            }
            printf("%2c ",data[i]);


        }
        printf("%3d\n\n",j);

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



            printf("%2d ",i);


        }
        return ;


    }


    int draw_Box(int x,int y,int height,int width,int thick,char *base_ptr)
    {
        int x1,y1,i,j;
        x1 = x + height-1;
        y1 = y + width-1;
    //  char *box_base_ptr = (base_ptr+((x*10)+y));
        if((x1)>row || (y1) >coloumn)
        {

            return 1;
        }
    #if 1
    for(j=0;j<thick;j++)
    {   
        for(i=x+j;i<=x1-j;i++)
        {

              *(base_ptr+(i*coloumn)+y+j)=0x31+j;   
              *(base_ptr+(i*coloumn)+y1-j)=0x31+j;
        }
    }
    #endif  
    #if 1
    for(j=0;j<thick;j++)
    {
        for(i=y+1+j;i<y1-j;i++)
        {

              *(base_ptr+((x+j)*coloumn)+i)=0x31+j; 
              *(base_ptr+((x1-j)*coloumn)+i)=0x31+j;    
        }
    }
    #endif  
        return 0;
    //  for(i=x;)

    }