垂直直方图阵列打印问题

时间:2015-11-03 08:54:02

标签: c arrays debugging histogram

我试图制作垂直直方图。我有点困惑,因为它说的是#34;标准终端窗口是80个字符列。如果我们限制列数我们可以绘制到最多80,我们知道我们需要分配多大的数组,这个程序很容易编写。"

我从中理解的是创建一个长度为80的数组并存储来自scanf的输入。

int arr[80];

for(i=0;i<80;i++)
{
scanf("%d", &arr[i]);
}

然后我找到数组中的最大元素并使用while循环来打印直方图:

max = arr[0];

for(i=0;i<80;i++)
{
   if(arr[i]>max)
   {
     max = arr[i];
   }
}


while(max!=0)
{
   for(k=0;k<80;k++)
   {
     if(arr[k]<max)
     {
       printf(" ");
     }
     else
     {
        printf("#");
     }
   }
   printf("\n");

  max--;
}

然而,当我运行该程序时,没有任何打印,所以我不认为它甚至达到了这一点......我还没有了解malloc,所以我知道我不必使用它。 这是一个它应该是什么样子的例子:

Input:
 1 4 2 3

Output:
  #  
  #   #
  # # #
# # # #

1 个答案:

答案 0 :(得分:0)

你可能遇到了这个问题:

scanf("%d", &arr[i]);

因为没有scanf可以用来决定数字何时完成的分隔符(例如换行符或空格)。人们通过添加虚拟参数来吸收空格来解决scanf限制,例如,

scanf("%d%s", &arr[i], dummy);

然而,虚拟参数的长度会遇到问题。