您的位置:首页 > 其它

PTA1048数字加密

2019-01-08 20:59 99 查看

这道题思路其实很简单

  1. 将两个数组反转
  2. 找出最大的长度,用max记录
  3. 将短的补0
  4. 计算
  5. 倒顺序输出

多敲了一个=导致找了一个小时的bug,谁能告诉我手抖怎么办。

知识点

  1. reverse函数:头文件#include<string.h>
    功能:将字符数组倒过来。
    相关博客:点这里
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;

int main(){
char a1[110],a2[110],a3[110];
scanf("%s %s",a1,a2);
int l1=strlen(a1),l2=strlen(a2);
reverse(a1,a1+l1);
reverse(a2,a2+l2);
int max;
if(l1>l2){max=l1;
for(int i=l2;i<=l1-1;i++)
a2[i]='0';
}
else if(l2>l1){max=l2;
for(int i=l1;i<=l2-1;i++)
a1[i]='0';
}
else max=l2;
int flag=0;
int tem;
for(int i=0;i<max;i++){
if(flag==0){
tem=(a1[i]-'0'+a2[i]-'0')%13;

if(tem==10) a3[i]='J';
else if(tem==11) a3[i]='Q';
else if(tem==12) a3[i]='K';
else a3[i]=tem+'0';
flag=1;
}
else{
tem=a2[i]-a1[i];
while(tem<0) tem=tem+10;
a3[i]=tem+'0';
flag=0;
}//printf("^%c^",tem+'0');
//
// printf("*%d*",tem);
}
//printf("*%c*&%c&*%c*",a1[0],a3[0],a2[0]);
//cout<<a1<<endl<<a2<<endl;
for(int i=max-1;i>=0;i--)printf("%c",a3[i]);
//cout<<a3;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: