C旋转字符串程序?

时间:2017-03-06 22:20:52

标签: c arrays string character caesar-cipher

#include <stdio.h>


int main()
{
int rotation, i=0;
char str[80]={0}; 
printf("Enter Text: ");
scanf("%[^\n]", str); 
printf("\"");

printf("Enter Rotation: ");
scanf("%i", &rotation);

while(str[i]) 
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        printf("%c\n", 'a' + (str[i] - 'a' + rotation)%26); 
        else    
        printf("%c\n", str[i]);
        i++;    
    }

return 0;
}

很难理解这行代码(printf(“%c \ n”,'a'+(str [i] - 'a'+旋转)%26);)

任何人都可以快速写一个简短的解释,这对我有帮助

1 个答案:

答案 0 :(得分:1)

程序正在根据输入的数字,使用用户的输入文本并按字符旋转通过字母表。它的工作原因是ASCII table

有问题的行使用用户输入的字符,将其偏移'a'(等于ASCII中的91),添加rotation因子然后对结果执行模26 (字母表中还有多少个字符?)以确保结果仍然是小写字符。

我打赌你可以找到一个打破这个程序的好方法:)