C语言中ASCII码与字符相互转化的问题

刚开始学C语言。

想用一个头文件一次性实现输入一个ASCII码(或字符),输出一个对应的字符(或ASCII码),但是不知道为什么在窗口控制台中输入1或2后程序就结束了,进行不到下一步(输入ASCII码或字符)。

VS2019环境

代码内容:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int a;
a = 0;
char b;
printf("第一步:如果想要ASCII码转字符,请输入1;如果想要字符转ASCII码,请输入2\n");
scanf("%d", &a);

if (a = 1)
{
    printf("请输入ASCII码:\n");
    scanf("%c", &b);
    printf("ASCII码为%d对应的字符为%c\n", b, b);

}
else
{
    printf("请输入一个字符(任意大小写字母、数字、特殊符号):\n");
    scanf("%c", &b);
    printf("字符%c对应的ASCII码为%d\n", b, b);
}
return 0;

运行结果及报错内容 :

img

我的思路:
第一步:判断是ASCII码转字符还是字符转ASCII码
第二步:用if else语句分别转换。

求解答~

if (a = 1) 改成 if (a ==1) ,一个等号是赋值,两个才是比较

img

修改见注释,供参考:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int a;
    a = 0;
    char b;
    printf("第一步:如果想要ASCII码转字符,请输入1;如果想要字符转ASCII码,请输入2\n");
    scanf("%d", &a);

    if (a == 1) //(a = 1) 修改
    {
        printf("请输入ASCII码:\n");

        scanf("%d", &b);  //scanf("%c", &b); 修改

        printf("ASCII码为%d对应的字符为%c\n", b, b);
    }
    else
    {
        printf("请输入一个字符(任意大小写字母、数字、特殊符号):\n");

        scanf(" %c", &b);  //scanf("%c", &b); 修改

        printf("字符%c对应的ASCII码为%d\n", b, b);
    }
    return 0;
}