-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和的位置ji应该从 0 到 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 回答