7-1 sdut-c语言实验-字符编码-爱代码爱编程
请将一串长度最长为5的纯字母文本译成一个密码,密码规律如下:用原来的字母后面的第4个字母代替原来的字母。如C用G代替(如果该字母没后面没有第4个字母可代替,则需从26字母表中的首字母开始代替,比如:W用A代替,Z用D代替),最后得到的文本即为密码。
输入格式:
输入一串文本,长度固定为5。
输出格式:
输出对应的密码。格式为:
password is 密码
输入样例:
China
输出样例:
在这里给出相应的输出。例如:
password is Glmre
#include<stdio.h>
#include<string.h>
int main()
{
int i,len;
char ch[50];
gets(ch);
len=strlen(ch);//获取字符串长度,对于这套算法是必不可少的一步
for(i=0;i<len;i++){
if(ch[i]>='a'&&ch[i]<'w'||ch[i]>='A'&&ch[i]<'W')
ch[i]=ch[i]+4;
else
ch[i]=ch[i]-22;
}
printf("password is %s",ch);
return 0;
}
解法思路:
首先获取字符串,判断哪些字母(w之前的)不需要从头开始 ,然后将其后移4,其余的先后移4再前移26(ch[i]-=22),i<len换成i<5就会有两个测试点错误,原因是题目说的是长度最长为5,如果长度小于5则不需要判断后面的字符,最后将新的字符串按照题目要求输出。