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

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

    当输入的字母由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.   就可以得到变化后的字符。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值