近期不断的面试,在面试中,总会遇到很多的小的程序编写问题。由于当时的时间紧迫,来不及深思熟虑,只能写出一个不太严谨的只能实现部分功能的函数。今日得来闲暇,实现一个计算字符串中单词个数问题小程序。输入的字符串会出现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 0int 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; }以上代码为小菜鸟的一点点个人认知,如有不足之处,仍需修改。