2014-10-27 34 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 
***** ***** ***** ***** 
***** ***** ***** ***** 
***** ***** ***** ***** 

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