~白. 发表于 2018-5-31 19:52:02

不理解把字母大小写对调这段!求告知

#include <stdio.h>

void main()
{
    int i;
    char ch;
    printf("请输入一个字符:\n");
    ch=getchar();
    fflush(stdin);
    while(!(ch>='A'&&ch<='z')||(ch>'Z'&&ch<'a'))
    {
      printf("输入错误,请重新输入一个字符:\n");
      ch=getchar();
      fflush(stdin);
    }
    if(ch&32)
    {
      ch=ch&223;   //使第五位为0,变大写
    }
    else
    {
      ch=ch|255;   //使第五位为1,变小写
    }
    putchar(ch);
    ch=getchar();
    putchar(ch);
}




//假如输入字符'A'就执行1000001|11111111进行或运算得11111111这是小写字母'a'吗?求解释小白不理解

人造人 发表于 2018-5-31 20:12:09

这个代码是错误的呀

人造人 发表于 2018-5-31 20:24:56

我更喜欢这种方法
#include <stdio.h>

int main(void)
{
        char ch;
       
        printf("请输入一个字符: ");
        ch = getchar();
        if(('A' <= ch) && (ch <= 'Z'))
        {
                ch = ch - 'A' + 'a';
        }
        else
        {
                ch = ch - 'a' + 'A';
        }
        putchar(ch);
        putchar('\n');

        return 0;
}

~白. 发表于 2018-5-31 22:39:43

人造人 发表于 2018-5-31 20:12
这个代码是错误的呀

我抄的小甲鱼老师的应该没错啊!但我搞不懂大小字母对调这块
假如输入字符'B'就执行1000010|11111111进行或运算得11111111这是小写字母'b'能给我解释下这个吗?
ch=ch|255;   //使第五位为1,变小写       解释下这段代码怎么理解

~白. 发表于 2018-5-31 22:47:51

人造人 发表于 2018-5-31 20:24
我更喜欢这种方法

谢谢大神,这个确实更简便易懂,只是我不懂老师那个代码怎么实现大小转换的,所以我想请教下

~白. 发表于 2018-5-31 23:00:25

人造人 发表于 2018-5-31 20:12
这个代码是错误的呀

感谢,我知道了。把那个255改为32这个程序就成功了。thankyou,有你们鱼吧才有活力
页: [1]
查看完整版本: 不理解把字母大小写对调这段!求告知