本篇文章给大家谈谈c语言用数组储存超大数,以及c语言如何定义超大数组对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言中太大的数字(几千万亿甚至更大)用什么数据类型,可以用什么形式来存放呢2、c语言怎么用数组存放非常非常大的数3、C语言数组存储超大整数4、C语言用数组存储大型数据的算法
C语言中太大的数字(几千万亿甚至更大)用什么数据类型,可以用什么形式来存放呢
用高精度来存。具体来说就是存在一个数组里。比如说123.用高精度来存的话就是
int a[10];
a[0]=1;a[1]=2;a[2]=3;
c语言怎么用数组存放非常非常大的数
int maxMath=int[10];
int[0]=0;
int[1]=0;
int[2]=0;
int[3]=0;
int[4]=0;
int[5]=0;
int[6]=0;
int[7]=0;
int[8]=0;
int[9]=1;
maxMath就代表1000000000=10亿。
如果我没有猜错的话,一定是你们的老师告诉你:C语言如果要计算大于Long的数字运算,就使用数组存放数字。
C语言数组存储超大整数
模拟整数除法即可:
#include stdio.h
int main()
{
char str[101];
int n, i, bcs;
scanf (“%d”, n);
getchar();
while (n–){
scanf(“%s”, str);
bcs = 0;
for (i = 0; str[i] != ‘\0’; ++i){
bcs = 10*bcs+str[i]-‘0’;
bcs %= 9;
}
if (bcs==0){
printf (“Y\n”);
}
else {
printf (“N\n”);
}
}
return 0;
}
C语言用数组存储大型数据的算法
楼主一定懂c++吧?c++标准库里面有一个模板类叫
bitset
专门用来做位操作的。
你的问题用这个可以高效的解决,建立一个足够大的空间,比如8000个位
bitset8000
然后就简单了,乘法函数把乘数转化成bitset32类型的对象(用乘数直接初始化代表乘数的bitset32对象)然后用位运算符把被乘数(那个bitset8000类型的对象)按位右移,(一个10进制数右移一次相当于乘10,一个2进制数右移一次相当于乘2;乘数中,二进制位如果知道它是从右数第n位,那么就把被乘数向右移动n-1位就完成了乘法,然后再做下一个二进制位的乘法,直到被乘数中所有的2进制位都被使用过为止)。做完了每32位2进制位转化成一个unsigned
long,存储在一个链表或者数组(怀疑空间不够,内存里很有可能没有这么大的连续空间)中,如果按顺序逐个输出就是问题的结果。
我觉得这个方法比2楼的高效。
如果你不想使用c++标准库……那也可以考虑用c中的位域,也支持位操作。不过远没有前面的方便,很多操作都要自己做,比如最基本的你必须有一个适合乘法操作的动态增长的位域组成的链表。而且即使这样还不一定高效。
……写完了才看的3楼,3楼就做得很好了。
c语言用数组储存超大数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言如何定义超大数组、c语言用数组储存超大数的信息别忘了在本站进行查找喔。