VB数组元素过多,运行出现占用太多资源,使得程序无法运行。。如何解决

VB数组元素过多,运行出现占用太多资源,使得程序无法运行。。如何解决,第1张

循环内加 DoEvents可以避免程序无响应.

VB6做多线程比较麻烦,没有.net容易,不建议.

另外,用三层循环....这个不提倡,一般没必要的话最多带清腔2层

另外,用字符串连接是很慢的

另外,字符串比较也是很慢的

总之,一句话,你的算法要正磨不得.........

你可以尝试数组单循环.

使用ASCII 码判断

dim A (2) as byte

A(0)=48

A(1)=48

A(2)=48

'赋值,ASCII码 48就是0

现在数组就代表000

下面的做个过程

然后从A(2)加1,加到9之后设置为"A" ASCII码65,再累加,超过Z就将A(1)加1

至于比蠢衫较结果的,按位比较就行

随便说说,反正你已经结贴了.........

楼上的好像有点问题,是输出的问题(前面有太多的0了啊),

我用的是C语言:

#include<stdio.h>

#include<string.h>

#include<ctype.h>

#define MAX(a,b) ((a>b)?a:b)

#define N 60 //可以用来相乘的数的位数

main()

{

/*str1[N]为第一个乘数,str2[N]为第二个乘数,str3[2*N]为结果的保留字符数组,为最大相乘数的两橡漏历倍宽度*/

char str1[N],str2[N],str3[2*N]

/*******

num用来控制每位数字的相乘结果,

next=0保留进位的多少数,

i,j对字符数组进行遍历.

now原来字符与NUM中的个位相加的结果,result控制结果中的位数,

down=1用法看后面,

result_num用来表示结果的最后一位,用来加上'\0'结束符

******/

int num,next=0,i,j,now,result,down=1,result_num

/*读入梁搜两个乘数*/

printf("Please insert your num1:")

gets(str1)

printf("Please insert your num2:")

gets(str2)

/*把结果字搜盯符数组初始化为每个都是'0'字符*/

for(i=0i<N+1i++)

str3[i]='0'

str3[i]='\0'//结束符

result=2*MAX(strlen(str1),strlen(str2))//得到结果字符数组的长度

/*循环计算每一位的值*/

for(i=strlen(str1)-1i>=0i--)

{

if(strlen(str2)>1)

{

next=0//进位为0

result=2*MAX(strlen(str1),strlen(str2))-down

down++//当用str1的个位去乘str2时,从个位开始,当str1的十位去乘str2时,从十位开始算起,依此类推

}

for(j=strlen(str2)-1j>=0j--)

{

num=(str2[j]-'0')*(str1[i]-'0')

now=(str3[result]-'0')+num%10+next

next=num/10

str3[result]=(now%10)+'0'

if(now>9)

next+=now/10

result--

}

str3[result]=next+'0'

}

result_num=2*MAX(strlen(str1),strlen(str2))

str3[2*MAX(strlen(str1),strlen(str2))+1]='\0'//

/*去掉开始时有的0值*/

i=0

while(str3[i]=='0')

i++

/*输出结果*/

if(strlen(str2)==1)

while(i<=result_num)

printf("%c",str3[i++])

else

while(i<result_num)

printf("%c",str3[i++])

printf("\n")

}


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

原文地址: https://outofmemory.cn/yw/8213525.html

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

发表评论

登录后才能评论

评论列表(0条)

保存