2013-05-13 94 views
-14

我想寫一個C代碼,將在屏幕上打印金字塔結構,像這樣。垃圾值在C數組

enter image description here

我寫相應的代碼是這樣的。

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

void printArrayFunc(char arr[9][5]) 
{ 
    int i,j; 
    printf("=========================================\nprinting the values\n"); 
    for (i = 0; i<5; i++) 
    { 
     for (j = 0; j<9;j++) 
     { 
      //printf("arr[%d][%d] = %d\n", i,j, arr[i][j]); 
      if (arr[i][j] == 1) 
       printf("*"); 
      else 
       printf(" "); 
     } 
     printf("\n"); 
    } 
} 


int main() 
{ 
    int i,j; 
    char arr[9][5] = {0}; 

    printf("============================\nfilling the values\n") ; 
    for (i=0;i<5;i++) 
    { 
     for (j= 4-i;j<=4+i;j++) 
     { 
      arr[i][j] = 1; 
      // printf("arr[%d][%d]= %d\n",i,j,arr[i][j]); 
     } 
     //printf("\n"); 
    } 
    printArrayFunc(arr); 

    return 0; 
} 

這是給一個輸出像

enter image description here

我知道我在做一些愚蠢的錯誤,但在這一刻,我不是能找到什麼錯誤。讓我聽聽你對此的評論。

+14

你不能認真,發佈一個文本窗口的*屏幕截圖*。 – 2013-05-13 20:07:39

+0

至少OP張貼他的代碼。 – iamnotmaynard 2013-05-13 20:09:15

+1

@KerrekSB沒有其他的選擇,我正在使用virtualbox,並以某種方式共享文件夾不工作。 – 2013-05-13 20:09:36

回答

7

在功能參數:

char arr[9][5] 

在循環:

for (i = 0; i<5; i++) { 
    for (j = 0; j<9;j++) { 
     if (arr[i][j] == 1) 

你翻轉的ij位置。 i應該去從0到9,j從0到5

1
if (arr[i][j] == 1) 
    printf("*"); 
else 
    printf(" "); 

這種說法是給本聲明垃圾值,如果if condition爲真,那麼它打印else語句和其他時成真將打印垃圾值。