编程:大整数加法(C语言版)
//题目:大整数加法,假定最多只有101位
//思路:用字符数组形式进行大整数的输入,然后将数组前后交换顺序(con//vert函数,因为加法是从最低位加起的),然后将字符数组变成数字形式//(shuzi函数),进行加法(add函数),最后就是输出了,用(print函数)。
#include<stdio.h>
#include<string.h>
void convert(char num[])
{
int l,i,j;
j=100;
l=strlen(num);
for(i=0;i<l;i++)
{
num[j]=num[i];
j--;
}
while(j>=0)//把多余的位置变成字符0
{
num[j]='0';
j--;
}
}
void shuzi(char num[])
{
int i;
for(i=0;i<=100;i++)
{
num[i]=num[i]-'0';
}
}
void add(char num1[],char num2[])
{
int i;
for(i=100;i>0;i--)
{
num1[i]=num1[i]+num2[i];
if(num1[i]>=10)
{
num1[i-1]=num1[i-1]+num1[i]/10;//这步和下步的顺序一定不能交换,否则进位会失败。
num1[i]=num1[i]%10;
}
}
}
void print(char num[])
{
int i=0;
while(num[i]==0)
{
i++;
}
for(i=0;i<101;i++)
{
printf("%d",num[i]);
}
}
int main()
{
char num1[101],num2[101];
scanf("%s",num1);
getchar();
scanf("%s",num2);
getchar();
convert(num1);
convert(num2);
shuzi(num1);
shuzi(num2);
add(num1,num2);
print(num1);
return 0;
}
//总结:注意把一个大问题分成一个个小问题,用函数的方法进行处理;注意各//步骤的顺序,每一步要注意值的变化。