#include <stdio.h>
#define MAXWORD 15
#define IN 1
#define OUT 0
main ()
{
int c,wl[16],i,state = OUT,overflow = 0,numin = 0,num = 0;
while ((c = getchar()) != EOF)
{
for (i = 0;i <= MAXWORD;i ++)
wl[i] = 0;
if (c == ' ' ||c == '\t' || c == '\b')
{
if (state == IN)
if (i <= MAXWORD)
wl[i] ++;
else if (i > MAXWORD)
overflow ++;
putchar (NULL);
}
else if (state == OUT)
{
i ++;
state = IN;
}
else
i ++;
}
for (int h = 1;h <= MAXWORD;h ++)
{
for (;wl[h] > 0;wl[h] --)
{
numin ++;
num ++;
}
printf ("長度為%d的單詞的個數為%d\t:", h,numin);
for (int p = 1;p <= num;)
putchar ('*');
printf ("\n");
}
if (overflow > 0)
printf ("有%d個單詞超過了最大限度", overflow);
}
uj5u.com熱心網友回復:
最大長度是多少?15嗎?單詞個數有限制嗎?
uj5u.com熱心網友回復:
最大長度15,個數沒有限制uj5u.com熱心網友回復:
#include <stdio.h>#define MAXWORD 15
#define IN 1
#define OUT 0
int main() {
int c,wl[16],i,state = OUT,overflow = 0;
// 從while里面搬出來了
for (i = 0; i <= MAXWORD; i ++) wl[i] = 0;
i = 0;
while ((c = getchar()) != EOF)
{
if ( c== '\b') { // 這是洗掉前一個字符
if ( i ) i--;
} else if (c == ' ' ||c == '\t' || c=='\n') {
if (state == IN) {
if (i <= MAXWORD)
wl[i] ++;
else
overflow ++;
}
// 遇到單詞分割后, 狀態要重新改為out,并且長度計數要清0
state = OUT;
i=0;
} else {
// 以前的兩個if都可以合并成一個,已經是in,繼續設定in也無妨
i ++;
state = IN;
}
}
// 最后是Ctrl+z 退出的,此時i還有長度也要統計
if (i <= MAXWORD)
wl[i] ++;
else
overflow ++;
printf("\n");
for (int h=1; h <= MAXWORD; h++)
{
// 原來的num,min什么的都是廢話,直接輸出就好了
printf ("長度為%d的單詞的個數為%d\t:", h, wl[h]);
for (int p = 1; p <= wl[h]; p++) putchar ('*');
printf ("\n");
}
if (overflow > 0)
printf ("有%d個單詞超過了最大限度\n", overflow);
return 0;
}
uj5u.com熱心網友回復:
#include <stdio.h>
int main ()
{
char c[1000]={0},c1;
int a[100]={0},b[16]={0};
int i,j,k=0,l;
for(i=0;i<1000;i++)
{
c[i]=getchar();
if(c[i]=='\n')
break;
}
for(j=0;j<i;j++)
{
if(c[j]==' ')
{
if(c[j+1]!=' ')
{
printf("\n");
k++;
}
if(c[j+1]==' '&&c[j+2]==' ')
j++;
}
else
{
printf("*");
a[k]++;
}
}
printf("\n");
for(i=0;i<k+1;i++)
{
for(j=0;j<16;j++)
{
if(a[i]==j+1)
b[j]++;
}
if(a[i]>15)
b[15]++;
}
for(j=0;j<15;j++)
{
if(b[j]!=0)
printf("長度為%d的單詞的個數為%d\n",j+1,b[j]);
}
printf("超過限度的單詞%d個",b[15]);
return 0;
}
可能有點麻煩
uj5u.com熱心網友回復:
for (int p = 1;p <= num;)
putchar ('*');
printf ("\n");
}
這幾行代碼要么回圈體不執行,即使執行了也可能是死回圈呢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122250.html
標籤:C語言
上一篇:寫入權限沖突
下一篇:洛谷——插火把問題
