aa765685928 发表于 2021-3-10 22:56:35

大小写转换,这么写代码,大写转小写没问题,但是小写转大写是怎么回事?

#include <stdio.h>
#include <stdlib.h>
int main()
{
        char i;
   
    printf("请输入字符:\n");
    scanf("%c",&i);
    if (i >= 65)
    {
                        i = i + 32;
            printf("您的大写字母转小写字母:%c\n",i);
    }
       
    if (i >= 97)
    {
                        i = i - 32;
                        printf("您的小写字母转大写字母:%c\n",i);
    }
   
        system("pause");
        return 0;
}

jackz007 发表于 2021-3-10 23:05:07

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
      char i                                                                        ;
      printf("请输入字符:\n")                                                      ;
      scanf("%c" , & i)                                                             ;
      if(i >= 'A' && i <= 'Z') printf("您的大写字母转小写字母:%c\n" , i + 32)      ;
      else if(i >= 'a' && i <= 'z') printf("您的小写字母转大写字母:%c\n" , i - 32) ;
      else printf("您的字符不是字母:%c\n" , i)                                     ;
      system("pause")                                                               ;
}

lei1996 发表于 2021-3-10 23:39:06

大写转小写没问题吗   你这样输入大写字母 难道不是两个if语句都执行了吗if里面的判断条件有问题

my_angel 发表于 2021-3-11 02:48:08

逻辑错了

lzting 发表于 2021-3-11 07:55:23

条件写得不严谨,如果i满足第二个条件,那么i已经满足第一个条件了

aa765685928 发表于 2021-3-13 23:41:23

谢谢大家的回复,我终于找出错误了,第一点是if和if同时用,都执行的;第二点是>=65的时候有可能>=97 把i>=97调到上面就好了,谢谢大家!!!!


#include <stdio.h>
#include <stdlib.h>
int main()
{
    char i;
   
    printf("请输入字符:\n");
    scanf("%c",&i);
   
        if (i >= 97)
    {
            
             printf("您的小写字母转大写字母:%c\n",i = i - 32);
    }
   
    else if (i >= 65)
    {
                       
            printf("您的大写字母转小写字母:%c\n",i = i + 32);
            
    }
   
   
            
    else
    {
                printf("您输入的不是字母\n");
    }
      
      
   
   
      system("pause");
      return 0;
}

my_angel 发表于 2021-3-14 00:08:13

aa765685928 发表于 2021-3-13 23:41
谢谢大家的回复,我终于找出错误了,第一点是if和if同时用,都执行的;第二点是>=65的时候有可能>=97 把i>= ...

建议判断条件严格一点:
大写 i >='A' && i<='Z'
小写 i>='a' && i <= 'z'
页: [1]
查看完整版本: 大小写转换,这么写代码,大写转小写没问题,但是小写转大写是怎么回事?