c语言 高精度加减法

计算机所能完成的一个基本功能就是完成数据的计算,譬如加法、减法等等。但是在任何一种计算机上,计算中能够使用的数字都是有一定范围的,超过了范围,就没法得到精确的结果。你现在... 计算机所能完成的一个基本功能就是完成数据的计算,譬如加法、减法等等。但是在任何一种计算机上,计算中能够使用的数字都是有一定范围的,超过了范围,就没法得到精确的结果。
你现在接受了一个任务,要编写一个高精度计算器的核心部分。所谓高精度计算器,就是可以计算很大很大的数据的计算器。而你所需要编写的程序,就是真正完成高精度加法和高精度减法运算的两个函数,因为程序其它的部分已经由别人编写好了。
函数的输入、输出接口也已经定义完成,譬如 plus() 函数,它有三个参数 a、b 和 c,都是 char * 类型。a 和 b 分别是参加运算的两个整数,而 c 用来存放运算的结果。所有的数字都是以字符串的形式保存的。
注意,只需提交你自己编写的两个函数。
输入
输入的每一行是两个十进制的正整数和一个运算符,每个整数可以由最多 500 个数字组成。运算符可以是加号或者减号。
输出
对应着输入的每一行数据,输出计算的结果,每个结果占一行。
预设代码
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include <stdio.h>
#include <string.h>

void plus(char *a, char *b, char *c);
void minus(char *a, char *b, char *c);

int main()
{
char a[1000];
char b[1000];
char c[1000];
char s[2];

while (scanf("%s %s %s", a, s, b) != EOF) {
if (s[0] == '+') {
plus(a, b, c);
} else if (s[0] == '-') {
minus(a, b, c);
}
printf("%s\n", c);
}

return 0;
}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

自己写了七八个小时了,一直没有得到正确的答案,求大神帮忙写一下(不要用c++)求参考代码
展开
 我来答
phone1234563
2013-09-02
知道答主
回答量:11
采纳率:0%
帮助的人:7.4万
展开全部
等十分钟 在给你写
加法函数 好久没写程序了 本来以为十分钟能写好 。。。。。(修改:修复了个小bug)
void plus(char *a, char *b, char *c){
int i,index_a,index_b,index_c,carry=0,ten='9'+1,temp_index_c;
index_a=strlen(a)-1; // index变量指向最末一个数字
index_b=strlen(b)-1;
index_c=index_a>index_b? index_a:index_b;
temp_index_c=index_c;
if(index_a>=index_b){
for(i=index_b+1;i>=0;i--){
b[i+(index_a-index_b)]=b[i];
}
for(i=0;i<index_a-index_b;i++)
b[i]='0';
}
else{
for(i=index_a+1;i>=0;i--){
a[i+(index_b-index_a)]=a[i];
}
for(i=0;i<index_b-index_a;i++)
a[i]='0';
}
while(index_c>=0){
c[index_c]=a[index_c]+b[index_c]+carry-'0';
if(c[index_c]>=ten){
c[index_c]-=ten-'0';
carry=1;
}
else
carry=0;
index_c--;
}
if(carry==1){
for(i=temp_index_c;i>0;i--){
c[i+1]=c[i];
}
c[0]=1;
}
c[temp_index_c+1]=0;
}
百度网友7e6f351
2013-09-02 · TA获得超过132个赞
知道答主
回答量:80
采纳率:0%
帮助的人:73.4万
展开全部
中能够使用的数字都是有一定范围
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友42bc20c18
2013-09-02 · TA获得超过159个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:108万
展开全部
占个位置,等下来答。
更多追问追答
追问
多谢了~AC的话提高悬赏
追答
刚烧完支烟回来,又要到下班的点了。哈哈!
我先给你说下思路吧。
首先,你理解题目就错了,你的加数和被加数,结果都是放在数组中的。
所以,你的输入函数有误(对于电脑的C语言的输入输出函数不记得了)。

先说加,应该一位一位的加,就好像做十进制运算一样。加到数据结束为止。产生进位,后面的加1就行了。

减,有点麻烦。先去吃饭。下午再给你说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式