本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 对应字母
A | Z |
B | Y |
C | X |
D | W |
…… | …… |
X | C |
Y | B |
Z | A |
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出替换完成后的字符串。
思路:
使用一种简单的方法,循环,ascii码之类的。
循环的话没想出很好的办法,要搭配switch语句使用,失去了原本的意义;
感觉ascii码的可行性更高,但之前没有用过。
#include<stdio.h>
int main()
{
char x,y;
x='A';
y=x+1;
printf("%c",y);
return 0;
}
理论存在,实践开始。
A、Z的ascii码分别是65,90;
总共26个大写英文字母,它们都是再ascii码64的基础上加上一定数字。
于是
就有了
64 + [27 - (x - 64)]
(x - 64)是x对应的加值,[27 - (x - 64)]就是对应字母的加值。
#include<stdio.h>
int main()
{
char x;
while ((x = getchar()) != '\n')
{
if (x >= 'A' && x <= 'Z')
{
x = 155 - x;
}
putchar(x);
}
}
也可以使用字符数组,gets()输入,puts()输出,但PTA好像不认识gets。