c语言改错,急啊!!!!!!!!!!!!

小宇初学C语言,老师给他布置了作业,要求他按照字符所在的位置和固定的位移来在字母表中循环移动字母,来实现一个简单的加密算法,可是他写了段程序,却始终达不到想要的结果,你能... 小宇初学C语言,老师给他布置了作业,要求他按照字符所在的位置和固定的位移来在字母表中循环移动字母,来实现一个简单的加密算法,可是他写了段程序,却始终达不到想要的结果,你能帮他修正一下程序中的错误么
#include "stdlib.h"

//--------------------------Do Not Modify Start---------------------
unsigned short hash(char* InStr){
unsigned int len;
unsigned short Crc16Table[256];
unsigned int i,j;
unsigned short Crc;

for (i = 0; i < 256; i++){
Crc = i;
for (j = 0; j < 8; j++){
if(Crc & 0x1)
Crc = (Crc >> 1) ^ 0xA001;
else
Crc >>= 1;
}
Crc16Table[i] = Crc;
}

Crc=0x0000;
len = 23;
for(i=0; i<len; i++){
Crc = (Crc >> 8) ^ Crc16Table[(Crc & 0xFF) ^ InStr[i]];
}
//Crc ^= 0x0000;
return Crc;
}

int check(char *pKey) {
if(hash(pKey) == 0x248e)
return 1;
else
return 0;
}

char kkk[]="odskrwheoilxzjweorukjfc";
#define MOVE 20
//--------------------------Do Not Modify End---------------------

void main() {
char c;
int i,j;

for(i=0;i<sizeof(kkk);i++) {
c = kkk[i];
j = c - 'a';
j = (j+i-MOVE) % 26;
kkk[i] = 'a' + j;
}

//--------------------------Do Not Modify Start---------------------
if (check(kkk))
printf("KEY{%s}",kkk);
else
printf("ERROR");
//--------------------------Do Not Modify End---------------------

}
展开
 我来答
一剑出血
高粉答主

2014-11-30 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
j = (j+i-MOVE) % 26;
改为
if( j > MOVE )
j = (j - MOVE);
else
j = (j + 26 - MOVE);
更多追问追答
追问
结果运行??
追答
原始字符串"odskrwheoilxzjweorukjfc"
加密之后是“ujyqxcnkuordfpckuxaqpli”
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式