用c语言如何实现64位长整型的加减法、32位长整型乘法、64位长整型除法?

是这样的,想请教一下,用c语言如何实现64位长整型的加减法、32位长整型乘法、64位长整型除法?
最新回答
幽兰黛尔

2024-09-26 00:22:31

#include<

stdio.h
>

#include<

string.h
>

#define N 1005

int main()

{

char str1[N],str2[N];

int num1[N],num2[N],t,len1,len2,i,j,max;

scanf("%d",&t);//测试t组数据,减法就不写了

getchar();

while(t--)

{

memset(str1,0,sizeof(str1));

memset(str1,0,sizeof(str2));

memset(num1,0,sizeof(num1));

memset(num2,0,sizeof(num2));

scanf("%s",str1);//输入第一个数,这个1000位整数相加也没问题,上面自己改长度

scanf("%s",str2);//输入第二个数,因为没有太长的

数据类型
,用
字符串
表示大整数

len1=strlen(str1);

len2=strlen(str2);

max=len1>len2?len1:len2;

j=0;

for(i=len1-1; i>=0; i--) //这里注意啊,倒着转换,但是num1是正向存每一位的

{

num1[j]=str1[i]-'0';   //转换成数字一个一个存到数组里面

j++;

}

j=0;

for(i=len2-1; i>=0; i--)

{

num2[j]=str2[i]-'0';

j++;

}

for(i=0; i<max; i++)  //一位一位相加

{

num2[i]+=num1[i];      //加到num2数组中

if(num2[i]>=10)  //大于10进位

{

num2[i]-=10;

num2[i+1]+=1;

}

}

if(num2[max]==1)   

printf("%d",num2[max]);

for(i=max-1; i>=0; i--)   //这样就把大整数的每一位算出来了,顺序输出就好

printf("%d",num2[i]);

printf("\n");

}

return 0;

}

C语言,是一种通用的、过程式的

编程语言
,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。

C语言是由UNIX的研制者

丹尼斯·里奇
(Dennis Ritchie)于1970年 由 肯·汤普逊(
Ken Thompson
)所研制出的
B语言
的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。