12:加密的病历单

总时间限制: 1000ms 内存限制: 65536kB
描述

小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。 
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。 
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子) 
1.  原文中所有的字符都在字母表中被循环左移了三个位置(dec  -> abz) 
2.  逆序存储(abcd -> dcba ) 
3.  大小写反转(abXY -> ABxy) 

输入
一个加密的字符串。(长度小于50且只包含大小写字母)
输出
输出解密后的字符串。
样例输入
GSOOWFASOq
样例输出
Trvdizrrvj
来源
医学部计算概论2011年期末考试(王志钢)改编
 1 #include<stdio.h>
 2 #include<string.h>
 3 void fun1(char a[]);//将a[]循环右移三位
 4 void fun2(char a[]);//将a[]逆序存储 
 5 void fun3(char a[]);//将a[]大小写反转 
 6 int main()
 7 {
 8     char str[100];
 9     gets(str);
10     fun1(str);
11     fun2(str);
12     fun3(str);
13     puts(str);
14     return 0;
15 }
16 void fun1(char a[])//将a[]所有的字符都在字母表中循环右移三个位置( abz -> dec)
17 {
18     int i,len=strlen(a);
19     for(i=0;i<len;i++)
20     {
21         if(a[i]>='a'&&a[i]<='z')
22         {
23             a[i]=a[i]+3;
24             if(a[i]>'z')
25                 a[i]=a[i]-'z'-1+'a';
26         }
27         else
28         {
29             a[i]=a[i]+3;
30             if(a[i]>'Z')
31                 a[i]=a[i]-'Z'-1+'A';
32         }
33     }
34 }
35 void fun2(char a[])//将a[]逆序存储 
36 {
37     int i,j,len=strlen(a);
38     char t;
39     for(i=0,j=len-1;i<j;i++,j--)
40     {
41         t=a[i];a[i]=a[j];a[j]=t;
42     }
43 }
44 void fun3(char a[])//将a[]大小写反转 
45 {
46     int i,len=strlen(a);
47     for(i=0;i<len;i++)
48     {
49         if(a[i]>='a'&&a[i]<='z')
50         {
51             a[i]=a[i]-32;
52         }
53         else
54         {
55             a[i]=a[i]+32;
56         }
57     }
58 }
View Code

猜你喜欢

转载自www.cnblogs.com/huashanqingzhu/p/10303506.html