问题:输入一串英文字母序列将小写字母转化为大写字母,大写字母转化为小写字母
解决思路:
- 大小写转化解决:因为数据在计算机中以二进制的形式进行储存,因此英文字母和数字以及某些特殊符号都可以转换为二进制数字;对照ASCII码表我们会发现每一个大写字母和与其对应的小写字母ASCII码相差32【例如a 对应ASCII码97 A对应ASCII码65;b对应ASCII码98 B对应ASCII码66】
- 一串英文字母需要一次遍历然后利用大小写字母ASCII码相差关系进行转化,最合适的方法是放到字符数组中,因为字符数组最后的结尾标志是'\0',这样控制循环的条件就具备了,所以循环依次遍历直至'\0'为结束
//a--97 A--65 b--98 B--66
#include<stdio.h>
#define N 100
int main()
{
char b[N];
gets(b);
int i=0;
while(b[i]!='\0')
{
if((b[i]>='a')&&(b[i]<='z'))
{
b[i]=b[i]-32;
}
else
if ((b[i]>='A')&&(b[i]<='Z'))
{
b[i]=b[i]+32;
}
i++;
}
puts(b);
return 0;
}