在字母表中移一个字母?

eve*_*veo 2 c

IE,你输入数字5,字符A和输出将产生F.我不知道如何开始这样做,任何给我推进正确的方向?

Gre*_*ill 9

根据ASCII码(通常),单个字符由数字表示.在C中,如果你为一个角色添加一个数字,你就会将角色向下移动.尝试:

char c = 'A';
int n = 5;
printf("%c\n", c + n);
Run Code Online (Sandbox Code Playgroud)

  • @soju - if语句是你的朋友. (2认同)
  • @soju:解读这个:(c-'A'+ n)%26 +'A' (2认同)

Ode*_*ded 6

查看ASCII表并记下字符的值.


and*_*and 5

试试这个:

#include <stdio.h>

char shift_char(char val, char shift)
{
  val = toupper(val);
  assert(isupper(val));
  char arr[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  return arr[ ( (toupper(val) - 'A' + shift) % 26) ];
}
Run Code Online (Sandbox Code Playgroud)

如果你想保留角色的情况,你可以得到一点点发烧友.它也假设,但不验证shift是非负的.这种情况可能会导致您需要防范模数操作的问题......或者更好的防止.不过,由于这被标记为家庭作业,这就是你应该解决的问题.