1.基础知识
~做任何事情都需要拥有某些条件,拥有了这些条件,你才有能力去做。这道题显然就是考了c语言ascii码,要是不懂这个天才也做不出来。
在这个码里面每个数字都对应着自己的一个独一无二的元素。打个比方:这里的每一个码(数字)就好比大家的学号,而码所对应的元素就是大家的名字(假设大家的名字都不重复的话),比如2X号,系统就知道这个人叫XH。
这下面是是英文对应码的布局(框起来的是十进制的,只看框住的)大家可以记一下,技多不压身。
发现没有:
1. 大写字母与小写字母的号码都是连续的,大写字母的号码靠前,小写反之。
2.但大写字母和小写字母间还有其他连续的号码去表示了别的元素。
---------------------------------------------------------我是分割线---------------------------------------------------------
2.题目分析
我们先看一下题目
最困扰大家的可能就是这个对称字母怎么输出了。
其实就是一个简单的数学推导(前提是把字母转化为奥斯卡🐎,相信同志们都懂)
以大写为例
输A,要输出Z。
即输‘65’,要输出‘90’
输入B,要输出Y。
即输‘66’,要输出‘89’
输入C,要输出X。
即输‘67’,要输出‘88’
其他的字母都是这样。
这样这个角度看问题是不是就简单做了?
看规律要输出的值不就是90-X么?
求X不就得了
(插一嘴,一旦有思路了,鼓励你马上打开编译器自己去做做,如果通过了,那种成就感是非常COOK的)
以“输A,要输出Z”为例:
X=A-A
即
X=65-65
输出=90-X=90-0=90=‘Z’(%c形式输出)
以“输入B,要输出Y”为例:
X=B-A
即
X=66-65=1
输出=90-X=90-1=89=‘X’(%c形式输出)
简单吧,不说假话啊,拉来你正在看小猪佩奇的四年级小表弟,他都会做。
------------------------------------------------------我还是分割线--------------------------------------------------------
3.1开整
#include<stdio.h>
int main()
{
char c = '0';
scanf("%c", &c);
if (c >= 'A' && c <= 'Z') {
printf("%c", 90 - (c - 65));
}
return 0;
}
注:char=的后面一定要用单引号(‘’)阔起字符,不论是阿拉伯数字还是字符,字符数组除外。
3.2开整
下一BU就是小写字母的了,桶里,自己动手试试叭。
代码如下
#include<stdio.h>
int main()
{
char c = '0';
scanf("%c", &c);
if (c >= 'A' && c <= 'Z') {
printf("%c", 90 - (c - 65));
}
//LOOK down///
if ((c >= 'a' && c <= 'z')) {
printf("%c", 122 - (c - 97));
}
return 0;
}
3.3开整
最后一步就是,写非字母的程序了
都是数学交并集合的知识
代码如下
#include<stdio.h>
int main()
{
char c = '0';
scanf("%c", &c);
if (c >= 'A' && c <= 'Z') {
printf("%c", 90 - (c - 65));
}
if ((c >= 'a' && c <= 'z')) {
printf("%c", 122 - (c - 97));
}
看我看我///
if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))printf("It is not a letter.");
//一个简单的技巧就是把上面大小写字母的条件复制过来,并起来,整体,记住啊,是整体去反,就可以了。//很好理解,就是既然他不是男人也不是女人,那他就不是个人啊。
///还有还有,括号看清楚了,运算的优先级有意错
return 0;
}
------------------------------------------------------我TM还是--------------------------------------------------------------
理论的力量是有限的,实践才能出真知。说学这个难,没写试过怎么知道难。
苏炳添10年伤病,女运动员都跑不过。采访他说为啥还坚持,他说“不去尝试才会后悔”终于,21年他应验了。
当然道理都懂哈哈,我们缺少的可能就是执行力了。
目录