#include <stdio.h>
//使用ASCII码
int main() {
int mid, i = 0;
char ch, str[100];
while (scanf("%c", &ch) != EOF &&
ch != '\n') {
//str[i]=ch;//最终转换字符全部存储在str中
mid = (int)ch;
if (mid > 47 && mid < 58) //字符为0-9的数字
str[i] = ch; //数字不变
else if (mid > 64 && mid < 91) //字符为大写数字{
if (mid == 90) //Z
str[i] = 'a';
else {
mid += 33; //转换为小写+32(ASCII码),再后移一位
str[i] = (char)mid;
}
else if (mid > 96 && mid < 123) //小写字母
if(mid>114){//从s开始不一样
if(mid==115)
str[i]=(char)55;//7的ASCII码
else if(mid>115&&mid<119)
str[i]=(char)56;//8
else
str[i]=(char)57;//9
}
else{
mid = (mid - 97) / 3 + 50;
str[i] = (char)mid;
}
else
str[i] = ch;
printf("%c", str[i]);
i++;
ch = '\n';
}
return 0;
}
根据ASCII码,
数字0-9(ASCII码48-57)不变;
大写字母(65-90)先转换为小写字母(97-122),即ASCII码加上32,再后移一位(除了z(单独赋值)都是加1)
小写字母(97-122),a-o(97-111)都是3个字母对应一个数:(ASCII码-97)/3 得到整除的值然后加2即可对应;剩余字母分别考虑

京公网安备 11010502036488号