用C语言写一个加法运算的代码怎么写?

用C语言写一个加法运算的代码怎么写?,第1张

例子如下:

直接编译,程序输出结果中任意输入两个数字,程序执行结果如下图所示:

知识扩展:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。

首先要用一种数据结构来表示超长正整数,这里采用一个带有表头节点(注意是带有表头)的环形链表来表示它,从低位开始为每个数字编号,第1-4位,第5-8位。。。。。。的每4位组成的数字依次放在链表的第1个,第2个。。。。。。第n个节点中,不足4位的最高位存放在链表的最后一个节点中,表头节点的值规定为-1.按照这种结构,可以从两个表头节点开始顺次依次对应相加,求出所需的进位后带入下一个节点继续运算。

一个完整的程序如下,在win-tc和Dev-c++下调试通过。

#include

#include

#include

#define

HUNTHOU

10000

typedef

struct

node{

int

data

struct

node

*next

}NODE

/*定义链表结构*/

NODE

*insert_after(NODE

*u,int

num)

/*在u结点后插入一个新的NODE,其值为num*/

NODE

*addint(NODE

*p,NODE

*q)

/*完成加法 *** 作返回指向*p+*q结果的指针*/

void

printint(NODE

*s)

NODE

*inputint(void)

void

main()

{

NODE

*s1,*s2,*s

NODE

*inputint(),

*addint(),

*insert_after()

clrscr()

puts("*********************************************************")

puts("*

This

program

is

to

calculate

*")

puts("*

the

addition

of

king

sized

positive

integer.

*")

puts("*********************************************************")

printf("

>>

Input

S1=

")

s1=inputint()

/*输入被加数*/

printf("

>>

Input

S2=

")

s2=inputint()

/*输入加数*/

printf("

>>

The

addition

result

is

as

follows.\n\n")

printf("

S1=

")

printint(s1)

putchar('\n')

/*显示被加数*/

printf("

S2=

")

printint(s2)

putchar('\n')

/*显示加数*/

s=addint(s1,s2)

/*求和*/

printf("

S1+S2=")

printint(s)

putchar('\n')

/*输出结果*/

printf("\n\n

Press

any

key

to

quit...")

getch()

}

NODE

*insert_after(NODE

*u,int

num)

{

NODE

*v

v=(NODE

*)malloc(sizeof(NODE))

/*申请一个NODE*/

v->data=num

/*赋值*/

u->next=v

/*在u结点后插入一个NODE*/

return

v

}

NODE

*addint(NODE

*p,NODE

*q)

/*完成加法 *** 作返回指向*p+*q结果的指针*/

{

NODE

*pp,*qq,*r,*s,*t

int

total,number,carry

pp=p->next

qq=q->next

s=(NODE

*)malloc(sizeof(NODE))

/*建立存放和的链表表头*/

s->data=-1

t=s

carry=0

/*carry:进位*/

while(pp->data!=-1&&qq->data!=-1)

/*均不是表头*/

{

total=pp->da

查看原帖>>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11355157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存