高精加法
#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 的最大位数