c算法-数字加密解密

来源:互联网 发布:pconline软件 编辑:程序博客网 时间:2024/04/30 07:47

题目及代码:

/** 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 **/#include <stdio.h>void encryptNumber(int *a){//加密    //    交换1<->4,2<->3,其实就是逆序    int temp1,temp2;    for (int i=0; i<2; i++) {//两次循环就搞定!!        temp1=(a[i]+5)%10;        temp2=(a[3-i]+5)%10;        a[i]=temp2;        a[3-i]=temp1;    }    }void decryptNumber(int *a){//解密//    如果某位上的数<5,那么就是原来的数一定+5>10//    如:原来是1036,加密后--》1856,因为1<5,所以未逆序前应是1+10-5=6//    否则的话如8>5,所以未逆序前应是8-5=3    int temp1,temp2;    for (int i=0; i<2; i++) {//        分情况讨论 a[i]<5 or a[i]>=5        temp1=a[i]<5?a[i]+5:a[i]-5;        temp2=a[3-i]<5?a[3-i]+5:a[3-i]-5;        a[i]=temp2;        a[3-i]=temp1;    }}int main(int argc, const char * argv[]) {    int Number=1234;//待加密四位整数    int a[4]={0};//将这个四位数字存储在数组中    for (int i=3; i>=0; i--) {//填充数组        a[i]=Number%10;        Number/=10;    }//    打印--加密前    printf("加密之前:\n");    for (int i=0; i<4; i++) {        printf("%d ",a[i]);    }//    调用加密函数    encryptNumber(a);//    打印--加密后    printf("\n加密之后:\n");    for (int i=0; i<4; i++) {        printf("%d ",a[i]);    }//    调用解密函数    decryptNumber(a);//    打印--解密后    printf("\n解密之后:\n");    for (int i=0; i<4; i++) {        printf("%d ",a[i]);    }    return 0;}

运行:

这里写图片描述

0 0
原创粉丝点击