维德 发表于 2020-5-24 22:08:50

S1E11 大小写转换

为什么我输入数字 大写转小写的时候
#include<stdio.h>
int main()
{
    char i;
   
    printf("输入一个字符:");
    scanf("%d",&i);
   
    if(i>=65&&i<=90)
    {
      i=i+32;
      printf("%c",i);
    }
    else if(i>=97&&i<=122);
    {
      i=i-32;
      printf("%c",i);
      
    }
   
    return 0;
   
   
}大小写字符全部都打印出来了
我知道我写的不规范 但我想这是什么原因

赚小钱 发表于 2020-5-24 22:08:51

维德 发表于 2020-5-25 00:29
没有   那为啥添个分号就大小写全打印出来了   并且为啥小写转大写还能运行

如果你输入大写,会执行 if 变成 小写。然后再执行下面那个 只有 {} 的,你以为的 else if

如果你输入小写,同样会执行那个,你以为是 else if 的 {}

请学会单步调试。

大小写转换, ^32 他不香嘛。

赚小钱 发表于 2020-5-24 23:13:43

本帖最后由 赚小钱 于 2020-5-25 00:51 编辑

scanf("%c", &i);

14 行,有一个分号。

你的 IDE 没有提示吗?

维德 发表于 2020-5-25 00:29:01

赚小钱 发表于 2020-5-24 23:13
printf("%c", &i);

14 行,有一个分号。


没有   那为啥添个分号就大小写全打印出来了   并且为啥小写转大写还能运行

chxchxkkk 发表于 2020-5-25 00:46:42

else if(i>=97&&i<=122); 这里多了个分号,这条判断语句就相当于执行一条空语句,
i=i-32;
printf("%c",i);    这两条语句会顺序执行,所以会输出。

xiaosi4081 发表于 2020-5-25 07:30:37

用tolower不香吗

维德 发表于 2020-5-25 10:04:03

xiaosi4081 发表于 2020-5-25 07:30
用tolower不香吗

。。。哥们才学S1E11呀

维德 发表于 2020-5-25 10:06:21

赚小钱 发表于 2020-5-25 00:54
如果你输入大写,会执行 if 变成 小写。然后再执行下面那个 只有 {} 的,你以为的 else if

如果你输入 ...

嗷嗷应该是明白了    香啊可是俺脑子当时想的是这个:)
页: [1]
查看完整版本: S1E11 大小写转换