c语言中怎样统计字符串中包含英文字母的个数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎样统计字符串中包含英文字母的个数?相关的知识,希望对你有一定的参考价值。

编写函数完成以下功能,统计字符串str中饱含的英文字母、空格、数字和其他字符的个数,并将统计结果保存到数组num中,num【0】存英文字母个数,num【1】存,空格个数,num【2】存数字个数,num【3】存其他字符个数。急用,今天就选出最佳答案。谢谢!
*p<='z'&&*p>='a'
请问能这样比较么?有点不确定

c语言中要统计字符串中包含英文字母的个数可以参考以下内容:

main()

char str[100],*p;

int num[4],i;

p=str;

gets(str);

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

num[i]=0;

for(;*p!='\\0';p++)

if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A')) num[0]++;

else if(*p==' ') num[1]++;

else if((*p<='9'&&*p>='0')) num[2]++;

else num[3]++;

printf("%d  %d  %d  %d\\n",num[0],num[1],num[2],num[3]); 

扩展资料:

在写代码的过程中需要注意:

void main()的用法并不是任何标准制定的。 C语言标准语法是int main,任何实现都必须支持int main(void) /* ... */ 和int main(int argc, char* argv[]) /* ... */ 。

类似于a+=a++;或者(i++)+(i++)+(i++)属于未定义行为,并不是说c语言中还未定义这种行为,它早有定论,它的结果取决于编译器实现,不要写这样的代码。

参考技术A

#include<stdio.h>

#include<string.h>

int main( )

int i,ch=0,sp=0,num=0,other=0;

char str[50];

gets(str);

for(i=0;i<strlen(str);i++)

if(str[i]>='0'str[i]<='9')

num++;

else if(str[i]>='a'str[i]<='z'||str[i]>='A'str[i]<='Z')

ch++;

else if(str[i]==' ')

sp++;

else

other++;

printf("%c\\n",str[i]);

printf("Char:%d,Space:%d,Num:%d,Other:%d",ch,sp,num,other);

return 0;

扩展资料

其他方法统计字符串中包含英文字母的个数:

#include <stdio.h>

#include <stdlib.h>

int main( )

char c;

int letters=0;

int space=0;

int digit=0;

int 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);

system ("pause");

return 0;

参考技术B

#include<stdio.h>

#include<string.h>

int main( )

int i,ch=0,sp=0,num=0,other=0;

char str[50];

gets(str);

for(i=0;i<strlen(str);i++)

if(str[i]>='0'str[i]<='9')

num++;

else if(str[i]>='a'str[i]<='z'||str[i]>='A'str[i]<='Z')

ch++;

else if(str[i]==' ')

sp++;

else

other++;

printf("%c\\n",str[i]);

printf("Char:%d,Space:%d,Num:%d,Other:%d",ch,sp,num,other);

return 0;

扩展资料

其他方法统计字符串中包含英文字母的个数:

#include <stdio.h>

#include <stdlib.h>

int main( )

char c;

int letters=0;

int space=0;

int digit=0;

int 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);

system ("pause");

return 0;

参考技术C #include <stdio.h>

int count_letter(char *str)

    char *p = str;
    int cnt = 0;

    //开始计数
    while (*p != '\\0') 
        if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) 
            cnt++;
        

        p++;
    
    //计数完成
    
    printf("letter cnt:%d\\n", cnt); //打印出英文字母总数

    return cnt; //计数结果返回


int main()

    char *str = "gkdial9-1.;J19D-=-=YdlUImf"; //实例字符串
    count_letter(str); //调用计数函数
    return 0;


以上源码。


主要思路为循环到字符串结尾,逐字符判断是否属于字母范围(A到Z或a到z),如果为字母则计数器+1,直到字符为结束符'\\0'为止,表示字符串结束,并将结果返回给函数调用者。

参考技术D c语言中要统计字符串中包含英文字母的个数可以参考以下内容: main() char str[100],*p; int num[4],i; p=str; gets(str); for(i=0;i<4;i++) num[i]=0; for(;*p!='\0';p++) if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A')) num[0]++; else if(*p==' ') num[1]++; else if((*p<='9'&&*p>='0')) num[2]++; else num[3]++; printf("%d %d %d...

P1026 统计单词个数

题目描述

给出一个长度不超过 200 的由小写英文字母组成的字母串(约定;该字串以每行 20 个字母的方式输入,且保证每行一定为 20 个)。要求将此字母串分成 k 份( 1<k≤40 ),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串 this 中可包含 thisis ,选用 this 之后就不能包含 th )。

单词在给出的一个不超过 6 个单词的字典中。

要求输出最大的个数。

输入输出格式

输入格式:

每组的第一行有 2 个正整数( p,k )

p 表示字串的行数, k 表示分为 k 个部分。

接下来的 p 行,每行均有 20 个字符。

再接下来有 1 个正整数 sss ,表示字典中单词个数。( 1≤s≤6 )

接下来的 s 行,每行均有 1 个单词。

输出格式:

1个整数,分别对应每组测试数据的相应结果。

输入输出样例

输入样例#1: 复制
1 3
thisisabookyouareaoh
4
is
a
ok
sab
输出样例#1: 复制
7

首先一定要夸赞一下水出境界的数据,让我这种蒟蒻用5重循环把这道题水过去了╮(╯▽╰)╭
5重循环后就变成了一道简单dp
f[i][j]表示到第个字符,分成j组后的最大值
f[i][j]=max(f[l-1][j-1]+z[l][i])
每次穷举l然后暴力穷举q(l~i)中每个字母能否作为首字母匹配单词求出z[l][i]

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;

int i,m,n,j,k,b[10],w,ee,l,q,p,f[201][50],ans,o,v[10001];
char c[201],a[100001],d[10][201];
bool bl;
int main()
{
	w=n*20;
	for(j=0;j<n;j++)
	{
		cin>>c;
		for(i=0;i<20;i++) a[j*20+i]=c[i];
	}
	scanf("%d",&m);
	for(i=1;i<=m;i++)
	{
		cin>>d[i];
		b[i]=strlen(d[i]);
	}
	for(i=0;i<w;i++)
		for(j=1;j<=min(i,k);j++)
			for(l=j-1;l<=i;l++)
			{
				if(i==5)
				{
					ee=0;
				}
				ans=0;
				for(q=l;q<=i;q++)
				{
					bl=0;
					for(p=1;p<=m;p++)
					{
						int t=q,e=0;
						while((a[t]==d[p][e])&&(t<=i)&&(e<b[p])) t+=1,e+=1;
						if(e==b[p])	
						{
							bl=1;
							break;
						}
					}
					if(bl) ans+=1;
				}
				f[i][j]=max(f[i][j],ans+f[l-1][j-1]);
			}
		printf("%d\n",f[w-1][k]);
}

 

 

以上是关于c语言中怎样统计字符串中包含英文字母的个数?的主要内容,如果未能解决你的问题,请参考以下文章

2001年 统计单词个数

统计单词个数

P1026 统计单词个数

P1026 统计单词个数

统计单词个数(codevs 1040)

洛谷 P1026统计单词个数