c语言中字符串中的单词个数

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:16:21
我输入带符号的英文文章怎么单词的个数不正确,哪位大虾帮帮我,还有我改增加什么才能满足这个要求(静态存储一页文章(英文,不少于20行),每行最多不超过80个字符)?
#include<stdio.h>
#define MAXSTERLEN 255

#include<stdio.h>
int main()
{
int a=0,b=0,c=0,d=0;
char c1;
while((c1=getchar())!='\n')
{
if((c1>='a'&&c1<='z')||(c1>='A'&&c1<='Z')) a++;
else if(c1>='0'&&c1<='9') b++;
else if(c1==' ') c++;
else d++;
}
char str[81];
int i,num=0,word=0;
char e;
printf("please input the string:\n");
gets(str);
for(i=0;(e=str[i])!='\0';i++)
{
if(e==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("单词个数 %d \n",num);
printf("字母个数%d\n",a);
printf("空格个数%d\n",c);

}

我把你程序改了一下,可以实现你想要的功能了。
你的char str[81];
int i,num=0,word=0;
char e; 这几个定义变量的位置都放错了。
还有你的 数字个数和总的字符个数 也没统计,我跟你加了。
#include<stdio.h>
#define MAXSTERLEN 255

#include<stdio.h>
int main()
{
int a=0,b=0,c=0,d=0;
char str[81];
int i,num=0,word=0;
char e;
printf("please input the string:\n");
gets(str);
for(i=0;i<81;i++)
{
if(str[i]!='\n')
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) a++;
else if(str[i]>='0'&&str[i]<='9') b++;
else if(str[i]==' ') c++;
else d++;
}
}
for(i=0;(e=str[i])!='\0';i++)
{
if(e==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("单词个数 %d \n",nu