
正文
c语言数组太大出错,c语言数组太大出错怎么办
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言初学者,以下是我的代码,为什么输入超过原数组的数量,再输入正确的...
1、如果连这个也无法确定,那就先malloc一定大小的数组,输入时不断对已经输入的数据计数,如果超过了该数组的大小,就realloc更大的内存(翻倍即可),这也是C++中vector的实现机制。
2、如果是在tubor C中,int为有符号基本整型,最大值为32767,当你输入10及以上数据时应该是超过最大值的范围,可以讲变量类型都改为long int。
3、c语言静态数组的长度不能使用变量,你使用了变量T,所以不对。静态数组的长度就是编译时必须知道的,但是很明显的你这里必须运行等用户输入才能决定,所以不对。
相关问答
Q1: c语言怎么处理1000万以上大的数据?用数组常常出错
建议看你的数据在哪里存储的,分批读取。比如是文件的话,你可以设置数组大小1000,然后分批读取,直到文件结尾。其他的也类似,都可以判断数据是否读取完毕了。
比较容易学会的,就是做一个数组。比如int a[100] 100可以改成你这个数字的位数,然后用个循环就可以输出了。也可以把这个数字当做一个字符串来处理char a[]=1000...000000。
大数处理一般就两种方式,一种是整型的方式,保存绝对准确值 在不出现溢出时,运算结果完全准确。当范围超过最大整型范围时,就需要用数组了 另外一种就是浮点数的方式,通过保存底数和指数的方式,以一定精度表示近似值。
最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。
用高精度来存。具体来说就是存在一个数组里。
Q2: 用C语言编程,需要一个2000*2000的数组,但是运行时会自动停止,程序关闭...
1、常见的原因因为程序没有设置暂停,运行完了之后,就自动关闭。可以在程序最后加上getchar();或者 system(pause)。实现程序暂停的效果。pause是cmd中的一个命令,通过system函数调用执行。
2、程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。
3、栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。
4、你传递的参数没有按照函数定义的参数类型。比如insert(int score[],int n,int x,int i)但是使用时if(insert(score[N],i,x,*n)==1) 。
5、例如:10000! = ?、(2002^2000)%9999 = 9392002的平方根的小数点后第10000位是4。下面这个程序只是我用编写的“天文数字计算”里的一个计算。
Q3: 如何在C语言中解决因为数组长度开的过大而运行不了的原因
开那么多干嘛,栈空间没多少给你用的?用指针吧,用多少申请多少。另外看你是在什么情况下申请的数组空间。
实际遇到的话,说明程序逻辑有问题,或者是程序员因为特殊的目的故意这样写的。
通常用两个办法解决这个问题:声明一个全局数组。就是在所有函数之外声明,如int a[1000000];就可以了。在需要的函数中用malloc函数动态申请内存,如int *pt=(int *)malloc(sizeof(int)*1000000);就可以了。
c语言数组太大出错的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言数组太大出错怎么办、c语言数组太大出错的信息别忘了在本站进行查找喔。






