lg小书童-密码

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语言中的头文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值