PTA1048数字加密

这道题思路其实很简单

  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;
} 
全部评论

相关推荐

昨天 12:24
重庆大学 运营
坏消息:和好工作擦肩而过
给点吧求求了:怎么可能因为差几秒,估计就是简历更好看婉拒了
点赞 评论 收藏
分享
07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务