某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
在传递过程中需要加密,加密规则如下:
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
然后,把加密后的结果在控制台打印出来。
题目要求:
A:数据是小于8位的整数
定义一个int类型的数据
int number = 123456;
B:加密规则
a:首先将数据倒序
结果 654321
b:然后将每位数字都加上5,再用和除以10的余数代替该数字
结果 109876
c:最后将第一位和最后一位数字交换
结果 609871
C:把加密后的结果输出在控制台
#include <stdio.h>
#include <math.h>
//15:8位int型 数 进行加密操作 首末位交换其他位+5取余
//解密:。。。。
//整型转数组
int IntTo(int a,int array[])
{
if(NULL==array)
{
return -1;
}
int n1=a;
int num[20]={0};
int i=0;
int len=0;
while(n1!=0)
{
num[i]=n1%10;
n1/=10;
++i;
++len;
}
for(i=0;i<len;i++)
{
array[i]=num[i];
}
printf("\n");
array[len]='\0';
return len;
}
//整型转数组 (不倒序)
int IntTo2(int a,int array[])
{
if(NULL==array)
{
return -1;
}
int n1=a;
int num[20]={0};
int i=0;
int len=0;
while(n1!=0)
{
num[i]=n1%10;
n1/=10;
++i;
++len;
}
for(i=0;i<len;i++)
{
array[len-i-1]=num[i];
}
array[len]='\0';
return len;
}
//数组转整型
int ToInt(int *array,int len)
{
if(NULL==array)
{
return -1;
}
int *p2=array;
int i;
int sum=0;
for(i=len -1;i>=0;--i)
{
sum += (int)(p2[i]*pow(10,len-i-1));
}
return sum;
}
int JieMi(int n)
{
if(n>100000000) //小于八位
{
return -1;
}
int num=n;
int i;
int arr[20]={0};
int len=IntTo(num,arr);
int tmp;
tmp=arr[len-1];
arr[len-1]=arr[0];
arr[0]=tmp;
for(i=0;i<len;i++)
{
arr[i]+=5;
arr[i]=arr[i]%10;
}
arr[len]='\0';
int *p2=arr;
int sum=ToInt(arr,len);
return sum;
}
int JiaMi(int n)
{
if(n>100000000) //小于八位
{
return -1;
}
int i;
int arr[30]={0};
int num=n;
int len=IntTo(num,arr);
int *p1=arr;
for(i=0;i<len;i++)
{
arr[i]+=5;
arr[i]=arr[i]%10;
}
int tmp;
tmp=arr[0];
arr[0]=arr[len-1];
arr[len-1]=tmp;
int sum=ToInt(arr,len);
return sum;
}
int main()
{
int num=123456;
int s[20]={0};
int i;
int num2=JiaMi(num);
printf("--------%d\n",num2);
int num3=JieMi(num2);
printf("==========%d\n",num3);
return 0;
}
结果:--------609871
==========123456
注意整型转数组时因为没涉及到如何将数组作为函数值返回所以在函数中直接修改数组的值。