求解如何从键盘输入一段文字,统计英文单词、空格、标点符号和数字的个数,用c语言?

2024-11-06 03:38:20
推荐回答(3个)
回答(1):

/*请输入字符串:12qwwJJ 09-=><该字符串中含有:大写字母:2个。
小写字母:3个。
数字:4个。
空格:3个。
其他字符:4个。
Press any key to continue*/#include
#include int main () {
char capitals = 0,lowercases = 0,digits = 0;
char spaces = 0,other = 0,length,i,c,s[200];
printf("请输入字符串:");
gets(s);
length = strlen(s);
for (i = 0;i < length;i++) {
c = *(s + i);
if((c >= 'A')&&(c <= 'Z')) { capitals++; continue; }
if((c >= 'a')&&(c <= 'z')) { lowercases++; continue; }
if((c >= '0')&&(c <= '9')) { digits++; continue; }
if(c == ' ') { spaces++; continue; }
else other++;
}
printf("\n该字符串中含有:\n\n");
if (capitals > 0) printf("大写字母:%d个。\n",capitals);
if (lowercases > 0) printf("小写字母:%d个。\n",lowercases);
if (digits > 0) printf("数字:%d个。\n",digits);
if (spaces > 0) printf("空格:%d个。\n",spaces);
if (other > 0) printf("其他字符:%d个。\n",other);
printf("\n\n");
return 0;
}

回答(2):

#include
#include

int main(void)
{
char str[80];
int a[4]={0};
int flag=1;
int i;
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(1==flag&&isalpha(str[i]))
{
flag=0;
a[0]++;
}
else
{
if(!isalpha(str[i])) flag=1;
if(isspace(str[i])) a[1]++;
if(ispunct(str[i])) a[2]++;
if(isdigit(str[i])) a[3]++;
}

}
printf("单词:%d\n空格:%d\n符号:%d\n数字:%d\n",a[0],a[1],a[2],a[3]);
return 0;
}

回答(3):

拆分字符串存入数组,然后编历检查