一只程序猫 发表于 2020-3-18 14:49:17

小写字母转化有问题

/*
2020年3月18日14:25:09
Ain at : do tasks
taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
Requirement;使用函数getchar()和putchar()来完成
*/
#include <stdio.h>

int main(void)

{
        char i;//储存
        printf("请输入字母:");
        i =getchar();
        if(65<='i'<=90)
        i+=32;//得到小写字母
        else if(97<='i'<=122)
        i-=32;//得到大写字母
        putchar(i);       
       
        return 0;
}


期间大写字母转小写字母没有问题
小写字母装换就有问题

--_--|| 发表于 2020-3-18 15:26:22

本帖最后由 --_--|| 于 2020-3-18 15:34 编辑

/*
2020年3月18日14:25:09
Ain at : do tasks
taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
Requirement;使用函数getchar()和putchar()来完成
*/
#include <stdio.h>

int main(void)

{
      char i;//储存
      printf("请输入字母:");
      i =getchar();
      if(65<='i'&&'i'<=90)//“&&”是且的意思
      i+=32;//得到小写字母
      else if(97<='i'&&'i'<=122)//这里也是
      i-=32;//得到大写字母
      putchar(i);      
      
      return 0;
}
如果不加&&的话,程序会先执行前面的,再执行后面的。如:输入a(97),a(97)<=90。(15行)
这就是问题所在了

一只程序猫 发表于 2020-3-18 15:38:04

--_--|| 发表于 2020-3-18 15:26
如果不加&&的话,程序会先执行前面的,再执行后面的。如:输入a(97),a(97)

谢谢,出现了新的状况大写转小写出了问题 具体如下

输入 A 时 它输出! 减了32
输入 a 时 它输出 A正常

--_--|| 发表于 2020-3-18 15:59:15

/*
2020年3月18日14:25:09
Ain at : do tasks
taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
Requirement;使用函数getchar()和putchar()来完成
*/
#include <stdio.h>

int main(void)

{
      char i;//储存
      printf("请输入字母:");
      i =getchar();
      if(65<=i && i<=90)//去掉单引号比较好
              i+=32;//得到小写字母
      else if(97<=i && i<=122)//这里也是
              i-=32;//得到大写字母
      putchar(i);      
      
      return 0;
}
写程序最好加上缩进,不然查错比较困难

sunrise085 发表于 2020-3-18 16:07:48

你的错误是两个if语句中i加了引号,正常应该是变量i,但是你加了引号就变成了字符i了,那么第一个if语句就永远成立了。也就是说不管你输入什么字符,都会执行i+=32

一只程序猫 发表于 2020-3-18 16:08:44

--_--|| 发表于 2020-3-18 15:59
写程序最好加上缩进,不然查错比较困难

谢谢,是那里出现问题。谢谢

一只程序猫 发表于 2020-3-18 16:09:17

sunrise085 发表于 2020-3-18 16:07
你的错误是两个if语句中i加了引号,正常应该是变量i,但是你加了引号就变成了字符i了,那么第一个if语句就 ...

{:5_90:}谢谢你

墨羽岚 发表于 2020-3-18 16:11:01

顺便一提,楼主第四行task写成了taks
!的ASCII码正好是65-32=33{:10_256:}

一只程序猫 发表于 2020-3-19 13:20:33

墨羽岚 发表于 2020-3-18 16:11
顺便一提,楼主第四行task写成了taks
!的ASCII码正好是65-32=33

谢谢
页: [1]
查看完整版本: 小写字母转化有问题