A + B Problem II(大数相加)

本文详细介绍了一种使用字符串和数组进行大数加法运算的C语言实现方法,包括字符串到整数数组的转换、进位处理及结果输出,特别关注了最高位为0的特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#杭电
题目
原答案
答案非原创!!!


#include <stdio.h>
#include <string.h>
int main(){

	int n,s=0;
	scanf("%d",&n);  						//测试次数
	while(n--)
	{ 
		s++;								//case数	
		char str1[1000]={0},str2[1000]={0}; //字符串接受
		int a1[1001]={0},a2[1001]={0};       //为之后转数组
		scanf("%s%s",str1,str2); 			//接收数据
		int len1=strlen(str1),len2=strlen(str2); //长度

		int i,j,k=0;		//转int型
		for(i=len1-1;i>=0;i--)       
			a1[k++]=str1[i]-'0';
		k=0;
		for(i=len2-1;i>=0;i--)
			a2[k++]=str2[i]-'0';

		k= len1>len2?len1:len2;  			//大数在前

		for(j=0;j<k;j++)					//求和 进位
		{
			a1[j] += a2[j];
			if(a1[j]>=10)      
				{
					a1[j] -=10;
					a1[j+1] +=1;
				}
		}
 		
 		printf("Case %d:\n",s);
 		printf("%s + %s = ",str1,str2);
 		if(a1[k]==0)						//第一位为0时
		{
				for(i=k-1;i>=0;i--)
					printf("%d",a1[i]);
		}
		else{
			for(i=k;i>=0;i--)
					printf("%d",a1[i]);
		}
		printf("\n");
 		if(n>0) printf("\n");
	}
}

1.当大数运算时 用字符串进行运算
2.注意数组的存储 【0-9】

if(a1[j]>=10)      
				{
					a1[j] -=10;
					a1[j+1] +=1;
				}

3.注意最高位为0的情况

if(a1[k]==0)						//第一位为0时
		{
				for(i=k-1;i>=0;i--)
					printf("%d",a1[i]);
		}
		else{
			for(i=k;i>=0;i--)
					printf("%d",a1[i]);
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值