c语言统计字符串中每个字符出现的次数
#include<stdio.h>#include<string.h>#include<math.h>intmain(){intl=0,s=0,n=0,o=0;chara...
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int l=0,s=0,n=0,o=0;
char a[1000];
scanf("%s\n",a);
int length = strlen(a);
for(int i = 0; a[i]!='\0'; i++)
{
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{ l++; }
else
{ if(a[i]==' ')
{ s++; }
else
{ if(a[i]<='9'&&a[i]>='0')
{ n++; }
else o++;
}
}
}
printf("字母:%d\n",l);
printf("数字:%d\n",n);
printf("空格:%d\n",s);
printf("其他:%d\n",o);
}
为什么统计不了空格??? 展开
#include<string.h>
#include<math.h>
int main()
{
int l=0,s=0,n=0,o=0;
char a[1000];
scanf("%s\n",a);
int length = strlen(a);
for(int i = 0; a[i]!='\0'; i++)
{
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{ l++; }
else
{ if(a[i]==' ')
{ s++; }
else
{ if(a[i]<='9'&&a[i]>='0')
{ n++; }
else o++;
}
}
}
printf("字母:%d\n",l);
printf("数字:%d\n",n);
printf("空格:%d\n",s);
printf("其他:%d\n",o);
}
为什么统计不了空格??? 展开
2个回答
展开全部
scanf语句遇到空格、退格符、回车就结束读取,因此如果字符串中有空格,不能用scanf,可以用gets。另外,这个程序写得实在太乱了。太多大括号,基本上都不需要,一对大括号就可以了。else if的用法也不是这样用的。printf语句也没必要分这么多句。main为int型,要有返回值。修改一下:
#include <stdio.h>
#include <string.h>
int main()
{
int l=0,s=0,n=0,o=0;
char a[1000]={'\0'};
gets(a);
for(int i=0;a[i]!='\0';i++)
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
l++;
else if(a[i]==' ') s++;
else if(a[i]<='9'&&a[i]>='0') n++;
else o++;
printf("字母: %d\n数字: %d\n空格: %d\n其它: %d",l,n,s,o);
return 0;
}
//运行示例:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询