C语言的问题,为什么输出好几个结果

img

#include <stdio.h>
int main()
{
int n,m;
char c;
scanf("%d %c",&n,&c);
if(c>64&&c<91||c>96&&c<123)
{

    if(n>0&&c>64&&c<91)   //大写   
    {  
        if(c+n<91&&c>64)  
        printf("%c\n",c+n);  
        else  
           {m=n-(90-c);  
           while(m>26)  
           {m=m-26;}  
           printf("%c\n",m+64); }         
    }  
    
    else (n>0&&c>96&&c<123) ;//小写   
    {  
        if(c+n<123)  
        printf("%c\n",c+n);  
        else  
        {  
           m=n-(122-c);  
           while(m>26)  
           {m=m-26;}  
           printf("%c\n",m+96); }  
    }  
  
       

  //n小于 0   
    
    if(n<0&&c>64&&c<91)  
    {  
        if(c+n>64)  
        printf("%c\n",c+n);  
        else  
        {  
            m=-n-(c-65);  
            while(m>26)  
            {m=m-26;}  
            printf("%c\n",90-m);}  
          
          
          
    }  
      
      
  }  
  


else (c>0&&c<64||c>91&&c<96||c>123);  
{  
printf("Data Error!\n");}  

}

程序逻辑我没看,输出多个结果是因为else加了分分号