我试图制作垂直直方图。我有点困惑,因为它说的是#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:
#
# #
# # #
# # # #
答案 0 :(得分:0)
你可能遇到了这个问题:
scanf("%d", &arr[i]);
因为没有scanf
可以用来决定数字何时完成的分隔符(例如换行符或空格)。人们通过添加虚拟参数来吸收空格来解决scanf
限制,例如,
scanf("%d%s", &arr[i], dummy);
然而,虚拟参数的长度会遇到问题。