tengqs 发表于 2020-8-21 11:05:04

大小写转换问题

#include <stdio.h>

int main()
{
    char a;

    printf("请输入一个字母:");
    scanf_s("%c", &a);

    if (a >= 'a' && a <= 'z')
    {
      a = a - 32;
    }

    if (a >= 'A' && a <= 'Z')
    {
      a = a + 32;
    }



    printf("%c\n", a);

    return 0;
}

为什么只能把大写转化为小写,却不能把小写转化为大写呢

livcui 发表于 2020-8-21 11:06:59

#include <stdio.h>

int main()
{
    char a;

    printf("请输入一个字母:");
    scanf_s("%c", &a);

    if (a >= 'a' && a <= 'z')
    {
      a = a - 32;
    }

    if (a <= 'A' && a >= 'Z')
    {
      a = a + 32;
    }



    printf("%c\n", a);

    return 0;
}

xieglt 发表于 2020-8-21 11:35:07

#include <stdio.h>

int main()
{
    char a;

    printf("请输入一个字母:");
    scanf_s("%c", &a);

    if (a >= 'a' && a <= 'z')
    {
      a = a - 32;
    }
//这里要加个else,否则,你转换成大写后,下面的判断又把它转换成小写了。
    else if (a <= 'A' && a >= 'Z')
    {
      a = a + 32;
    }



    printf("%c\n", a);

    return 0;
}

学习型motor 发表于 2020-8-21 13:14:03

本帖最后由 学习型motor 于 2020-8-21 13:16 编辑

你的代码在你输入小写字母比如a的时候,会进入第一个if语句进行判断转换成大写字母A,然后大写字母A会继续进入第二个if语句进行判断转换成小写字母a,所以你的小写是进行了两次转换的,修改的方法很简单,只需要在第二个if 前加上else就可以了

聂嘉辉 发表于 2020-8-21 13:16:24

#include <stdio.h>

int main()
{
    char a;

    printf("请输入一个字母:");
    scanf_s("%c", &a);

    if (a >= 'a' && a <= 'z')
    {
      a = a - 32;
    }

    if (a <= 'A' && a >= 'Z')
    {
      a = a + 32;
    }



    printf("%c\n", a);

    return 0;
}

tengqs 发表于 2020-8-21 13:29:13

学习型motor 发表于 2020-8-21 13:14
你的代码在你输入小写字母比如a的时候,会进入第一个if语句进行判断转换成大写字母A,然后大写字母A会继续 ...

醍醐灌顶啊,谢谢

巴巴鲁 发表于 2020-8-21 14:04:15

livcui 发表于 2020-8-21 11:06


总感觉哪里不对劲{:10_327:}

livcui 发表于 2020-8-21 14:26:25

巴巴鲁 发表于 2020-8-21 14:04
总感觉哪里不对劲

{:10_245:}
页: [1]
查看完整版本: 大小写转换问题