2014-10-27 33 views
-2

我想打印下面的图案,用户输入n和m(4和6)时,外面应该是星星,里面应该填满圆。如何在C中打印多个星形图案的方格?

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ******  

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ******  

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ******  

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ******  

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ****** 

****** ****** ****** ******  
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
*oooo* *oooo* *oooo* *oooo* 
****** ****** ****** ******  

我只能使用此代码打印此代码。我做错了什么?

#include <stdio.h> 
#include <stdlib.h> 


int main(void) 
{ 
int n,i,j,k,m,n1; 
printf("enter table size and enter square size"); 
scanf("%d %d", &n, &n1); 

for (i = 0; i < n; i++) { 
    for (j = 0; j < n1; j++) 
    { 
     for (k = 0; k < n; k++) 
     { 
      for (m = 0; m < n1; m++) 
      { 
       { 
      if(i==0 || i==n-1) 
       { 
      printf("*"); 
       } 
      else if(j==0 || j==n-1) 
       { 
      printf("*"); 
       } 
      else 
       { 
      printf("o"); 
       } 
       } 
      } 
      printf(" "); 
     } 
     printf("\n"); 
    } 
    printf("\n"); 
} 
system("pause"); 
return 0; 

}

+1

你卡在了什么?有一个具体的问题? – Qix 2014-10-27 04:05:57

+0

我认为,mitt634,你卡在输出中。你不能只打印一个正方形,然后像你想要的那样打印其他人。你必须打印第一行,然后是第二行等。 – yulian 2014-10-27 04:08:25

+0

你到底意味着什么? *“如果用户输入n = 3,就像6个方格的星星。”*(看起来与9个印刷方块“3x3”不符) – yulian 2014-10-27 05:19:16

回答

1

尝试此

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int i; 
    int j; 
    int side; 

    printf("Enter side\n"); 
    scanf("%d",&side); 
    for(int m=0;m<side;m++) 
    { 
     for(j=0;j<side;j++) 
     { 
      for(i=0;i<side;i++) 
      { 
       for(int k=0;k<side;k++) 
        printf("*"); 
       printf(" "); 
      } 
      printf("\n"); 
     } 
     printf("\n"); 
    } 
    system("Pause"); 
    return 0; 
} 
1

的算法和逻辑it't是非常简单的。 如果包括这些for循环依次row{height{length{column{...}}}},你会得到需要的结果:

  1. 它将打印*length次,那么“空间”。并重复它column次。

  2. 然后它会移动到下一行并执行相同的操作height次。之后,它将打印一个换行符\n

  3. 该程序将重复步骤1(对于column次)和2(对于height次)为row次。

,如果你要打印的东西有点不同,你可以自由像你想改变这个算法。将所有变量重命名为number并运行它 - 您将得到number x number正方形的边等于number。或者重命名rowcolumnside并运行它 - 您将得到一个表格side x side正方形与边heightlength。等等...

我可以建议你下面的算法,将打印各种方块。

#include <stdio.h> 
#include <stdlib.h> 


int main(void) 
{ 
    int row, column, height, length; 
    int i,j,k,m; 
    scanf("%d %d %d %d", &row, &column, &height, &length); 

    for (i = 0; i < row; i++) { 
     for (j = 0; j < height; j++) { 
      for (k = 0; k < column; k++) { 
       for (m = 0; m < length; m++) { 
        printf("*"); 
       } 
       printf(" "); 
      } 
      printf("\n"); 
     } 
     printf("\n"); 
    } 

    return 0; 
} 
/* OUTPUT: 
2 // rows 
4 // columns 
3 // height 
5 // length 
***** ***** ***** ***** 
***** ***** ***** ***** 
***** ***** ***** ***** 

***** ***** ***** ***** 
***** ***** ***** ***** 
***** ***** ***** ***** 
*/