一直输出零,不知道为什么

img


#include <stdio.h>
#include<string.h>
int main(){
    char a[100];
    int i,max=0,count=0;
    /*for(i=0;a[i]!='\0';i++){
        scanf("%c",&a[i]);
    }*/
    fgets(a,99,stdin);
    a[strlen(a)]='\0';
    for(i=0;a[i]!='\0';i++){
       // printf("%c",a[i]);
        if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')){
            count++;
        }
        else{
            if(max<count){
                max=count;
            }
            count=0;
        }
    }
    if(max<count) max=count;
    printf("%d\n",max);

}

先输入一个数字给a[0]
然后循环,判断a[i-1]是不是0
否则你先判断,后赋值,没赋值之前里面肯定是0啊,循环根本就没走

max没有初始化,应该定义为0或-1就应该可以了,因为分配给它的空间可能有残余的数值,然后比你这里的长度数字都大或者你那个判断规则应该改成if((&&)||(&&)),&&和||优先级问题


#include <stdio.h>


int main()
{
    char a[100];
    int i,max,count = 0;
    //scanf("%[^\n]",&a[i]); 用scanf读字符串的正确操作
    for(i=0;a[i]!='\0';i++){
        scanf("%[^\n]",&a[i]);
    }

    for(i=0;a[i]!='\0';i++){
        if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z'){
            count++;
        }
        else{//如果只是统计字符串中字母的多少,可以不需要下面这几行
            if(max<count){
                    max=count;
            }
            count = 0;
        }     
    }
    printf("%d\n",max);
    
}

img

有用可以采纳一下