大数的加法 输入a or b 输出结果

又是我!
没错有点闲。。给大家写写代码 不过我c真可怜 我经常找不到代码抄
好吧这不是重点
很多同学在遇见一个输入大数计算的时候 ,觉得很简单,回过头发现数据溢出,才知道不是简单的输入输出,那么我们应该怎么做呢?

思路:数组,无非就是把数字输入到数组 然后挨个判断相加,接着判断进位,
那么该怎么写呢?来看代码吧1
#include <stdio.h>
#include <string.h>
int main()
{
    
    
	int i, j, a,b;  
	char s1[1000], s2[1000];
	int num1[1000] = {
    
    0};         
	int num2[1000] = {
    
    0};
	           
	scanf("%s %s", s1, s2);    
	
	a = strlen(s1); //这里采用了strlen量取长度 方便我存到数组
	//其实可以直接数组       
	b = strlen(s2);	    
	
	for(i=a-1, j=0; i>=0; i--)   
	{
    
    
		num1[j] = s1[i] -48 ;//肯定有人问 为什么-48,
		//因为这样是把字符转数字 你也可以写-‘0’;
		j++;
	}
	for(i=b-1, j=0; i>=0; i--)   
	{
    
    
		num2[j] = s2[i] - 48;//一个一个存入
		j++;
	}
	
	for(i=0; i<=1000; i++)              
	{
    
    
		num1[i] = num1[i]+num2[i];//数组已经挨个存入,现在开始计算
		if(num1[i]>9)//如果相同位置的和大于10
		{
    
    
			num1[i] = num1[i]-10;//让这一位-10;
			num1[i+1]++; //上一位+1;也就是10;
		}	
	}
	
	for(i=1000-1; i>=0&&num1[i]==0; i--);  //判断0位,
	
	if(i>0)
	{
    
    
		for(i; i>=0; i--)                    
		{
    
    
			printf("%d", num1[i]);//输出,	
		}
	}

	return 0;
}

差不多就是这样,有什么不懂可以评论私信问我 爱你们,码字不易 点点关注点个赞吧!

猜你喜欢

转载自blog.csdn.net/weixin_53177536/article/details/113096418