入门字符串分类统计 其他类型出错
一个简单入门题要求:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
例如:aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
输出结果为:23 16 2 4
但按照我写的代码
#include<stdio.h>
#include<string.h>
int main()
{
char str;
int a=0,b=0,c=0,d=0,i,n;
gets(str);
n=strlen(str);
for(i=0;i<n;i++){
if(str>='A'&&str<='Z'||str>='a'&&str<='z'){
a++;
}
if(str>='0'&&str<='9'){
b++;
}
if(str==' '){
c++;
}
else
d++;
}
printf("%d %d %d %d",a,b,c,d);
return 0;
}
输出结果为:23 16 2 43这个其他字符类型一直不对这是为何 if(str>='A'&&str<='Z'||str>='a'&&str<='z'){
a++;
}
elseif(str>='0'&&str<='9'){
b++;
}
elseif(str==' '){
c++;
}
else
d++; 本帖最后由 jackz007 于 2021-1-25 20:12 编辑
所有的判断必须一脉相承,成为一个体系,d 的值才能正确,因为 d 的值必须是排除了前面所有的情况之后的结果,目前的情况是,只要当前字符不是空格,d 就加 1 。
if(str>='A'&&str<='Z'||str>='a'&&str<='z'){
a++;
}
if(str>='0'&&str<='9'){
b++;
}
if(str==' '){
c++;
}
else
d++;
改为
if(str>='A'&&str<='Z'|| str>='a' && str <='z'){
a ++ ;
} else if(str>='0'&&str<='9'){
b ++ ;
} else if(str==' '){
c++ ;
} else {
d ++ ;
}
就妥了
页:
[1]