要求是将大写字母变为小写字母
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。
有的时候我们记不住这个差值,就直接计算两个对应字母的差,不论是'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