菜鸟之路:输入的字符串中的单词的个数

      近期不断的面试,在面试中,总会遇到很多的小的程序编写问题。由于当时的时间紧迫,来不及深思熟虑,只能写出一个不太严谨的只能实现部分功能的函数。今日得来闲暇,实现一个计算字符串中单词个数问题小程序。输入的字符串会出现4种可能的情况:1、字符串为空 2、字符串为空格字符串 3、字符串为标准的输入 4、字符串中单词与空格的分布不标准情况。废话不说,上代码。

#include<iostream>
#include<conio.h>
using namespace std;
#define BOOL int//BOOL 为C++中的变量类型,在Dev C++下与VC编译下不同,自定义BOOL为int类型宏
#define TRUE 1
#define FALSE 0

int main()
{
   char cString[100];
   BOOL char_Flag=FALSE;
   int iIndex, iWord=0;
   static int Index=0;//索引设置为静态变量,目的为利用索引遍历字符串
   char cChar, cBlank;
   gets(cString);//gets可以接收含有空格的字符串
   if(cString[0]=='\0')//字符串为空输出
   {
       cout<<"There is no char!"<<endl;                    
   }
   else//字符串非空输出
   {
        while(cString[Index]!='\0')        
        {
            if((cString[Index]>'a'&&cString[Index]<'z')||(cString[Index]>'A'&&cString[Index]<'Z'))
            {    
                char_Flag=TRUE;//字符串开始出现字符时的标志
                break;
            }  
            Index++;//字符串开始出现的下标                                                                                        
        }
        if(!char_Flag)//字符串中只有空格
        {
            cout<<"All charactor is Blank!"<<endl;              
        }
        else
        {
            for(iIndex=Index-1; cString[iIndex]!='\0';iIndex++)
            {
                cBlank=cString[iIndex];
                cChar=cString[iIndex+1];
                //一个单词出现的条件是当前索引为char字符,索引前一个字符为空格
                //注意当前索引为结束字符,索引为空格的情况
                if(cBlank==' '&&cChar!=' '&&cChar!='\0')
                {
                        iWord++;            
                }          
            }    
            cout<<iWord<<endl;
        }
   }
   getch();
   return 0;    
}

   以上代码为小菜鸟的一点点个人认知,如有不足之处,仍需修改。

你可能感兴趣的:(字符串,个数)