把一串密码译成正文,密码以字符@结束,译码规则如下
①如果是字母,则转换成下一个字母
②如果是字母Z译成A
③无论大小写字母都译成小写字母
④其他字符一律按原样译出
1 //第一种if写法 2 #include<stdio.h> 3 int main() 4 { 5 char ch; 6 while ((ch=getchar())!='@') //一直循环到@ 7 { 8 if (ch >= 'A'&&ch <= 'Z' || ch >= 'a'&&ch <= 'z') //判断是否在大小写字母表里 9 { 10 if (ch >= 'A'&&ch <= 'Z') //在大写字母表 11 { 12 if (ch == 'Z') //如果是Z就直接赋值 13 ch = 'a'; 14 else 15 ch = ch - 'A' + 'a' + 1; 16 } 17 else //在小写字母表里 18 { 19 if (ch == 'z') //如果是z就直接赋值 20 ch = 'a'; 21 else 22 ch = ch + 1; 23 } 24 } 25 printf("%c", ch); 26 } 27 28 29 return 0; 30 }
1 //第二种写法 2 #include<stdio.h> 3 int main() 4 { 5 char ch; 6 while ((ch=getchar())!='@') //一直循环到@ 7 { 8 if (ch >= 'A'&&ch <= 'Z' || ch >= 'a'&&ch <= 'z') //判断是否在大小写字母表里 9 { 10 if (ch >= 'A'&&ch <= 'Z') //在大写字母表 11 { 12 ch = (ch - 'A' + 1) % 26 + 'a'; //利用减去字母表的数对26取模若是字母Z则为0 13 } 14 else //在小写字母表里 15 { 16 ch = (ch - 'a' + 1) % 26 + 'a'; //利用减去字母表的数对26取模若是字母z则为0 17 } 18 } 19 printf("%c", ch); 20 } 21 22 23 return 0; 24 }