数组实现长整数四则运算c语言,数据结构:长整数的四则运算

本文介绍了如何使用C语言和双向循环链表实现长整数的加法和减法运算。程序通过读取用户输入的长整数,根据中国表示习惯处理输入数据,然后通过特定的链表结构进行运算,最后以中国表示法输出结果。文章详细阐述了数据结构的设计、加法和减法函数的实现以及主函数的流程。
摘要由CSDN通过智能技术生成

题目:设计一个实现任意长的整数的加法运算的演示程序

一、需求分析

本演示程序中,利用双向循环链表来实现长整数的储存,每个节点含一个整型变量。输入和输出形式按照中国对于长整数的表示习惯,每四位一组,组间用逗号隔开;其中输入的两个长整数用 ';' (英语输入法)结尾,允许逗号位置错误,并在输入非法字符是提示错误。

2.测试数据

(1)0;0;应输出“0”。

(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”

(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”

(4)1,0001,0001;-1,0001,0001;应输出“0”

(5)1,0001,0001;-1,0001,0000;应输出“1”

(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”

(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”

二、概要设计

1.数据结构

为实现上述程序功能,采用双向循环链表来储存长整数。

双向循环链表的储存结构:

typedef struct node{

int info;

struct node *prior,*next;

}DLink;

利用头结点的数据域符号来表示长整数的符号,大小表示长整数长度。

2.使用函数

DLink *Dcreat()

操作结果:初始化储存长整数的双向循环链表

DLink *addition(DLink *a, DLink *b)

操作结果:实现同符号长整数的加法操作

DLink *subtraction(DLink *a, DLink *b)

操作结果:实现异号号长整数的加法操作

void printDlink(DLink *head)

操作结果:实现长整数的中国表示方法输出

void main()

操作结果:主函数,调用以上函数进行加法运算

三、详细设计

1.读入数据初始化双向循环链表函数

采用getchar()从屏幕上读取字符,定义flag变量表示输入是否合法,对于不合法的输入将链表头结点数据域(head->info)置为0;对于正规输入构成链表的头结点数据域为:长整数长度×符号,长整数长度(len)在循环读入字符时确定,将读入的','以及'-'外每一位字符转化为int型,存在链表节点的数据域中,实现如下:

DLink *Dcreat()

{

DLink *head,*p,*last;

int flag = 0; //输入是否合法

char c;

int num;

int len = 0;//长整数长度

head=(DLink *)malloc(sizeof(DLink));

head->next = NULL;

head->prior = NULL;

head->info = 1;/

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值