【PAT B1022】D进制的A+B(C语言)
代码实现
#include <stdio.h>
int main(){
int a,b,d,sum;
int ans[31],num=0;
scanf("%d%d%d",&a,&b,&d);
sum=a+b;
do{
ans[num++]=sum%d;
sum/=d;
}while(sum!=0);
int i=num-1;
for(i;i>=0;i--){
printf("%d",ans[i]);
}
return 0;
} 错误记录
#include <stdio.h>
#include <math.h>
int main(){
int a,b,d,sum;
int ans=0,i=0;
scanf("%d%d%d",&a,&b,&d);
sum=a+b;
for(i;sum!=0;i++){
ans+=pow(10,i)*(sum%d); //用整数来表示结果
sum/=d;
}
printf("%d",ans);
return 0;
} 想省一个for循环,结果做加法更费空间,并且当数字过大时存在越界
#include <stdio.h>
int main(){
int a,b,d,sum;
int ans[31],num=0;
scanf("%d%d%d",&a,&b,&d);
sum=a+b;
for(;sum!=0;){ //第一处
ans[++num]=sum%d;
sum/=d;
}
int i=num;
for(i;i>0;i--){
printf("%d",ans[i]);
}
return 0;
}
//【第一处】当测试用例为 0 0 8 时会直接跳过,出现错误

查看22道真题和解析