永发信息网

C/C++疑难杂症

答案:2  悬赏:40  手机版
解决时间 2021-05-12 09:54

某公司采用公用电话传递数据,数据是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;
}

 

===============================================================

和手动算的结果不一样,错在哪了。

最佳答案
计算机只知道2进制,你要知道10进制换成2进制的数字代码是什么!
全部回答

#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])/1000;  str_int[1]=atoi(&str[1])/100;  str_int[2]=atoi(&str[2])/10;  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; }

改了下。。。不知道这是不是你的本意。。。。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
送警察男朋友什么礼物,送警察生日礼物送什么
反证法什么开始时候学?是初三下学期吗?
一吨松树木料的体积是多少
表明时间不会冲的句子,java怎么就学不会呢?
什么是非主流,什么是PUNK?
中国钱币和日本钱币有什么相同之处
关于谎言和滥情的句子,一个人可以很好,但不要
6220c初始锁码怎么不对啊。(12345)没改过。
徐志摩的《我不知道风是在往哪一个方向吹》:
诺基亚5800W,5800I,5800XM的区别
初中物理题 !急急
为什么我的炫舞已经二十多级了,可我每次点亮
请问晚上有火车从郑州去广西柳州吗?
绝命毒师怎么样,绝命毒师第五季最后结局杰克
2010年淮安师范文通学院专科,专业,市场营销
推荐资讯
NBA与AND1,谁的扣篮更炫?
蜂蜜和什么一起搭配才不会有蜂蜜的腥味?
寻仙地府怎么去 多少及可以进
Intel(R) 82945G Express Chipset Family 这
他问“你觉得我们在一起合适吗?”是什么意思
梦见象黄鳝一样的东西钻入身体是什么意思?
DNF死神称号要的死神气息一天能刷多少
拳皇98克里斯的鞋子在哪有卖?
关于男人累了的句子,男人必须要坚强所有苦累
生命安全教育宣传标语,生命安全的警示语??
本人要写作文600字的。名字叫快乐中秋,感谢
炫舞幸运金币是干什么用的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?