
编写一个程序,打印其输入的文件中单词长度的直方图。以下是我编的程序.但是编译的时候总说我有错.
#include<stdio.h>#defineIN1;/*单词中*/#defineOUT0;/*单词外*/main(){inti,c,state;intnword[25...
#include<stdio.h>
#define IN 1; /*单词中*/
#define OUT 0; /*单词外*/
main()
{
int i, c , state;
int nword[25]; /*单词可能的长度。这里定义最长的长度为25*/
for(i=0; i<25; ++i)
nword[i]=0; /把各种长度的单词个数。定义为0个*/
i=0;
state=OUT;
while( (c=getchar()) != EOF )
{
if( c==' ' || c=='\n' || c=='\t')
{
state=OUT;
}
else if( c>='a' && c<='z' || c>='A' && c<='Z')
{
if (state == IN)
{
++i;
}
else
{
state=IN;
++nword[i];
i=1;
}
}
else
;
}
}
想问下。究竟哪里有错、?? 展开
#define IN 1; /*单词中*/
#define OUT 0; /*单词外*/
main()
{
int i, c , state;
int nword[25]; /*单词可能的长度。这里定义最长的长度为25*/
for(i=0; i<25; ++i)
nword[i]=0; /把各种长度的单词个数。定义为0个*/
i=0;
state=OUT;
while( (c=getchar()) != EOF )
{
if( c==' ' || c=='\n' || c=='\t')
{
state=OUT;
}
else if( c>='a' && c<='z' || c>='A' && c<='Z')
{
if (state == IN)
{
++i;
}
else
{
state=IN;
++nword[i];
i=1;
}
}
else
;
}
}
想问下。究竟哪里有错、?? 展开
1个回答
展开全部
#include <stdio.h>
#define MAXWORDLEN 10
int main(void)
{
int c;
int inspace = 0;
long lengtharr[MAXWORDLEN + 1];
int wordlen = 0;
int firstletter = 1;
long thisval = 0;
long maxval = 0;
int thisidx = 0;
int done = 0;
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
lengtharr[thisidx] = 0;
}
while(done == 0)
{
c = getchar();
if(c == ' ' || c == '\t' || c == '\n' || c == EOF)
{
if(inspace == 0)
{
firstletter = 0;
inspace = 1;
if(wordlen <= MAXWORDLEN)
{
if(wordlen > 0)
{
thisval = ++lengtharr[wordlen - 1];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
else
{
thisval = ++lengtharr[MAXWORDLEN];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
if(c == EOF)
{
done = 1;
}
}
else
{
if(inspace == 1 || firstletter == 1)
{
wordlen = 0;
firstletter = 0;
inspace = 0;
}
++wordlen;
}
}
for(thisval = maxval; thisval > 0; thisval--)
{
printf("%4d | ", thisval);
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
if(lengtharr[thisidx] >= thisval)
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
printf(" +");
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
printf("---");
}
printf("\n ");
for(thisidx = 0; thisidx < MAXWORDLEN; thisidx++)
{
printf("%2d ", thisidx + 1);
}
printf(">%d\n", MAXWORDLEN);
return 0;
}
给你参考下这个
#define MAXWORDLEN 10
int main(void)
{
int c;
int inspace = 0;
long lengtharr[MAXWORDLEN + 1];
int wordlen = 0;
int firstletter = 1;
long thisval = 0;
long maxval = 0;
int thisidx = 0;
int done = 0;
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
lengtharr[thisidx] = 0;
}
while(done == 0)
{
c = getchar();
if(c == ' ' || c == '\t' || c == '\n' || c == EOF)
{
if(inspace == 0)
{
firstletter = 0;
inspace = 1;
if(wordlen <= MAXWORDLEN)
{
if(wordlen > 0)
{
thisval = ++lengtharr[wordlen - 1];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
else
{
thisval = ++lengtharr[MAXWORDLEN];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
if(c == EOF)
{
done = 1;
}
}
else
{
if(inspace == 1 || firstletter == 1)
{
wordlen = 0;
firstletter = 0;
inspace = 0;
}
++wordlen;
}
}
for(thisval = maxval; thisval > 0; thisval--)
{
printf("%4d | ", thisval);
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
if(lengtharr[thisidx] >= thisval)
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
printf(" +");
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
printf("---");
}
printf("\n ");
for(thisidx = 0; thisidx < MAXWORDLEN; thisidx++)
{
printf("%2d ", thisidx + 1);
}
printf(">%d\n", MAXWORDLEN);
return 0;
}
给你参考下这个
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询