程序的非法指令怎么找呀
AAdai 2006-10-01 05:15:35 vc下没问题, wintc123 2有结果但是说有非法指令
高精度乘法
#include<stdio.h>
#include<conio.h>
#define MAX 20000
int strToint(char pA[], int a[]);
int print(int *pA);
int formal(int *pA);
int mul(int *a,int *b,int *c);
void main()
{
int a[MAX];
int b[MAX];
int c[MAX];
char pA[MAX];
char pB[MAX];
scanf("%s",pA);
scanf("%s",pB);
strToint(pA,a);
strToint(pB,b);
mul(a,b,c);
print(c);
}
int strToint(char pA[], int a[])
{
/*将输入数字字符串存入数组中.
输入"4512"
a[]={4,2,1,5,4}其中a[0]为长度.为倒序
*/
int i,j;
for(i = 0; pA[i] ; i++)
;
a[0] = i;
i--;
for(j=1;i>=0;i--)
a[j++] =pA[i] - '0';
return 1;
}
int print(int *pA)
{
int i;
if(NULL == pA)
return 0;
for(i = pA[0]; i >= 1;i--)
printf("%d",pA[i]);
return 1;
}
int formal(int *pA)
{
/*
将数组各位调整为小于9的数,大于9时进位?
*/
int i;
for(i = pA[0]+1; i < MAX;i++)
pA[i] = 0;
for(i = 1;i <= pA[0] || pA[i]>=10; i++)
{
pA[i+1] += pA[i] / 10;
pA[i] = pA[i] % 10;
}
if( pA[i] != 0)
pA[0] = i;
return pA[0];
}
int mul(int *a,int *b,int *c)
{
int i,j,t;
for(i = 0; i < MAX;i++)
c[i] = 0;
for(i = 1; i <= a[0];i++)
{
for(j = 1,t = i;j <= b[0];j++)
c[t++] += a[i] *b[j];
}
c[0] = a[0] + b[0] -1;
formal(c);
return c[0];
}