字符型数组的输出结果后面多一个方框的原因

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图

我的代码
c++

#include
#include
using namespace std;
int main()
{
char a[80],b[80];
int n;
cin.getline(a,80,'\n');
n=strlen(a);
for(int i=0; i<=n; i++)
{
if((a[i]>='A')&&(a[i]<'Y'))
b[i]=a[i]+2;
if((a[i]>='Y')&&(a[i]<='Z'))
b[i]=a[i]+2-26;
if((a[i]>='a')&&(a[i]<'y'))
b[i]=a[i]+2;
else if((a[i]>='y')&&(a[i]<'z'))
a[i]=a[i]+2-26;
}
cout<<b<<endl;
cout<<a;
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

img

把char a[80],b[80];改成char a[80],b[81];
在它后面加上memset(b,'\0',sizeof(b));