请问这个的for循环那里,为什么是i<n+1呢?而不是i<n。

题目:从键盘输入一行或几行字符串,行数由键盘输入,一行字符串用字符数组存储。请统计所输入的字符串中26个字母(不区分大小写)出现的次数,并将出现次数非零的字母统计结果输出到屏幕上,格式参见样例。如果没有字母,请输出字符串中无字母。

#include<iostream>
using namespace std;
int b[26] = { 0 };
void func(char a)
{
    if (a >= 'a' && a <= 'z')
    {
        b[a - 'a']++;
    }
    else if (a >= 'A' && a <= 'Z')
    {
        b[a - 'A']++;
    }
}
int main()
{
    int n;
    cin >> n;
    char a[100] = { 0 };
    for (int i = 0; i < n+1 ; i++)  //我的问题在这
    {
        cin.getline(a, 100);
        int j = 0;
        while (a[j] != '\0')
        {
            func(a[j]);
            j++;
        }
    }

    int count = 0;//判断有无字母
    for (int i = 0; i < 26; i++)
    {
        if (b[i] != 0)
        {
            cout << char(i + 'a') << ":" << b[i] << endl;
            count++;
        }
    }
    if (count == 0)
    {
        cout << "字符串中无字母。" << endl;
    }
    return 0;
}


因为输入完数字后还有一个回车在缓冲区没被读取
getline()会把它当做一行读取
你也可以在for循环的上一行使用getchar()
就可以把n+1换成n了