gpt4 book ai didi

c - 垂直直方图阵列打印问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:34 27 4
gpt4 key购买 nike

我正在尝试制作垂直直方图。我有点困惑,因为在说明中它说“一个标准的终端窗口是 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:
#
# #
# # #
# # # #

最佳答案

你可能遇到了问题:

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

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

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

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

关于c - 垂直直方图阵列打印问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com