编写一个简单加密程序
输入一个6位整数的明码,按以下方法加密:首先,将每位数字替换成它与7相加之和再用10求模的结果; 然后逆置 ,最后输出密码。在编写程序,把这个密码还原成明码。若输入错误显示错误信息后退出程序。 12
首先拿到这道题我们直到三个模块:加密,解密,还有错误信息退出。
先来分析加密;
1.不用数组时取出每一位我们知道可以用取余的方法,在不断÷10,将剩余的数再取余可以得到每一位数,得到固定位的数字后我们对这个数进行操作,(用jieguo来计最后的结果)+7再%10,为了逆置,将该数字操作过后得到的数字每次循环都×10,共循环6次可以得到,部分代码如下:
for(i=1;i<=6;i++) { jieguo*=10;//每次的数字向前移一位如2变成20要*10,20*10=200 t0=n%10;//n是原数,用t 得到每位数字 t1=(t0+7)%10;//操作后的数字 jieguo+=t1; n=n/10;//因为n是int型,若n=666666,算后结果为66666 } 12345678
然后就是解码了,可以知道两者就是(+7%10)这步算法不同其他全都一样
若原来为200911则显示密码是886779,我们分析加密可知2+7=9%10就=9,1+7=8%10就=8,0+7=7%10就=7而小于7的数就一定是+7后结果大于十要了一个个位数,所以如果加密完的数jieguo中进行取各位数字,有两种情况,若(>7)则减去7就好,若(<7)n2+=t+10-7,其他过程全仿照上面只是别将变量弄混即可
for(i=1;i<=6;i++) {n2*=10; t=jieguo%10; if(t>=7)n2+=t-7; else n2+=t+10-7; jieguo=jieguo/10;} 1234567
if(n>999999||n<1000000)
{cout<<“输入错误退出程序\n”
return 0;}
结束!!!撒花