根据ASCII码(通常),单个字符由数字表示.在C中,如果你为一个角色添加一个数字,你就会将角色向下移动.尝试:
char c = 'A';
int n = 5;
printf("%c\n", c + n);
Run Code Online (Sandbox Code Playgroud)
试试这个:
#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是非负的.这种情况可能会导致您需要防范模数操作的问题......或者更好的防止.不过,由于这被标记为家庭作业,这就是你应该解决的问题.