PTA1048数字加密

这道题思路其实很简单

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

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

知识点

 1. reverse函数:头文件#include<string.h>
                            功能:将字符数组倒过来。
                            相关博客:[点这里](https://blog.csdn.net/qq_40828914/article/details/81138117)



#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; 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务