关于if语句和switch语句 不知道怎么打 麻烦大家解一下了,万分感激!

#include
void main()
double a;
printf("%f",a);
scanf("%f",&a);
switch(a)
{
case 'a':printf("%f",a);
break;

    default:printf("输入的字符不是字母\n");
}

}
显示错误,不知道怎么打下去了 后面还有但是不知道怎么打了,求解!
题目如下: 输入一个字符,判断字符必须为字母,为其它字符则输出“输入字符不是字母”
然后输入的字符改为当前字符的下一个字符,例:c改为d,Z改为A。注意大小写不能改变。

//char类型在c++里存的是ascii码,是int型,能直接用+1来获取下一个数
 #include <stdio.h>

void main()
{
    char ch = getchar();    //读字符

    if (ch >= 'A'&&ch <= 'Z')   //A-Z
    {
        ch = (ch - 'A' + 1) % 26 + 'A';     //ch-'A'代表这个数距离字母A的偏移量;+1代表字母+1;%26代表26个字母循环,也就是Z+1=A;最后计算出的偏移值+A就是实际的值
        printf("%c\n", ch);
    }
    else if (ch >= 'a'&&ch <= 'z')  //a-z
    {
        ch = (ch - 'a' + 1) % 26 + 'a';     //同理
        printf("%c\n", ch);
    }
    else    //其它
    {
        printf("输入的字符不是字母\n");
    }
}

我觉得直接可以判断
if如果这个字符是不是在a到y或者A到Y之间,如果在直接加一,
else if如果不在判断是不是z或者Z,如果是则减去25,
else 直接输出不就可以了

double类型不能用在switch里边做选择

#include <stdio.h>
void main(){
char a;
printf("输入一个字符:");
scanf("%c",&a);
if(a>='a'&&a<='z'||a>='A'&&a<='Z'){
    switch(a){
    case 'z':
        printf("a");break;
    case 'Z':
        printf("A");break;
    default:
        printf("%c",a+1);break;
    }   
}else{
    printf("输入的字符不是字母\n");
}
}