c语言,编写函数统计输入文本单词的个数,单词之间用空格符,换行符,跳格符隔开,用@作为输入结束标志

c语言,编写函数统计输入文本单词的个数,单词之间用空格符,换行符,跳格符隔开,用@作为输入结束标志。

#include<stdio.h>
int main()
{
    int i = 0, ct = 0;
    char ch;
    while ((ch=getchar())!='@'){
        if (ch == '\n' || ch == '\t' || ch == ' '){
            if (i > 0){
                ct++;
                i=0;
            }
        }
        else {
            i++;
        }
    }
    if (i>0)ct++;
    printf ("%d\n", ct);
    return 0;
 }

追问

没用函数啊

追答#include<stdio.h>

int count()
{
    int i = 0, ct = 0;
    char ch;
    while ((ch=getchar())!='@'){
        if (ch == '\n' || ch == '\t' || ch == ' '){
            if (i > 0){
                ct++;
                i=0;
            }
        }
        else {
            i++;
        }
    }
    if (i>0)ct++;
    return ct;
}
int main()
{
    int ct = count();
    printf ("%d\n", ct);
    return 0;
 }

追问

if(i>0)那个,i本来就等于0,肯定执行i++,完了i>0执行执行ct++,那么直接为if(i>=0);ct++;不行吗

追答

不行啊,这里i用于统计一个单词的长度,如果一个单词的长度为0,那么他肯定不是一个单词,这里默认每个单词长度大于0的,只有当一个单词的长度大于零时,算作一个单词,统计个数+1,并初始化新的单词长度为0

追问

前面看懂了,那么
else
i++;这句是什么意思呢

前面看懂了,那么
else
i++;这句是什么意思呢?

追答

这句是关键,是单词分隔符的时候,那么就统计这个单词,并舒适化了下一个单词的字符个数为0,如果不是单词分隔符,那么这个字符就属于当前统计的单词中,当前统计的单词的长度就+1

初始化写成舒适化了

温馨提示:答案为网友推荐,仅供参考
相似回答