2014-02-07 22 views
-4

我是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; 
} 

谢谢!! 它应该Exacxtly像

      ***** 
          * * 
          * * 
          * * 
          ***** 
+2

一个正方形的sterik?你的意思是星号,是吗?另外,请_please_格式化您的代码。 – jrd1

+2

@ jrd1 - 哇!你比我好很多 - 我不知道斯特里克是谁,或者他为什么需要一个广场。 –

+0

@HotLicks:Nah。这只是一个幸运的猜测。 ;) – jrd1

回答

2

既然你要创建的星号一个空心方:

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

  1. 第一行和最后一行都是星号。
  2. 对于所有其他行,这些行的第一列和最后一列都是星号。
  3. 其他一切都是空间。

利用这一点,我们可以构造:

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"); 
} 
+0

我认为它是一个空心方块,而不是一个坚实的方块。 –

+0

@PaulR:啊!我刚刚看到了编辑。在它上面工作。谢谢! – jrd1

2

你正在做的过于复杂 - 试试这个:

#include <stdio.h> 

int main(void) 
{ 
    printf("*****\n"); 
    printf("* *\n"); 
    printf("* *\n"); 
    printf("* *\n"); 
    printf("*****\n"); 
    return 0; 
} 
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"); 
} 
+0

哦。这是一个细节...修正... –

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; 
} 
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(); 
} 
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;) 

    } 
+1

请添加一些解释。 – BlackBeard

相关问题