MATLAB求助

要求是将大写字母变为小写字母

c=input('请输入一个字:','s')
if c>='A'&c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A')));
end

setstr(abs(c)+abs('a')-abs('A'))这一句怎样理解?

换句话说就是,为什么由这个程序得到小写字母???

小写字母的ascii值比相应的大写字母大32,换言之任何大写字母加上32就是对应的小写字母了。
有的时候我们记不住这个差值,就直接计算两个对应字母的差,不论是'a'-'A'还是'z'-'Z'都是32。没有必要加abs,ascii码都是大于0的,setstr函数也已经被char取代。因此
disp(setstr(abs(c)+abs('a')-abs('A')));
这句话写成
disp(char(c+'a'-'A'))
或者
disp(char(c+32))
更方便与直接了当。
另外matlab提供了lower函数可以直接将字母自动转为小写,因此直接用
disp(lower(c))
即可。

还有,如果你想查看某个字符的ascii码,直接输入double即可。比如double('A'),你可以用这种方法看看'A'和'a'是不是相差32。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-13
abs('a')就是a的ASII码值,abs('A')是A的ASII码值,之差表示,a 转到A需要加的值,abs(c)+abs('a')-abs('A')) 就是表示符号c的大写值的ASII值,setstr最后把ASII值转为符号
第2个回答  2020-06-16

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网