用C++实现:各种字符之间的循环转换

输入一个字符串

要求:1.若输入A则输出Z,若输入B则输出Y,以此类推;小写字母同理

           2.若输入0则输出9,输入1则输出8,以此类推(不含负数)

           3.其他非字母数字类字符,输出其ASC||码的16进制形式

提示:0-9的ASC||值为48-57,A-Z的ASC||值为65-90,a-z的ASC||值为97-122

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main(void)
 5 {
 6     char* arr = new char[10000];    //定义一个足够大的数组
 7     cin >> arr;
 8     int length_arr = strlen(arr);  //计算输入字符串长度
 9     for (int i = 0; i < length_arr; i++)
10     {
11         if (arr[i] >= '0' && arr[i] <= '9')
12         {
13             arr[i] = 105 - arr[i];
14             cout << arr[i];
15         }
16         else if (arr[i] >= 'A' && arr[i] <= 'Z')
17         {
18             arr[i] = 155 - arr[i];
19             cout << arr[i];
20         }
21         else if (arr[i] >= 'a' && arr[i] <= 'z')
22         {
23             arr[i] = 219 - arr[i];
24             cout << arr[i];
25         }
26         else
27         {
28             cout << hex << (int)arr[i];         //直接用hex16进制输出 (注意,不要用中文格式输入符号,否则有些无法识别)
29         }
30     }
31     return 0;
32 }

思路:就是将arr数组里的每一位都按要求来转换,转换一位输出一位。运用ASC||码来进行字符和整型之间的转换。最后一步直接用hex16进制进行输出,也极大的减少了代码量。

补充:oct是8进制输出,·dec是10进制输出,hex是16进制输出。使用方法类似上面代码即可。也可以分开写,即:

cout<<hex;

cout<<(int)arr[i];

 

posted @ 2020-03-11 21:09  神楽桜KaguraSakura  阅读(684)  评论(0)    收藏  举报