用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数相关的知识,希望对你有一定的参考价值。

用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数,输出不限。32位长整型乘法,输入限制为32位bit长度整数,输出不限。64位长整型除法,输入限制为64位bit长度整数,输出不限

参考技术A #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;
本回答被提问者和网友采纳
参考技术B 高精度计算,请搜索“百度知道”,早已解决。

C语言里怎样理解长整型 短整型 和无符号型变量和常量?

长整型 短整型 和无符号型跟基本整形 我就知道所占字节不同
但是长整型 短整型怎样理解?它们跟基本整形有什么区别?
还有无符号怎么理解 怎么表示 用什么进制 ?
我真的不大懂
有哪位好心的愿意帮帮我 我qq277620691谢谢

  1、变量:是一块内存区域,一块内存包含两个属性,一个是地址,一个是存储的内容,即值。所以在c语言中每个变量都有一个地址,也有自己存储的内容。
  2、常量:指的是不会被修改的量,这个概念实际上来自汇编语言中的立即数概念,它是存储于指令代码中的。
  3、整型:用于描述整数的数据类型。
  4、长整型、 短整型 、无符号整型,主要是通过整数的符号以及所占内存字节的大小来区分的,做为整数可以分为正数和负数,因此C语言中有了无符号数和有符号数的区别,无符号整型,最小值是0,最大值为2^n-1,n是在内存中类型所占的字节数。 一般来说,int类型占4个字节,short短整型占2个字节,long长整型占4或者8个字节。具体所占字节的大小可以通过sizeof运算符来获取。
参考技术A

进制一般来说都是10进制,下面以10进制为例。

不同整型可以表示的范围不同,可以根据实际需要选择不同的整形。

各种整形的范围请参见下表。

至于原理就涉及到二进制等知识了,初学C语言没必要深究,一般整形只用int类型就足够了。

如下网址可以搜到“C语言数据类型”相关课件。

http://www.baidu.com/s?wd=C%E8%AF%AD%E8%A8%80+%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B+filetype%3Appt&tn=site888_1_pg&cl=3&ie=utf-8

参考技术B 但是长整型 短整型怎样理解?它们跟基本整形有什么区别?
short int <= int <= long int
定义这三种是为了节约存储空间
在保证数据不溢出的情况下选择需要空间最短的

unsign int 是在都为正数的情况下节约存储空间而定义的

都是2进制储存在内存中本回答被提问者采纳
参考技术C 因为字节数不同,所以能表示的数的范围就不一样了啊.
无符号就是不把最高位看成符号位.比如11111111,有符号数是把最高位的1看成符号位,表示负数,11111111就表示-1.无符号数则把最高位的1也看成是数的一部分,1111111就表示65535.
参考技术D 无符号和有符号的区别就是存数据时有符号的数据在存储单元留出一位保留符号。而无符号的则不用留出一位来保留符号,所以无符号的数据存贮的最大位数比有符号的大一位所以其相当于左移一位,也就是通常看到的无符号的数据的取值范围是有符号的数的2倍。

以上是关于用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thread 浮点打印和64位长整型打印

c语言中长整型和整型的范围

long long 在c语言中是啥类型

C语言里怎样理解长整型 短整型 和无符号型变量和常量?

整形_长整型的使用范围和规则

C语言程序设计中如何输出一个64位的整数