大数的加法

#include <stdio.h>
#include <string.h>
int main()
{
	int a[100],b[100],c[100];
	char ch1[100],ch2[100];
	int i,peace=0;
	int index=0;
	int k,j;
	printf("请输入第一个数字:\n");
	scanf("%s",ch1);
	for(i=0;i<strlen(ch1);i++)				//把字符数字转换成整数数字,进行数字相加。
		a[strlen(ch1)-i-1]=ch1[i]-'0';
	printf("请输入第二个数字:\n");
	scanf("%s",ch2);						//同上
	for(i=0;i<strlen(ch2);i++)
		b[strlen(ch2)-i-1]=ch2[i]-'0';
	for(i=0;i<strlen(ch1) && i<strlen(ch2);i++)//相同位数的相加
	{
		c[i]=(a[i]+b[i]+peace)%10;
		peace=(a[i]+b[i])/10;
		index++;
	}
	if(strlen(ch1)>strlen(ch2))				//位数多的数字进行进位运算
	{
		k=strlen(ch2);
		j=strlen(ch1);
		for(i=k;i<j;i++)
		{
			c[i]=(a[i]+peace)%10;
			peace=(a[i]+peace)/10;
			index++;
		}
	}
	else
	{
		k=strlen(ch1);
		j=strlen(ch2);
		for(i=k;i<j;i++)
		{
			c[i]=(b[i]+peace)%10;
			peace=(b[i]+peace)/10;
			index++;
		}
	}

	if(peace)							//最高位进1
	{
		c[i]=peace;
		index++;
	}

	for(i=index-1;i>=0;i--)				//输出
		printf("%d",c[i]);
	putchar('\n');

	return 0;
}

你可能感兴趣的:(大数的加法)