【C语言】编写一个程序,当输入小写字母a,输出大写字母Z,当输入小写字母b,输出大写字母Y,以此类推,当输入小写字母z,输出大写字母A。

来源:互联网 发布:交换机环路端口关闭 编辑:程序博客网 时间:2024/05/19 12:11

    这个问题不仅仅是将字母转化成对应的小写或者大写字母。那我们应该怎么来解决呢,首先我们分析一下这个问题。

    当输入的字母由a变为b时,对应的输出由Z编程Y,我们知道字符在内存中是以ASCII码值的形式存储的,也就是说,当输入的ASCII码值增加1,对应输出的ASCII码值在原有变化的基础上减少一,也就是说,每一次都比上一次的距离远2,于是我们选择将a-Z的ASCII码值变化记录下来,之后的变化在这个基础上进行。

    这里我们还必须知道的一点是大写字母的ASCII码值比小写字母小,以下是部分截屏:

:

接下来看看解决了这个问题的代码:

#define _CRT_SECURE_NO_WARNINGS 1  #include<stdio.h>#include<stdlib.h>char turn_form(char ch){int ret = 'a' - 'Z';    //ret为a到Z之间相差的ASCII码值int tmp = 'a' - ch;     //a和输入的字符相差的ASCII码值if ((ch >= 'a') && (ch <= 'z'))  {ch = ch + 2 * tmp-ret;   }return ch;           //这里必须返回,因为我们只是对临时变量做了改变,并没有改变ch的值}int main(){char ch = 0;char ret = 0;printf("请输入一个英文字母:");scanf("%c", &ch);ret=turn_form(ch);printf("%c\n", ret);system("pause");return 0;}

我们知道字符a减去它之后的字符一定是一个负值,所以用ch=ch+2*tmp-ret.   就可以得到变化后的字符。

0 0