C旋转字符串程序?
C Rotating String Program?
#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' + rotation)%26); )
任何人都可以快速写一个简短的解释它会帮助我
该程序正在获取用户输入的文本,并根据输入的数字 将其按字母表 旋转 。它之所以有效,是因为 ASCII table.
有问题的行采用用户输入的字符,将其偏移 'a'
(在 ASCII 中等于 91),添加 rotation
因子,然后对 26
执行模运算结果(字母表中又有多少个字符?)以确保结果仍然是小写字符。
我打赌你能找到破解这个程序的好方法:)
#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' + rotation)%26); )
任何人都可以快速写一个简短的解释它会帮助我
该程序正在获取用户输入的文本,并根据输入的数字 将其按字母表 旋转 。它之所以有效,是因为 ASCII table.
有问题的行采用用户输入的字符,将其偏移 'a'
(在 ASCII 中等于 91),添加 rotation
因子,然后对 26
执行模运算结果(字母表中又有多少个字符?)以确保结果仍然是小写字符。
我打赌你能找到破解这个程序的好方法:)