题解 | #字符串加解密#
字符串加解密
https://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a
//OJ题目没有特意进行函数命名,代码习惯良好的可以用ENC和DEC等进行加解密函数命名
#include <stdio.h>
#include<string.h>
char* In(char arr[1000],int sz1)//加密
{
int i=0;
for(i=0;i<sz1;i++)
{
if(arr[i]>='a'&&arr[i]<'z')
{
arr[i]-=31;
}
else if(arr[i]=='z')
{
arr[i]-=57;
}
else if(arr[i]>='A'&&arr[i]<'Z')
{
arr[i]+=33;
}
else if(arr[i]=='Z')
{
arr[i]+=7;
}
else if(arr[i]>='0'&&arr[i]<='9')
{
arr[i]=(arr[i]+1-48)%10+48;
}
}
arr[sz1]='\0';
return arr;
}
char* Out(char arr[1000],int sz2)//解密
{
int i=0;
for(i=0;i<sz2;i++)
{
if(arr[i]>'a'&&arr[i]<='z')
{
arr[i]-=33;
}
else if(arr[i]=='a')
{
arr[i]-=7;
}
else if(arr[i]>'A'&&arr[i]<='Z')
{
arr[i]+=31;
}
else if(arr[i]=='A')
{
arr[i]+=57;
}
else if(arr[i]>='0'&&arr[i]<='9')
{
arr[i]=((arr[i]-48)+10-1)%10+48;
}
}
arr[sz2]='\0';
return arr;
}
int main()
{
char arr1[1000],arr2[1000];
gets(arr1);
gets(arr2);
int sz1=strlen(arr1),sz2=strlen(arr2);
char* p1=In(arr1,sz1),*p2=Out(arr2,sz2);
printf("%s\n%s",p1,p2);
return 0;
}

查看2道真题和解析