题目:不知道写凯撒加密的C语言哪里出错了


代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char a[1000],b[1000];
scanf("%d",&n);
scanf("%s",&a);
for (i=0;a[i]!='\0';i++)
if (a[i]>='0' && a[i]<='9')
b[i]='0'+(a[i]-'0'+n)%10;
else if (a[i]>='a' && a[i]<='z')
b[i]='a'+(a[i]-'a'+n)%26;
else if (a[i]>='A' && a[i]<='Z')
b[i]='A'+(a[i]-'A'+n)%26;
else
b[i]=a[i];
printf("%s",b);
return 0;
}

不知道代码哪里错了,最终运行评测的结果只有两个是对的,求解答