首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

解密码(坐待大神)

2013-01-06 
解密码(坐等大神)Description有一行英文密码,友军急切地想知道原文是什么,现知道加密的方法如下: (1)第一

解密码(坐等大神)
Description

有一行英文密码,友军急切地想知道原文是什么,现知道加密的方法如下: (1)第一个字母的密文与原文相同; (2)从第二个字母开始,每一个字母的密文的ACSII码等于上一个字母的(密文的ACSII码-32)+(原文ACSII-32)的和再与96取模(即取余数)最后加上32 现由键盘给出一行密文(最多不超过10000个字母),要求输出原文。 
Input

密文:W<(tXG5z&m\K/
原文:Welldone,good


附上我的代码,这个例子对了,可是提交系统还是错误,求大神帮我看看,不要自己写代码给我···我只想知道我自己哪里错了

#include<stdio.h>
#include<string.h>

void judge(char b[],int i)
{
char bitch;
int num  = 0;
while(num<=2)
{   
bitch = b[i]-b[i-1]+96*num+32;
if(bitch==','||('a'<=bitch&&bitch<='z')||('A'<=bitch&&bitch<='Z')||bitch=='.')
{
printf("%c",bitch);
    break;
}
num++;
}
}


void main()
{   int i;
int length;
char a[10000];
gets(a);

length = strlen(a);
    printf("%c",a[0]);
for(i=1 ;i<length; i++)
{
       judge(a,i);


}
}

[解决办法]
       if(bitch==','
[解决办法]
('a'<=bitch&&bitch<='z')
[解决办法]
('A'<=bitch&&bitch<='Z')
[解决办法]
bitch=='.')
没看到规定只有这些是符合的,像; 这些难道就不会有么?
直接把这行去掉试试
[解决办法]
原因在于你的核心算法错了,不得不改:

#include <string.h>
#include <stdio.h>

#define MAX(80)

int decrypt(const char* et)
{
int n = strlen(et);
int i;
char ch;

if(et == NULL)
return -1;

printf("%c", et[0]);
for(i = 1; i < n; i++)
{
for(ch = ' '; ch < 127; ch++)
{
if(et[i] == ((et[i - 1] - 32 + ch - 32) % 96 + 32))
{
printf("%c", ch);
break;
}
}
}
printf("\n");

return 0;
}

int main(int argc, char* argv[])
{
char et[MAX + 1];
fgets(et, MAX, stdin);
return decrypt(et);
}

热点排行