利用C++的string类对象解决。可以先给对象赋一个空格字符串,把从键盘接收的字符追加其后,以方便统一查找。举例如下:
#include "stdafx.h"//If the vc++6.0, with this line.//
#include
#include
using namespace std;
int main(int argc,char *argv[]){
string s(" ");//先赋一个空格
int i,w,k;
char ch;
cout << "Please enter a line of text...\n";
while((ch=cin.get())==' ' || (ch|0x20)>='a' && (ch|0x20)<='z')//输入非字母和空格结束
s+=ch;
for(k=s.length(),w=0,i=1;iif(s[i-1]==' ' && (s[i]|0x20)>='a' && (s[i]|0x20)<='z')//空格后跟着字母判为单词
w++;
cout << "\nA total of " << w << " word(s).\n\n";
return 0;
}
举例运行结果如下图:
定义一个char s[100];这里开好大随你,只要能存下一个单词即可
因为scanf("%s",s)是读到空格、TAB或者回车都要停下来,所以可以借此来统计个数,空格那些就自动忽略了while(scanf("%s",s)) ans++;
最后输出ans就好了
采用正则表达式区配即可
代码部分: #include
int main()
{
int count=0;
char temp;
bool letter;
letter=0;//letter=0为在单词里(单词没输入完成),=1为表示进入下个单词
printf("Input words:");
temp=getchar();
while(temp!='\n')
{
if((letter==1)&&(temp==' '))
{
letter=0;
}
else if((temp>='a'&&temp<='z')||(temp>='A'&&temp<='Z')||(temp>='0'&&temp<='9'))
{
if(letter==0)
{
letter=1;
count++;
}
}
temp=getchar();
}
printf("count: %d\n",count);
return 0;
} 效果图: 【酷_酷_币】为您服务...
这个问题不难!可不可以用指针、string?如果不能数组、指针、string,真不知道该咋弄了。