https://www.luogu.com.cn/problem/P1914
与1028加密的病历单类似(x)
题目:
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[51]={0};//存放输入的字符
int b[51]={0};//用来存放输入的字符转成对应的ASCII码值的int型数
int n=0,i,len=0;
scanf("%d\n",&n);//输入要后移多少位
gets(a);
len=strlen(a);
for(i=0;i<len;i++)//遍历a数组
{
b[i]=(int)a[i]+n;//遍历整个字符串,把原字符后移n位的字符转成对应的ASCII码值的int型数存到b数组中
}
for(i=0;i<len;i++)//遍历b数组
{
if(b[i]>122)//如果某一字符的ASCII码值大于122,z的ASCII码值为122
{
b[i]=(b[i]%122+96);//就往前走找
}
}
for(i=0;i<len;i++)
{
a[i]=(char)b[i];//把移好后的ASCII码对应的字符重新赋给a数组
printf("%c",a[i]);
}
return 0;
}
备注:
道题目涉及到一个知识点:后移字符后到了z后从a开始
l 用一个char型的字符串数组存输入的字符,利用循环把字符的ASCII码值存在int型的数组,再利用循环重新赋给a数组
l 方法:字符后移过后的ASCII码值若大于122,就用下面的代码:
for(i=0;i<len;i++)//遍历b数组
{
if(b[i]>122)//如果某一字符的ASCII码值大于122,z的ASCII码值为122
{
b[i]=(b[i]%122+96);//就往前走找
}
}
l 使用#include<string.h>头文件的时候,用c语言的代码写即可,因为这个头文件是C语言中的头文件