鱼C论坛

 找回密码
 立即注册
查看: 1361|回复: 8

[已解决]小写字母转化有问题

[复制链接]
发表于 2020-3-18 14:49:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  8. int main(void)

  9. {
  10.         char i;//储存
  11.         printf("请输入字母:");
  12.         i =getchar();
  13.         if(65<='i'<=90)
  14.         i+=32;//得到小写字母
  15.         else if(97<='i'<=122)
  16.         i-=32;//得到大写字母
  17.         putchar(i);       
  18.        
  19.         return 0;
  20. }
复制代码



期间大写字母转小写字母没有问题
小写字母装换就有问题
最佳答案
2020-3-18 15:59:15
  1. /*
  2. 2020年3月18日14:25:09
  3. Ain at : do tasks
  4. taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
  5. Requirement;使用函数getchar()和putchar()来完成
  6. */
  7. #include <stdio.h>

  8. int main(void)

  9. {
  10.         char i;//储存
  11.         printf("请输入字母:");
  12.         i =getchar();
  13.         if(65<=i && i<=90)//去掉单引号比较好
  14.                 i+=32;//得到小写字母
  15.         else if(97<=i && i<=122)//这里也是
  16.                 i-=32;//得到大写字母
  17.         putchar(i);        
  18.         
  19.         return 0;
  20. }
复制代码

写程序最好加上缩进,不然查错比较困难
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-18 15:26:22 | 显示全部楼层
本帖最后由 --_--|| 于 2020-3-18 15:34 编辑
  1. /*
  2. 2020年3月18日14:25:09
  3. Ain at : do tasks
  4. taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
  5. Requirement;使用函数getchar()和putchar()来完成
  6. */
  7. #include <stdio.h>

  8. int main(void)

  9. {
  10.         char i;//储存
  11.         printf("请输入字母:");
  12.         i =getchar();
  13.         if(65<='i'&&'i'<=90)//“&&”是且的意思
  14.         i+=32;//得到小写字母
  15.         else if(97<='i'&&'i'<=122)//这里也是
  16.         i-=32;//得到大写字母
  17.         putchar(i);        
  18.         
  19.         return 0;
  20. }
复制代码

如果不加&&的话,程序会先执行前面的,再执行后面的。如:输入a(97),a(97)<=90。(15行)
这就是问题所在了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

输入 A 时 它输出! 减了32
输入 a 时 它输出 A  正常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 15:59:15 | 显示全部楼层    本楼为最佳答案   
  1. /*
  2. 2020年3月18日14:25:09
  3. Ain at : do tasks
  4. taks: 输入一个英文字母如果是大写字母,则将它装换为小写字母输出;否则反之。
  5. Requirement;使用函数getchar()和putchar()来完成
  6. */
  7. #include <stdio.h>

  8. int main(void)

  9. {
  10.         char i;//储存
  11.         printf("请输入字母:");
  12.         i =getchar();
  13.         if(65<=i && i<=90)//去掉单引号比较好
  14.                 i+=32;//得到小写字母
  15.         else if(97<=i && i<=122)//这里也是
  16.                 i-=32;//得到大写字母
  17.         putchar(i);        
  18.         
  19.         return 0;
  20. }
复制代码

写程序最好加上缩进,不然查错比较困难
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-18 16:07:48 | 显示全部楼层
你的错误是两个if语句中i加了引号,正常应该是变量i,但是你加了引号就变成了字符i了,那么第一个if语句就永远成立了。也就是说不管你输入什么字符,都会执行i+=32
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 16:08:44 | 显示全部楼层
--_--|| 发表于 2020-3-18 15:59
写程序最好加上缩进,不然查错比较困难

谢谢,是那里出现问题。谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 16:11:01 | 显示全部楼层
顺便一提,楼主第四行task写成了taks
!的ASCII码正好是65-32=33
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表