欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷 P1914 小书童——密码

程序员文章站 2022-03-21 07:48:54
...

洛谷 P1914 小书童——密码
思路:看起来很简单就是让字符+n,然而加的时候要注意字母最大是z,再加就再次循环所以字符 - a得到字母现在的位置再加n得到他变化后的位置,再对26取余看看他在a的基础上加了多少在 + a
方法1

#include <stdio.h>
#include <string.h>
int main()
{
    int n;
    int i;
    char num[60];
    scanf("%d %s",&n,num);

   for(i = 0;i < strlen(num);i ++)
   {
      num[i] = (num[i] - 'a' + n) % 26 + 'a';//先来看num【i】在26(用ASCII值)个字母中的位置,在加 n,如果比z还大就开始下一轮循环所以在加a
   }
   for(i = 0;i < strlen(num);i ++)
   {
       printf("%c",num[i]);
   }

   return 0;

}

方法二

#include <stdio.h>
#include <string.h>
int main()
{
    int n;
    int i;
    char num[60];
    scanf("%d %s",&n,num);
    /*fflush(stdin);//清除缓存,AC不通过,所以被注释了
    gets(num);*/

   for(i = 0;i < strlen(num);i ++)
   {
      if(num[i] - 'a' + n >= 26)
      {
          num[i] = (num[i] - 'a' + n ) % 26 + 'a';
      }
      else
      {
          num[i] = num[i] + n;
      }
   }
   for(i = 0;i < strlen(num);i ++)
   {
       printf("%c",num[i]);
   }

   return 0;

}
//清除缓存是因为,scanf函数是以换行为结束标志,而结束标志就是字符被gets录入了那程序就出错了
//所以要清除缓存

相关标签: 洛谷