两个超大数相加c语言,C语言中实现两个大数相加

《C语言中实现两个大数相加》由会员分享,可在线阅读,更多相关《C语言中实现两个大数相加(4页珍藏版)》请在人人文库网上搜索。

1、实验题目C语言基本控制结构应用实验时间2011年5 月 19日实验地点DS1421实验成绩实验性质验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 程序结构/实验步骤合理;实验结果正确; 语法、语义正确; 报告规范; 其他:评价教师签名:一、实验目的1 掌握数组的定义、初始化、以及数组元素的引用方法2 掌握使用数组表示相关同类数据以及相应的程序设计基本方法3 掌握字符数组的定义、输入、输出4 掌握字符串有关的标准库函数的使用二、实验项目内容(实验题目)在实际的工程应用中常常出现超过系统整型数据类型表示范围的大整数,所以有必要研究大整数在程序中的处理方法。请编制程序实现。

2、功能:利用字符数组实现两个大整数的加法。 三、源程序(实验过程或算法)#include #include #define N 200void main()char s1N,s2N;int aN=0,bN=0,l1,l2,c,k,i;puts(请输入两个较大的数字(Note:输完一个按一次回车):);gets(s1);gets(s2);l1=strlen(s1);l2=strlen(s2);if(l1=0;i-)ai+=bi;if(ai=10) ai-=10;ai-1+;printf(此两数相加之和为:);if(a0!=0)for(i=0;i=c;i+)printf(%d,ai);else for(i=1;i=c;i+)printf(%d,ai);printf(n);四、源程序调试过程和(或)实验分析第一次运行过程:第二次运行过程:实验体会:此次实验让我体会到字符串的妙用,通过其所作的和运算,避免了数据溢出,实现了很大数的求和。所以,在以后的学习中,可以尽可能的探索,把已知的知识串联起来,就能得到意想不到的收获!3 / 4。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C语言链表实现大数相加的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Node { int val; struct Node *next; } Node; Node *createNode(int val) { Node *node = (Node*)malloc(sizeof(Node)); node->val = val; node->next = NULL; return node; } void insertNode(Node **head, int val) { Node *node = createNode(val); node->next = *head; *head = node; } void printList(Node *head) { while (head) { printf("%d", head->val); head = head->next; } printf("\n"); } Node *addTwoNumbers(Node *l1, Node *l2) { Node *dummyHead = createNode(0); Node *cur = dummyHead; int carry = 0; while (l1 || l2 || carry) { int sum = carry; if (l1) { sum += l1->val; l1 = l1->next; } if (l2) { sum += l2->val; l2 = l2->next; } carry = sum / 10; cur->next = createNode(sum % 10); cur = cur->next; } return dummyHead->next; } int main() { char str1[100], str2[100]; scanf("%s%s", str1, str2); int len1 = strlen(str1), len2 = strlen(str2); Node *l1 = NULL, *l2 = NULL; for (int i = len1 - 1; i >= 0; i--) { insertNode(&l1, str1[i] - '0'); } for (int i = len2 - 1; i >= 0; i--) { insertNode(&l2, str2[i] - '0'); } Node *res = addTwoNumbers(l1, l2); printList(res); return 0; } ``` 该程序首先读入两个字符串表示的大数,然后将其转换为链表形式。接着使用链表实现的加法将两个链表相加,最后输出相加结果的链表形式。 该程序使用了链表的基本操作,如创建节点、插入节点、遍历节点等。其 `addTwoNumbers` 函数实现了链表的加法,每次取出两个链表的对应结点以及进位值,计算其和并构造新的节点,最后连接到结果链表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值