输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?相关的知识,希望对你有一定的参考价值。

参考技术A

可以使用循环对字符串逐一检查,遇到空格或者标点时增加单词计数,不过注意要跳过连着的空格和标点。

循环遍历字符串,就可以判断其中英文字符的。定义一个标识变量,比如初值0,遍历到第一个英文字符就置1,当标识为1时遍历到非英文字符就置0并将该连续的英文字符保存起来。可以用二维字符数组或malloc动态创建数组来保存。

这样就可以得到所有连续的英文字段。如题目要求是单词,那不需要遍历判断每个英文词段是不是单词。这个需要有现成的单词库去匹配才行。

扩展资料:

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。

两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

C++ 输入一行字符,分别统计出其中英文字母个数~~

拜托各位,写简单点,最好标上注释,谢谢!
C++
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

#include <stdio.h>

int main()

char c;

int letters=0,space=0,digit=0,other=0;

printf("请输入一行字符:");

while ((c=getchar())!='\\n')

if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')

letters++;

else if (c == ' ')

space++;

else if (c >= '0'&&c <= '9')

digit++;

else

other++;

printf("字母数:%d\\n空格数:%d\\n数字数:%d\\n其他字符:%d\\n",letters,space,digit,other);

return 0;

扩展资料

在 C 语言中,字符串实际上是使用 null 字符 '\\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。

char greeting[6] = 'H', 'e', 'l', 'l', 'o', '\\0';

依据数组初始化规则,可以把上面的语句写成以下语句:

char greeting[] = "Hello";

参考技术A #include<stdio.h>
main()

int letter=0,number=0,blank=0,other=0;\\分别用来统计字母,数字,空格和其它字符的个数
char c; \\用来读取字符
while ((c=getchar())!='\n') \\结束条件,当读入的是回车,用c每次读取一个字符进行比较

if(c>='a'&&c<='z'||c>='A'&&c<='Z') \\判断,介于a和z之间或A和Z之间的为字母
letter++;
else

if(c>='0'&&c<='9') \\0到9之间的为数字
number++;
else

if(c==' ') \\判断是否为空格
blank++;
else
other++; \\其它情况



printf ("There are %d letters,%d numbers,%d blanks and %d other character.\n",letter,number,blank,other);
本回答被提问者采纳
参考技术B # include<iostream>
# include<stdlib.h>
#include<string>
//#include<sstream.h>
//#include<fstream>
using namespace std ;

main()

int Scnt[26],Bcnt[26],m_space;
int Acnt[128];

char temp,sub;
int i,len,lenbak;
string str;
cout<<"###############################################################"<<endl;
cout<<"# #"<<endl;
cout<<"# 欢迎使用字符统计!本例子可以统计ASCII中可以显示的任意字符数 #"<<endl;
cout<<"# 请输入一串字符,输入结束后请按两次回车键!谢谢! #"<<endl;
cout<<"# #"<<endl;
cout<<"###############################################################"<<endl;
getline(cin,str);
cout<<str<<endl;
len=str.length();
m_space=0;
for(i=0;i<26;i++)

Scnt[i]=0;
Bcnt[i]=0;

for(i=0;i<128;i++)

Acnt[i]=0;

for(i=0;i<=str.length();i++)

strcpy(&temp,str.substr(i,1).c_str());
for(sub='a';sub<='z';sub++)

if(temp==sub)

Scnt[sub-0x61]++;


for(sub='A';sub<='Z';sub++)

if(temp==sub)

Bcnt[sub-0x41]++;


if(temp==' ')

m_space++;

for(sub='!';sub<='~';sub++)

if(temp==sub)

Acnt[sub]++;




cout<<"小写字母统计:\n";
len=0;
lenbak=1;
for(i=0;i<26;i++)

if(Scnt[i]!=0)

cout<<char(i+0x61)<<" : "<<Scnt[i]<<" 个\t";
len++;


if(len%5==0)

if(lenbak!=len)

cout<<endl;
lenbak=len;




if(len==0)

cout<<"无小写字母!"<<endl<<endl;

len=0;
lenbak=1;
cout<<"\n大写字母统计:\n";
for(i=0;i<26;i++)

if(Bcnt[i]!=0)

cout<<char(i+0x41)<<" : "<<Bcnt[i]<<" 个\t";
len++;


if(len%5==0)

if(lenbak!=len)

cout<<endl;
lenbak=len;




if(len==0)

cout<<"无大写字母!"<<endl;

cout<<endl<<"空格统计: ";
if(m_space==0)

cout<<"无空格!";

else

cout<<m_space<<"个";

cout<<endl<<"所有ASCII 码统计:\n";
len=0;
lenbak=1;
for(i=33;i<128;i++)

if(Acnt[i]!=0)

cout<<"'"<<char(i)<<"':"<<Acnt[i]<<" 个 ";

if(len%5==0)

if(lenbak!=len)

cout<<endl;
lenbak=len;



cout<<endl;
system("pause");
return 0;
参考技术C #include<stdio.h>
main()

int
letter=0,number=0,blank=0,other=0;\\分别用来统计字母,数字,空格和其它字符的个数
char
c;
\\用来读取字符
while
((c=getchar())!='\n')
\\结束条件,当读入的是回车,用c每次读取一个字符进行比较

if(c>='a'&&c<='z'||c>='A'&&c<='Z')
\\判断,介于a和z之间或A和Z之间的为字母
letter++;
else

if(c>='0'&&c<='9')
\\0到9之间的为数字
number++;
else

if(c=='
')
\\判断是否为空格
blank++;
else
other++;
\\其它情况



printf
("There
are
%d
letters,%d
numbers,%d
blanks
and
%d
other
character.\n",letter,number,blank,other);
参考技术D #include<stdio.h>
main()

intletter=0,number=0,blank=0,other=0;\\分别用来统计字母,数字,空格和其它字符的个数
charc;\\用来读取字符
while((c=getchar())!='\n')\\结束条件,当读入的是回车,用c每次读取一个字符进行比较

if(c>='a'&&c<='z'||c>='A'&&c<='Z')\\判断,介于a和z之间或A和Z之间的为字母
letter++;
else

if(c>='0'&&c<='9')\\0到9之间的为数字
number++;
else

if(c=='')\\判断是否为空格
blank++;
else
other++;\\其它情况



printf("Thereare%dletters,%dnumbers,%dblanksand%dothercharacter.\n",letter,number,blank,other);

以上是关于输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?的主要内容,如果未能解决你的问题,请参考以下文章

输入一行字符,分别统计出其中英文字母、空格、数字、其它字符的个数!利用 while?

在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?

输入一行文字,找出其中的大写字母小写字母空格数字以及其他字符各有多少

输入一行字符,分别统计出其中英文字母空格数字和其他字符

输入一行字符,分别统计出其中英文字母空格数字和其他字符

Java学习:输入一串字符串,分别统计出其中的中英文字母,空格,数字和其他字符的个数