求一个c语言大佬做一下这个题目

)题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第... )题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。请编写加密和解密的程序。 展开
 我来答
White_MouseYBZ
2019-05-04 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6122万
展开全部
#include "stdio.h"
int main(int argc,char *argv[]){
int n,a,b,c,d;
printf("Please enter a positive integer(int 999<n<10000)...\nn=");
if(scanf("%d",&n)!=1 || n<1000 || n>9999){//输入数据
printf("Input error, exit...\n");
return 0;
}
a=(n/1000+5)%10,b=(n/100%10+5)%10,c=(n/10%10+5)%10,d=(n%10+5)%10;//加密过程
a+=d,d=a-d,a-=d;
b+=c,c=b-c,b-=c;
printf("To send data(encryption): %d\n",n=a*1000+b*100+c*10+d);//发送数据
a+=d,d=a-d,a-=d;//解密过程
b+=c,c=b-c,b-=c;
a += a<5 ? 5 : -5;
b += b<5 ? 5 : -5;
c += c<5 ? 5 : -5;
d += d<5 ? 5 : -5;
printf("Receive data(decryption) : %d\n",n=a*1000+b*100+c*10+d);//接收数据
return 0;
}

运行样例:

wuyu73
2019-05-04 · TA获得超过1153个赞
知道小有建树答主
回答量:1593
采纳率:66%
帮助的人:366万
展开全部
int encry(int data)
{
int d[4],i;
for (i=0;i<4;i++) {
d[i]=data%10; data/=10; d[i]=(d[i]+5)%10;
}
return d[0]*1000+d[1]*100+d[2]*10+d[3];
}

int decry(int data)
{
return encry(data);
}
追问
谢谢十分感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式