#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);
}
有用可以采纳一下