C语言程序问题,请大神帮忙看看,谢谢
首先对字母进行编号,小写字母a至z编号为1至26,大写字母A至Z分别编号27至52,在发送内容时,我们以函数F(X)=X*X+X+1对发送字母的序号进行计算,获取个新的序号,对该序号再进行对52取余,该序号即为加密后的要发送字母的序号。例如:
字母a,序号是1,加密后的序号为3,此时,加密后输出的字母应该c;
字母b,序号是2,加密后的序号是7,加密后输出的字母应该g;
字母A,序号是27,加密后的序号是(27*27+27+1)%52=757%52=29,加密后输出的字母应该C;
所以,abA加密后应该是cgC
#include"stdio.h"
#include"string.h"
int jiami(char a[], int n, char output[])
{
int m = 0;
int i;
for(i = 0; i < n; i++)
{
if('A' <= a[i] <= 'Z')
{
m = a[i] - 'A' + 27;
}
else
{
m = a[i] - 'a' + 1;
}
m = (m * m + m + 1) % 52;
if(m >26)
output[i] = (char)(m - 27+ 65);
else
output[i] = (char)(m - 1 + 97);
}
output[i] = '\0';
return 0;
}
void main()
{
int len, i;
char input[101], output[101];
printf("请输入长度小于100的英文字母字符串:\n");
gets(input);
len = strlen(input);
jiami(input,len,output);
printf("加密后的报文为:\n");
for(i = 0; i < len; i++)
printf("%c",output[i]);
printf("\n");
}
输入大写输出正确,输入小写则结果错误,哪里错了,谢谢