Count the number of words in a line of characters (including spaces and punctuation marks)

Count the number of words in a line of characters (including spaces and punctuation marks)
//统计输入的字符串中有多少个单词
    char s[50];
    int i=0,count=0;
    gets(s);
    int len = (int)strlen(s);
    printf("length=%d\n",len);
    int flag=0;
    char c;
    for (i=0;(c=s[i])!='\0';i++)
    {
    
    
        //每出现一个字母则置状态为1
        if ((s[i]<='z' && s[i]>='a')||(s[i]<='Z' && s[i]>='A'))
        {
    
    
            flag=1;
        }
        //连续字母次数只统计一次(即一个单词)
        else if(flag){
    
    
            count++;
            flag=0;
        }

    }
    //只输入一个单词时做增加
    if(flag)
    {
    
    
        count++;
    }
    //-------等价于-------
//    int flag=0;
//    for (i=0;(c=s[i])!='\0';i++)
//    {
    
    
//        //如果不是字母则标记flag恢复0
//        if (!(s[i]<='z' && s[i]>='a')||(s[i]<='Z' && s[i]>='A'))
//        {
    
    
//            flag=0;
//        }
//        //是单词是第一个字母count加1,随后将标记置为1,防止重复累加
//        else if(flag==0){
    
    
//            count++;
//            flag=1;
//        }
//    }
    printf("%s\n",s);
    printf("%d\n",count);

Insert picture description here

Guess you like

Origin blog.csdn.net/Beer_xiaocai/article/details/115155818