愈伤组织 发表于 2019-3-15 21:35:32

S1E11 大写字母转小写字母 小写字母转大写字母实验

鄙人code block debug 程序就无响应了 也听苦闷的,不知原因在何处
再其次觉得这个程序并无bug却存在严重的bug代码如下
#include <stdio.h>
int main()
{   int ch;
    printf("请输入一个字符");
    scanf("%d",&ch);
    if(ch>=65&ch<=90)
      {
            ch=ch+32;
      }
    else if(ch>=91&ch<=116)
      {
            ch=ch-32;
      }
    printf("%c",ch);
    return 0;
}


各位来自五湖四海的大佬们,请求你们的帮助

ba21 发表于 2019-3-15 21:47:14

#include <stdio.h>
int main()
{
        char ch; // 开始就声明成char就好了,int还要转来转去

    printf("请输入一个字符");
    scanf("%c",&ch); // 用%c接收

    if(ch>=65 && ch<=90) // 是&& 不是&
        {
            ch=ch+32;
        }


    else if(ch>=91 && ch<=116) // 是&& 不是&
        {
            ch=ch-32;
        }

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

    return 0;
}

Croper 发表于 2019-3-15 23:29:43

其实大小写转换可以这么玩:#include <stdio.h>
int main()
{   int ch;
    printf("请输入一个字符");
    scanf("%c",&ch);
    ch^=32;
    printf("%c",ch);
    return 0;
}

jackz007 发表于 2019-3-16 02:06:06

. . . . . .
      if(ch >= 65 & ch <= 90) {         // 问题出在这里,逻辑 AND 应该使用 && 表示
. . . . . .
      } else if(ch >= 91 & ch <= 116) { // 问题出在这里,逻辑 AND 应该使用 && 表示
. . . . . .

愈伤组织 发表于 2019-3-16 19:49:40

ba21 发表于 2019-3-15 21:47
#include
int main()
{


非常抱歉,我的debug出了问题但是我想知道一个&为什么会出现bug 可以给我解答一下吗?

愈伤组织 发表于 2019-3-16 19:51:32

jackz007 发表于 2019-3-16 02:06


非常抱歉,我的debug出了问题但是我想知道一个&为什么会出现bug 可以给我解答一下吗?

jackz007 发表于 2019-3-16 20:15:31

愈伤组织 发表于 2019-3-16 19:51
非常抱歉,我的debug出了问题但是我想知道一个&为什么会出现bug 可以给我解答一下吗?

       单 & 是二进制位操作符,双 & 是逻辑运算符,我们需要的是逻辑运算符,看似相似,其实,本质完全不同。
       举个例子,0x01 && 0x02 的结果一定是 true,但是,0x01 & 0x02 的结果是 0,也就是 false,0x03 && 0x0c 结果是 true,0x03 & 0x0c 的结果是 false......,总之,类似的例子还有很多。

愈伤组织 发表于 2019-3-19 22:24:29

jackz007 发表于 2019-3-16 20:15
单 & 是二进制位操作符,双 & 是逻辑运算符,我们需要的是逻辑运算符,看似相似,其实,本质完 ...

谢谢
页: [1]
查看完整版本: S1E11 大写字母转小写字母 小写字母转大写字母实验