微信web网站开发b站视频推广网站
输入一个字母实现大小写转换,若输入不为字母重复出入,直到输入为字母为止,并实现大小写转换。
要求使用模运算。
我看了小甲鱼之后写的
注意此处模运算对象为二进制。
A的ASCII码为65,转换为二进制为1000001
Z的ASCII码为90,转换为二进制为1011010
a的ASCII码为97,转换为二进制为1100001
z的ASCII码为122,转换为二进制为1111010
观察发现,关键在于二进制的第五位(二进制的第一位是第零位,从右到左起)
大写字母的第五位都是0,小写字母的第五位都为1。
而小甲鱼讲的你只要判断第五位是零是一就可以判断大小写,
并且将大写字母的第五位的零变为1,就会实现相应的的大写字母变为小写字母。
小写字母同样如此。
真是神奇,,,,我不懂原理只能归为神奇/呜呜呜
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{char letter;cin>>letter;while((letter>'Z'&&letter<'a')||letter<'A'||letter>'z'){cout<<"输入非字母,请重新输入。";cin>>letter;}if(letter&32){letter=letter&95;}else{letter=letter|32;//小甲鱼在此处用的和255,我觉得是错误的。我用32正好可以实现大小写转换。}cout<<letter;return 0;
}