c语言统计非字母个数的问题,新人求解

为什么我这种方法错了?
#include
void main()
{
char c;
int a=0;
printf("请输入一串字符:");
for(;(c=getchar())!='\n';a++)
if(c>='A'&&c<='Z'||c>='a'&&c<='z')
continue;

  printf("非字母个数为:%d\n",a);

}

你输出的值a是循环的次数。continue结束的是本次循环但是a还是++了,所以a不是非字母的个数
#include
#include
void main()
{
int c;
int a=0;
int i=0;
printf("请输入一串字符:");
for(;(c=getchar())!='\n';a++)
{
if(c>='A'&&c<='Z'||c>='a'&&c<='z')
continue;
else
i++;
}
printf("非字母个数为:%d\n",i);
system("pause");
return 0;
}

 int main()
{
    char c;
    int a = 0, n = 0;
    printf("请输入一串字符:");
    for (; (c = getchar()) != '\n'; a++)
        if ((c >= 'A'&&c <= 'Z') || (c >= 'a'&&c <= 'z'))
        {
            n++;
            continue;
        }
    printf("非字母%d个,字母%d个,共%d个字符\n", (a - n), n, a);
    return 0;
}