进制转换(错误笔记)

十进制数转换为其他进制
原题:

D进制的A+B

输入两个非负 10 进制整数 A 和 B (≤2³⁰−1),输出 A+B 的 D(1<D≤10)进制数。

输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。

输出格式:
输出 A+B 的 D 进制数。

输入样例:
123 456 8
输出样例:
1103

#include<stdio.h>
int main()
{
	int A,B,D;
	while(scanf("%d %d %d",&A,&B,&D)!=EOF)
	{
	//方法一:数组存放
    int z[40];//z数组存放转换的其他进制的数值
	int c;
	c=A+B;
	int num=0;
	do
	{
		z[num++]=c%D;
        c/=D;
	}while(c!=0);
	for(int i=num-1;i>=0;i--)
	printf("%d",z[i]);
	printf("\n");
	方法二:
	int sum=0,product=1;
	c=A+B;
	while(c!=0)
	{
		sum+=(c%D)*product;
		c/=D;
		product*=10;
	}
	printf("%d\n",sum);
	}
	return 0;
}

运行结果:
结果
按理说每次输入一行,打印出的上下两行应该相同,但是在最后一次输入“123 132 16”的时候,输出的分别是1515和165

大一下学期的c++基础ppt中有个对十进制转八进制的方法的公式:
在这里插入图片描述
方法二就是用的这个公式,我考虑比起用数组不清楚数组长度而有限制不如这个方法好。
但是这个方法只能适用10进制转化为10进制以内的数。
10进制之外,如123+132=255转化为16进制
用这个方法会变成
在这里插入图片描述(我都不敢相信我这是截图的csdn编辑面)
而实际就应该是1515
虽然这么说,但是由其他进制转换为10进制却可以用形似方法二的办法
csdn的格式好奇怪啊好奇怪啊好奇怪啊好奇怪啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茅蒐Rubia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值