c++输入一行字符串,要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。谁会啊?

2024-11-26 08:34:51
推荐回答(5个)
回答1:

#include
#include
void
main()
{
char
sen[256];
int
ben=0,men=0,spa=0,num=0,oth=0;
int
i;
gets(sen);
for(i=0;i<(int)strlen(sen);i++)
{
if(sen[i]>='a'&&sen[i]<='z')
{
ben++;
}
else
if(sen[i]>='a'&&sen[i]<='z')
{
men++;
}
else
if(sen[i]>='
')
{
spa++;
}
else
if(sen[i]>='0'&&sen[i]<='9')
{
num++;
}
else
{
oth++;
}
}
printf("大写字母有%d个\n小写字母有%d个\n空格有%d个\n数字有%d个\n其他字符有%d个\n",ben,men,spa,num,oth);
getchar();
}
————————————————
如果以上出现“%”符号,那是为了防止系统误识我把半角符号写成全角符号了,注意改回来。
————————————————
亲爱的lz,如果我的回答能够帮你解决问题,或是对你有帮助,或是对你今后的发展造成积极的影响,那么请您采纳我的回答吧,同时更迫切地希望您能够在采纳的时候帮我打上“能解决”和“原创”,然后把两行的五颗五角星分别点亮,点亮五角星就是点亮你我的希望。
我冲11级了,需要很多综合声望,感谢您的帮助,衷心祝愿您快乐每一天~

回答2:

#include "stdio.h"
#include "string.h"
void main()
{
char str[100],m;
int i,n,space=0,num=0,letter=0,other=0;
printf("请输入一串字符!按回车结束!\n");
gets(str);
n=strlen(str);
for(i=0;i<=n-1;i++)
{
m=str[i];
if(m==32)space++;
else if(m>='A'&&m<='Z'||m>='a'&&m<='z')letter++;
else if(m>='0'&&m<='9')num++;
else other++;
}
printf("有字母%d个,数字%d个,空格%d个,其他字符%d个。",letter,num,space,other);
}

回答3:

#include
#include

int main()
{
char c;
int digit = 0, upper = 0, lower = 0, space = 0, other = 0;
while (scanf("%c", &c) == 1 && c != '\n')
{
if (isdigit(c))
++digit;
else if (isupper(c))
++upper;
else if (islower(c))
++lower;
else if (isspace(c))
++space;
else
++other;
}
printf("%d Digit(s), %d Upper Case(s), %d Lower Case(s), %d Space(s), %d Other(s)\n", digit, upper, lower);
}

回答4:

你必须包含ctype.h
然后使用isupper,islower,isdigit,isspace分别判断大写,小写,数字,和空格,当然如果你熟悉ascii表,可以直接根据值的大小来判断字符的属性.

回答5:

#include
"stdio.h"
#include
"string.h"
void
main()
{
char
str[100],m;
int
i,n,space=0,num=0,letter=0,other=0;
printf("请输入一串字符!按回车结束!\n");
gets(str);
n=strlen(str);
for(i=0;i<=n-1;i++)
{
m=str[i];
if(m==32)space++;
else
if(m>='A'&&m<='Z'||m>='a'&&m<='z')letter++;
else
if(m>='0'&&m<='9')num++;
else
other++;
}
printf("有字母%d个,数字%d个,空格%d个,其他字符%d个。",letter,num,space,other);
}