某公司采用公用电话传递数据,数据是4位的整数,在传递过程中是加密的.
加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.
[要求]编写一个程序,用于接收一个4位的整数,并且打印输出加密后的数
===================================================================
#include<iostream>
using namespace std;
#include<string>
#include<windows.h>
void main()
{
begin:
string str;
cout<<"请输入4位数字,每位不得小于5"<<endl;
cin>>str;
int str_int[4];
char str_char[5]; str_char[5]='\0';
if( str.size () < 4 )
{
MessageBox(0,L"字符数小于4",L"错误",0);
goto begin;
}
else if( str.size() > 4 )
{
MessageBox(0,L"字符数大于4",L"错误",0);
goto begin;
}
else
{
str_int[0]=atoi(&str[0]);
str_int[1]=atoi(&str[1]);
str_int[2]=atoi(&str[2]);
str_int[3]=atoi(&str[3]);
}
if( str_int[0]<5 || str_int[1]<5 || str_int[2]<5 || str_int[3]<5) //小于5的算不出余数,都是 比10小的。
{
MessageBox(0,L"有字符小于5",L"错误",0);
goto begin;
}
//算术加密
str_int[0] = (str_int[0] + 5) % 10;
str_int[1] = (str_int[1] + 5) % 10;
str_int[2] = (str_int[2] + 5) % 10;
str_int[3] = (str_int[3] + 5) % 10;
_itoa(str_int[0],&str_char[0],10);
_itoa(str_int[1],&str_char[1],10);
_itoa(str_int[2],&str_char[2],10);
_itoa(str_int[3],&str_char[3],10);
//掉换顺序
char n;
n=str_char[0];
str_char[0]=str_char[3];
str_char[3]=n;
n=str_char[1];
str_char[1]=str_char[2];
str_char[2]=n;
cout<<endl<<"结果:"<<str_char;
int P;cin>>P;
}
===============================================================
和手动算的结果不一样,错在哪了。