C语言实验——单词统计
Problem Description
从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。
Input
输入只有一行句子。仅有空格和英文字母构成。
Output
单词的个数。
Sample Input
stable marriage problem Consists of Matching members
Sample Output
7
#include #include #include int main()
{
int i, len, num, t;
char a[101];
memset(a, 0, sizeof(a));
gets(a);
len = strlen(a);
num = 0;
t = 0;
for(i = 1; i < len; i++)
{
if(a[i] == ' ') t = 0;
//当字符为空格时,令t=0
else if(t == 0 && a[i] != ' ')
{//当t=0即当前字符之前存在空格,且当前字符不为空格时执行此if
t = 1;//令t=1,防止下次进入此if重复计数
num++;
}
}
printf("%d\n", num);
return 0;
}
此题我一开始写的代码入下方是所示:
#include #include #include int main()
{
int i, len, num;
char a[101];
memset(a, 0, sizeof(a));
gets(a);
len = strlen(a);
num = 0;
if(a[0] == '\0')
num = 0;
//如果没输入单词,则num = 0,否则进入循环计算单词量
else
{
num = 1;//如果a[0]不为'\0',则有单词输入且它为第一个
for(i = 1; i < len; i++)
{
if(a[i - 1] == ' ' && a[i] != ' ')
{
num++;
}//如果a[i - 1]为空格,且a[i]不为空格,则出现新单词
}
}
printf("%d\n", num);
return 0;
}
这样写的错误的,假如一开始是这样输入:
stable marriage problem Consists of Matching members
最前面是存在空格的话就会出现问题,所以必须改为上方有标记变量的写法,并且上方那种有标记变量的写法在很多程序中都有所应用