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 中可包含 this 和 is ,选用 this 之后就不能包含 th )。
单词在给出的一个不超过 6 个单词的字典中。
要求输出最大的个数。
输入输出格式
输入格式:
每组的第一行有 2 个正整数( p,k )
p 表示字串的行数, k 表示分为 k 个部分。
接下来的 p 行,每行均有 20 个字符。
再接下来有 1 个正整数 sss ,表示字典中单词个数。( 1≤s≤6 )
接下来的 s 行,每行均有 1 个单词。
输出格式:
1个整数,分别对应每组测试数据的相应结果。
输入输出样例
1 3 thisisabookyouareaoh 4 is a ok sab
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语言中怎样统计字符串中包含英文字母的个数?的主要内容,如果未能解决你的问题,请参考以下文章