int main(){
int s[80],f1=0,num=0;
gets(s);
int n = strlen(s);
printf("%d",n);
for (int i = 0; i<n-1; i++) {
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')) {
f1=1;
}
if(s[i]>='0'&&s[i]<='9'){
f1=0;
}
if((s[i]==' '||s[i]=='.')&&(f1==1)) {
num++;
}
printf("%d",f1);
}
printf("有 %d 个单词",num);
}
实际上f1总是print出一堆0,所有都是0?问题出在哪?
求大神教育
为嘛不用正则表达式??
这几个while是什么鬼,不应该是if吗?
你打 f1是什么鬼?输出的不该是num么
小伙子你这段代码的bug很多啊,如果连续两个空格就会出现多记,如果没有句号,你就会漏记一个单词,上码
include <stdio.h>
int main()
{
char s[80] = {0};
char *p;
int num = 0;
unsigned char flag = 0;
gets(s);
p = s;
while(*p++)
{
if(( *p >= 'a' && *p <= 'z')||( *p >= 'A' && *p <= 'Z') )
{
flag = 1;
}
else if (flag == 1)
{
flag = 0;
num++;
}
}
printf("there are %d words\n",num);
}
良好的注释
你这是统计字母还是单词?