目标:计词
折腾了两个小时,代码修修补补,实在狼狈
以下是我自己的代码(可读性不行啊):读取字符串用了gets()
#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;
const int MAXN = 100000;
int main()
{
int front,rear,count;
char str[MAXN];
while(gets(str))
{
count = 0 ;
front = 0 ;
rear = 0 ;
for(int i=0; ; i++)
{
if( i == MAXN || !isalpha(str[i]) )
{
rear = i ;
if( front != rear && isalpha(str[front]))
count ++;
front = i + 1;
}
if(str[i] == '\0')
break;
}
cout<<count<<endl;
}
return 0;
}
别人的代码如下(自己小改了一下,可读性还是挺高的):
#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int main()
{
int cnt = 0;
int inword = 0;
char ch;
while(ch=getchar())
{
if(isalpha(ch))
{
inword = 1;
}
else if(ch == '\n')// 碰到回车输出cnt
{
cout << cnt + inword << endl;
cnt = 0;
inword = 0;
}
else if(inword)// 避免有连续空格或字符出现
{
cnt++;
inword = 0 ;
}
}
return 0;
}