12:加密的病歷單

總時間限制: 1000ms 內存限制: 65536kB
描述

小英是藥學專業大三的學生,暑假期間得到了去醫院藥房實習的機會。 
在藥房實習期間,小英紮實的專業基礎得到了醫生的一致好評,得知小英在計算概論中取得過好成績後,主任又額外交給她一項任務,解密抗戰時期被加密過的一些傷員的名單。 
通過研究,小英發現了以下加密規律(括號中是一個「原文 -> 密文」的例子) 
1.  原文中全部的字符都在字母表中被循環左移了三個位置(dec  -> abz) 
2.  逆序存儲(abcd -> dcba ) 
3.  大小寫反轉(abXY -> ABxy) ide

輸入
一個加密的字符串。(長度小於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
相關文章
相關標籤/搜索