【笔记 8-1】C语言编程题系列:大数加法

C语言编程题系列:大数加法

大数加法用于求多位数据相加,因为数据位太多,一般数据类型无法储存,导致无法操作,因此,需要用数组来存储操作数的数据位,其中有几个问题需要特别注意。
1.存数据的数组要用字符串而不是int型数组,因为一个数组元素只存一位数
2.两数相加时应该倒叙相加,因为输入是从高位输入而计算是从个位开始,例如123+45,输入是123 回车 45 ,但计算是3+5再2+4这样的
3.要注意进位问题,并且注意每一位只存一个,所以如果有进位要利用取余
4. 因为有倒叙操作,在本题解给出的例子中数据的顺序为:正序输入,倒叙操作,正序输出

综上所述,程序大致思路为:

  1. 用字符串存储数据
  2. 将字符串转换为int型进行操作
  3. 用第三个数组存储结果
  4. 输出结果
    程序如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
 {
	char a[1001]={0},b[1001]={0};
	int c[1001]={0},d[1001]={0},x[1001]={0};
	int i,j,k=0,t=0,max,m,n;
	scanf("%s%s",a,b);//先用 字符串 将 操作数 输入 
	
	
	for(i=0,j=strlen(a)-1;j>=0;i++,j--)//将 char转换成 int 
	{
    	c[i]=a[j]-'0';
	}
	for(i=0,j=strlen(b)-1;j>=0;i++,j--)
	{
		d[i]=b[j]-'0';
	}
		
	
	if(strlen(a)>strlen(b))//找出 较大的数  作为 两数之和 的长度 
	max=strlen(a);
	else
	max=strlen(b);
	
	
	for(i=0;i<max;i++)
	{
	t=c[i]+d[i]+t;        //后面的 t 是 两数之和 的进位,第一次运行时为 0 
	x[k]=t%10;			  // x数组 是 结果 ,  每次循环 取 结果的低位(因为可能进位,只取一位) 
	k++;					
	t=t/10;				  //t此时又作为余数 
	}
	x[k]=t;				  //由于进位 导致 最后可能多出一位 
	
	
	if(x[k]!=0)        //判断上一步多出的 最后一位 是否为0, 不是就输出 
	printf("%d",x[k]);
	
	for(i=k-1;i>=0;i--)  //倒叙输出后面几位 
	{
	printf("%d",x[i]);
	}
	return 0;
}
//*******************   结束  **********************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值