#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即可对应;剩余字母分别考虑