输入一个字符串,统计字母与非字母的个数

#include "stdio.h"
main()
{    int i,j,k,m;
    char a[i];
    m=i-1;
    printf("请输入一个字符串:\n");
    scanf("%s",&a[i]);
    for(i=0;i<=m;i++)
    {    if(a[i]>'a'&&a[i]<'z')
            j++;
        else if(a[i]>'A'&&a[i]<'Z')
            j++;
        else
            k++;    
    }
    printf("字母有%d个,非字母有%d个",j,k);
 } 

我想写一个"输入一个字符串,统计字母与非字母的个数”的代码,上面的代码没有报错就是计算错误,是哪里错了吗,欢迎提供一些建议

字符串的读取不能这么读,其次j k需要初始化为0,再有,判断时的if需要取等号

#include "stdio.h"
#include "string.h"
main()
{    int i,j=0,k=0,m;
    char a[i];
    printf("请输入一个字符串:\n");
    scanf("%s",a);   //读取字符串a
    m=strlen(a);   //获取字符串a的长度
    for(i=0;i<m;i++)    //此处不能等于m
    {    if(a[i]>='a'&&a[i]=<'z')   //此处需加上=
            j++;
        else if(a[i]>='A'&&a[i]=<'Z')   //此处需加上=
            j++;
        else
            k++;    
    }
    printf("字母有%d个,非字母有%d个",j,k);
 } 

#include<iostream>
#include "stdio.h"
#include<string>
using namespace std;
int main()
{
    int j=0, k=0, m;
    string a;

    printf("请输入一个字符串:\n");
    cin>>a;
    m = a.size();
    for (int i = 0; i <= m; i++)
    {
        if (a[i] >= 'a'&&a[i] <= 'z')
            j++;
        else if (a[i] >= 'A'&&a[i] <= 'Z')
            j++;
        else
            k++;
    }
    printf("字母有%d个,非字母有%d个", j, k);
}

img

修改如下,供参考:

#include "stdio.h"
int main()
{
    int i, j, k, m;
    char a[1024];     //char a[i]; 修改
                      //m = i - 1; 修改
    printf("请输入一个字符串:\n"); 
    scanf("%[^\n]", a); //scanf("%s", &a[i]);修改
    j = 0; k = 0;   //修改
    for (i = 0; a[i]; i++)  //for (i = 0; i <= m; i++) 修改
    {
        if (a[i] >= 'a' && a[i] <= 'z')  //(a[i] > 'a' && a[i] < 'z') 修改
            j++;
        else if (a[i] >= 'A' && a[i] <= 'Z') // (a[i] > 'A' && a[i] < 'Z') 修改
            j++;
        else
            k++;
    }
    printf("字母有%d个,非字母有%d个", j, k);
    return 0;
}

1.大于等于,小于等于,你少了等于,否则A和Z不被计数
2.j,k没有初始化为0
3.scanf("%s",a);,你要写a[i]那就需要循环读


#include <stdio.h>
int main()
{
    char c;
    int j = 0, k = 0;
    printf("请输入一个字符串:\n");
    while((c=getchar())!='\n')
    {
        if((c>='a' && c<='z') || (c>='A' && c<='Z'))
            j++;
        else
            k++;
    }
    printf("字母有%d个,非字母有%d个",j,k);
    return 0;
 }