PTA实验报错,部分正确,不清楚错在哪里

原题

img

#include<stdio.h>
int main()
{
    char a[81];
    int i,m,flag=0,n;
    scanf("%c",&a[0]);
    for(i=1;a[i-1]!='\n';i++)
    {
        scanf("%c",&a[i]);
    }
    scanf("%d",&m);
    n=i-1;
    if(m<0)
    {
        flag=1;
    }
    m=m%26;
        for(i=0;i<n;i++)
    {
        if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
        {
        a[i]=a[i]+m;
        if(!((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')))
        (flag==1)?(a[i]=a[i]+26):(a[i]=a[i]-26);
        }    
    }
    for(i=0;i<n;i++)
    {
        printf("%c",a[i]);
    }
    return 0;
} 

提交结果

img

快崩溃了TnT

20行小写和大写判定时要分开
Z ASCII是90,如果偏移量是7的话,答案应该是G,你的代码输出的是a