C语言大作业 题目是:请设计一个算法完成两个超长正整数的加法。谁会的帮帮忙? 如何用C语言编程完成两个1000位以内的正整数加法

作者&投稿:淫闹 (若有异议请与网页底部的电邮联系)
显然是高精度了。
我记得长整数指的是long型、超过long还有long long、以及__int64 不过显然题目不是这个意思。
我想LZ对加法的竖式应该很熟悉、高精度就是用的竖式的原理。
我只给你算法、不提供代码、自己写代码才是最好的。
首先、输入的时候就不能直接scanf整形了、那就以字符串的形式输入--我想LZ你会的。
然后建立四个整形数组、其中两个表示所要相加的数、一个表示进位、一个表示结果。
由于两个个位数相加绝对不会超过18、所以最后进位的数组存成bool型也可以。
首先把输入的两个字符串分别转到两个整形数组里、注意要从尾开始转、这样两个整形数组的下标就按照从0开始依次表示个十百千...的顺序来存两个数了、而且严格按位对齐。
于是就可以for一遍、每个数组位相加(注意数组初始化设为0、这样加到最高位就可以了)。
相加的时候判断是不是大于10、如果大于10、就减去10、然后这一位数组下标+1的那一位的进位bool数组由0变成1。
新建一个输出的数组。
最后再for一次、把结果数组遍历、如果有进位就+1、如果继续进位就直接在下一位操作。
导入到输出数组、printf就ok

两个超长,啥意思
double

请设计一个算法来完成两个超长正整数的加法。用链表方法实现。 编程~

int AddFun(_IN *lst1,_IN *lst2,_OUT *ret){
int at=0;
do{

int onebit = lst1->data + lst2->data + at;
at = onebit /10;
ret->data = at%10;
lst1= lst1->next;
lst2=lst2->next;
ret = ret->next;

} while(lst1->next && lst2->next && ret->next){
}

使用字符数组
char num1[1000], num2[1000],sum[1001];取出字符数组最后一位的数字 可以用 temp1=num1[1000]-'0';
反之数字转为字符 加上 '0'
设置一个进位标志 使用循环就好了