60pts
查看原帖
60pts
793067
Sam_Gamer楼主2023/5/22 13:58
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
	char num1[520],num2[520];//数字 
	int a[520],b[520];//存储(每位)数字 
	int i,j;//喂给循环方便用数组 
	int len1,len2;//数字数位长度 
	int plus;//进位 
	int maxx;//较大数 
	cin>>num1>>num2;//模拟数字的输入
	len1=strlen(num1);//同下11 
	len2=strlen(num2);//获取数位长度 
	/*
	234
   +  9
   
   __1___  ---进位 
    243
    所以我们采用倒序
	*/ 
	for(i=0;i<len1;i++) 
	{
		a[i]=num1[len1-i-1]-48;//同30行注释 
	}
	for(i=0;i<len2;i++) 
	{
		b[i]=num2[len2-i-1]-48;//倒序 48='0'得到int 类型的对应位数上的数字 
	}
	maxx=max(len1,len2);//取较长放上面,大的加完为止(Chinese) 
	/*下面是模拟竖式计算*/ 
	for(i=0;i<maxx;i++)
	{
		a[i]=a[i]+b[i]+plus;//每一位是上数加下数加进位 
		plus=a[i]/10;//int向下取整 例如4+9=13; 13/10=1 
		a[i]%=10;//数位取个位 
		
	} 
	if(plus==1)cout<<plus;//特判二次进位,最多有1(a+b)
	for(i=maxx-1;i>=0;i--)
    {
        cout<<a[i];//因为倒叙所以从数组的最后一位输出(最后一位对应原数第一位,第一位对应原数最后一位) 
    } 	
}
2023/5/22 13:58
加载中...