ynnh 发表于 2023-5-5 22:34:13

输入字母输出对应大/小写

#include <stdio.h>

int main()
{
        char i, j;
       
        j = 'a' - 'A';
       
        scanf("%c", &i);
       
        if ('i' <= 'z' && 'i' >= 'a')
        {
                i = i - j;
        }
        else if ('i' >= 'A' && 'i' <= 'Z')
        {
                i = i + j;
        }
       
        printf("%c", i);
       
        return 0;
}

小写能正常转换但是输入大写就不行,不懂什么原因{:10_266:}
还有代码有什么赘余或者不规范的地方也希望能被大佬指出
谢谢大佬!

isdkz 发表于 2023-5-5 22:36:13

你好!你的代码中有一些小问题,我已经帮你修复了。主要问题在于 if 语句中的条件判断,你应该使用变量 i 而不是字符 'i'。请查看下面修复后的代码:

#include <stdio.h>

int main()
{
    char i, j;

    j = 'a' - 'A';

    scanf("%c", &i);

    if (i <= 'z' && i >= 'a')
    {
      i = i - j;
    }
    else if (i >= 'A' && i <= 'Z')
    {
      i = i + j;
    }

    printf("%c", i);

    return 0;
}


关于代码风格和规范,以下是一些建议:

1. 可以使用更具描述性的变量名,例如input_char和case_offset ,这样可以提高代码的可读性。
2. 使用 const 关键字定义一个常量用于存储大小写字符之间的偏移量。

修复后的代码:

#include <stdio.h>

int main()
{
    char input_char;
    const char case_offset = 'a' - 'A';

    scanf("%c", &input_char);

    if (input_char <= 'z' && input_char >= 'a')
    {
      input_char = input_char - case_offset;
    }
    else if (input_char >= 'A' && input_char <= 'Z')
    {
      input_char = input_char + case_offset;
    }

    printf("%c", input_char);

    return 0;
}


这样代码会更易于阅读和维护。希望对你有所帮助!

歌者文明清理员 发表于 2023-5-5 22:46:25

《'i'》

ynnh 发表于 2023-5-6 09:09:27

歌者文明清理员 发表于 2023-5-5 22:46
《'i'》

真是简洁呢{:10_266:}
页: [1]
查看完整版本: 输入字母输出对应大/小写