鱼C论坛

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

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

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

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

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

x
/*
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: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; 
} 
写程序最好加上缩进,不然查错比较困难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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行)
这就是问题所在了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

输入 A 时 它输出! 减了32
输入 a 时 它输出 A  正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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; 
} 
写程序最好加上缩进,不然查错比较困难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

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

谢谢,是那里出现问题。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 16:11:01 | 显示全部楼层
顺便一提,楼主第四行task写成了taks
!的ASCII码正好是65-32=33
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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