【发布时间】:2012-03-26 11:24:28
【问题描述】:
所以我正在制作一个程序,该程序应该打印其输入中单词长度的水平直方图。所以我将 while 更改为 if 所以它现在接受超过 1 个输入。但这一次有什么问题呢?它不会打印图表。
/*Write a program to print a histogram of the lengths of words in its input.
It is easy to draw the histogram with the bars horizontal*/
#include <stdio.h>
#define MAX 30
#define IN 1
#define OUT 0
int main()
{
int a,c,i,k,state,word[MAX];
a=0;
k=0;
state=OUT;
for(i=0;i<MAX;i++)
word[i]=0;
while((c=getchar())!=EOF)
{
if(c==' '||c=='\t'||c=='\n')
state=OUT;
else
state=IN;
if(state==IN)
a++;
if(state==OUT)
{
word[i]=a;
i++;
a=0;
}
}
/*This part is pissing me off, I don't know how to print X multiple times!*/
for(i=0;i<MAX;i++)
if(word[i]>0)
{
for(k=0;k<=word[i];k++)
putchar('-');
putchar('\n');
}
}
【问题讨论】:
-
那么它现在可以工作了吗?因为我已经没有明显的发现了。
-
No.. 在我输入后输入 ctrl+z,它只是说按任意键继续.. 然后关闭。
-
如果你的代码在你的第三部分。它只是打印 - 在新行中 30 次。而不是 ------- (不是 30,而是单词的长度)@r_ahlskog
-
我只是复制粘贴了你所拥有的,但是是的,那里可能存在一些错误。我现在回家了,可以使用一个不错的编译器,所以我可以实际测试一下。但是,如果您不知道出了什么问题,您应该在调试器中运行它并找出问题。
标签: c