注册 登录
编程论坛 C++教室

加密函数解决

baby俊 发布于 2011-04-07 18:44, 467 次点击
#include<iostream>
using namespace std;
void encrypt(char s[],int n)
{
    for(int i=0;i<n-1;i++)
        if(s[i]<0)
        {char t=s[i];s[i]=s[i+1];s[i+1]=t;//这里交换前后两个字节是怎么交换的啊?比如输入“请支付1000¥到MIKE的账户”,加密是怎么完成的?弄不懂,望有人指教
        i++;
        }
}
int main()
{
    char text[1024];
    cout<<"请输入一个中英文字符串:";
    cin.getline(text,1024);
    int len=strlen(text);
    encrypt(text,len);
    cout<<"密文为:"<<text<<endl;
    encrypt(text,len);
    cout<<"解密后为:"<<text<<endl;
    return 0;
}
4 回复
#2
pangding2011-04-08 08:36
你自己输入几个字串试试不就知道了。
#3
baby俊2011-04-08 18:22
就是不知道是怎么交换的啊?比如输入“请支付1000¥到MIKE的账户”这个是怎么交换啊。。
#4
Lyone2011-04-08 20:50
百度到这样一段话:
一个char 型是不可能知道是不是字符的,如果你确定这个字符要不是ASCII码就一定是汉字的活可以判断这个字符的BIT7位是否为1,因为ASCII码里面的可显示字符全都是BIT7位为0,而汉字是用两个char型组成的,并且第一个char型的第一位的BIT7位一定是1。
程序代码:
    for(int i=0;i<n-1;i++)
        if(s[i]<0)//个人觉得,这里就是判断那个BIT7是否为1,如果为1的话即小于零,即为汉字,则将该字符与下一字符对调。
        {char t=s[i];s[i]=s[i+1];s[i+1]=t;
        i++;//这里是该字符的下一个字符。
        }
对调之后的汉字就变成了乱码的样子。
#5
baby俊2011-04-15 11:51
也就是对于一个汉字来说,由两个字符数来表示,且第一个字符的第一位一定顶是一。表示的就是一个负数即s[i]<0;
1