大整数算法(加减法)

本文探讨了大整数算法中的加法和减法操作。在加法部分,通过计算两个数的长度并从末位开始相加实现。在减法部分,首先比较两个数的长度和值,如果第一个数小于第二个数,则结果需要添加负号。
摘要由CSDN通过智能技术生成

加法:

现将两个数分别计算出长度,然后用将长度较短的数为界,写一个for循环,将两个数从末往前依次相加。这个循环结束后,将长度较大的数组未计入计算的数进行运算

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100],b[100];
	while(~scanf("%s %s",a,b))//输入两个大整数 
	{
		int c[120]={0};//将数组初始化为0 
		int l1,l2; 
		l1=strlen(a);
		l2=strlen(b);
		if(l1>l2)
		{
			int i,j,k;
			k=l1;//两个数相加,那么相加的结果长度最多加1,即c数组长度最长为l1 
			j=l1-1;
			for(i=l2-1;i>=0;i--)//从个位开始相加 
			{
				int x,y,z;
				x=a[j]-'0'+b[i]-'0';
				y=x/10;//大于10的会进位 
				x=x%10;//当前位置该加上的数 
				c[k]=c[k]+x;
				if(c[k]>=10)//一个位数如果大于了10,就进一位 
				{
					c[k]-=10;
					c[k-1]+=1;
				}
				c[k-1]=c[k-1]+y; 
				if(c[k-1]>=10)//若进位的值大于10,就再进一次 
				{
					c[k-1]-=10;
					c[k-2]+=
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值