-14

このようなピラミッド構造を画面に表示する C コードを作成しようとしています。

ここに画像の説明を入力

私が書いた対応するコードは次のようなものです。

#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;
}

それは次のような出力を与えています

ここに画像の説明を入力

ばかげた間違いをしていることはわかっていますが、現時点では、何が問題なのかを見つけることができません。これについてあなたのコメントを聞かせてください。

4

2 に答える 2

7

関数の引数:

char arr[9][5]

ループの中:

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

iとの位置を反転しましたji0 から 9 までj、0 から 5 までです。

于 2013-05-13T20:10:38.127 に答える
1
if (arr[i][j] == 1)
    printf("*");
else 
    printf(" ");

このステートメントは、このステートメントにガベージ値を与えていif conditionます。真の場合はelseステートメントを出力し、elseが真になるとガベージ値を出力します。

于 2016-01-30T12:53:48.407 に答える