大数 高精运算------加法
#include <stdio.h>#include <stdlib.h>
char s[101];
int sum[101];
int main() {
int i, j;
while (gets(s), strcmp(s, "0")) {//巧妙化解开多少个数组 算多少个数的和的局面
j=strlen(s);
for (i=j-1; i>=0; --i) {
sum[j-i-1]+=(s[i]-'0');//s[i]-'0'表示字符数字转化成int数字 倒序加到sum中 sum第一个数是s的最后一个数的和
}
}
j=101; while(!sum[j])--j; //重新赋值j 使j为目前sum的总位数
for (i=0;i<j;++i) { //如果s[i]加成两位数 将十位数加给前一位数
sum[i+1]+=sum[i]/10;
sum[i]=sum[i]%10;
}
for (i=j; i>=0; --i) {
printf("%d", sum[i]);
}
}------------------------------------------------------------------------------------------------------------------------------
总结一下
(1)开一个字符数组 存放数字 开一个int数组存放之和
(2)while (gets(s), strcmp(s, "0")) 使得不用开多余的数组来存放数据实现边输入边相加
(3)s[i]-'0'将字符的数字转成int数字 然后加到sum中 注意是倒序
(4)算完sum之后一定要重新定义j为sum的最大位数
(5)后面一个for 的工作就是如果加的数超过10就把十位数加到前面去 然后只保留个位数
(6)最后倒序输出sum即可 哈哈 我想的也够累的……到此为止吧