zhangyit1 发表于 2021-12-6 11:09:01

萌新求助

#include<stdio.h>
int main()
{
    char ch;
    printf("请输入一个字符:");
    scanf("%c",&ch);
    if(ch>='A'&&ch<='Z')
    {
      ch=ch+32;
      printf("%c\n",ch);
    }
    if(ch>='a'&&ch<='z')
    {
      ch=ch-32;
      printf("%c\n",ch);
    }
    return 0;
}
萌新一枚
为什么这个输入:A之后
会输出:a
             A
第二个if不是不在范围内吗不应该只输出a吗

梦雨 发表于 2021-12-6 11:26:16

你输入A后,A的值是65满足第一个表达式,执行第一个if后为65+32=97等于a,这题是大小写转换。

梦雨 发表于 2021-12-6 11:27:24

梦雨 发表于 2021-12-6 11:26
你输入A后,A的值是65满足第一个表达式,执行第一个if后为65+32=97等于a,这题是大小写转换。

你把第二个if改成else就行了

nettkd 发表于 2021-12-6 11:27:47

这个是不是在执行完第一个if语句后,ch的值变成了a,又顺序执行了第二个?

zhangyit1 发表于 2021-12-6 13:12:33

梦雨 发表于 2021-12-6 11:27
你把第二个if改成else就行了

为什么改成else就可以了,而我这些写,输入A就会输出a A。

AdiosSpike 发表于 2021-12-6 14:12:31

因为你这个是先第一个if判断完后,到第二个if并再次判断
而if else是第一个if如果条件为真,就不进行else的判断,要if的条件为假,才会进行else判断
页: [1]
查看完整版本: 萌新求助