WEB 开发 开发语言 Java 技术 .Net 技术 数 据 库 硬件使用
图象媒体 Linux/Unix 移动平台 嵌入开发 Windows 专区 软件工程
Ajax 技术 | ASP | PHP | ASP.NET | C# | JSP | Access | Oracle | 网页设计 | Flash | 安全专题 | IIS | VC/MFC | Delphi | C/C++
 你的位置:首页 > 开发语言 > C/C++

关于高精度乘法的问题
[ 来源:ITWENKU 时间:2006-10-1 3:09:54 | 浏览:175人次 ]

1wintc编译111 10有真确结果,大的数就没结果,还说什么遇到非法指令
vc下没任何结果,可是可以编译连接成功
2我觉的我的formal不好如果是数组元素是3位以上就不行,应该怎么先判断位数在调整呀
#include<stdio.h>
#include<conio.h>
#define MAX 100
int formal(int *pA)
{
/*
将数组各位调整为小于9的数,大于9时进位?

*/
int i;

for(i = 1;i <= pA[0] || pA[i]>=10; i++)
{
if(i >= pA[0])
pA[i+1] = 0;
pA[i+1] += pA[i] / 10;
pA[i] = pA[i] % 10;
}
if( pA[i+1] != 0)
pA[0] = i+1;

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];
}

void main()
{
int a[4] = {3,1,1,1};
int b[3] = {2,1,1};
int c[5];
int i;

mul(a,b,c);
for(i=1; i <=4;i++)
printf("%4d",c[i]);

getch();
}


楼主,你的c数组好象太小的吧?
#define MAX 100 //这里你定义最大为100
然后在mul函数里:
for(I = 0; I < MAX;i++)
c[i] = 0;
可是,在main()函数里,你却写的是: int c[5];
明显会出现数组越界呀。
我改了后就好了。以下是改后代码:
#include<stdio.h>
#include<conio.h>
#define MAX 100
int formal(int *pA)
{
/*
将数组各位调整为小于9的数,大于9时进位?

*/
int I;

for(I = 1;I <= pA[0] || pA[i]>=10; i++)
{
if(I >= pA[0])
pA[i+1] = 0;
pA[i+1] += pA[i] / 10;
pA[i] = pA[i] % 10;
}
if( pA[i+1] != 0)
pA[0] = i+1;

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©;

return c[0];
}

int main()
{
int a[4] = {3,1,1,1};
int b[3] = {2,1,1};
int c[100];
int I;

mul(a,b,c);
for(i=1; I <=4;i++)
printf("%4d",c[i]);

getch();

return 0;
}


 相关文章
·为什么这个冒泡法排序程序编译的时候有4个错误?
·如何用VS2005编译已经写好的C程序?
·可以编译啊?怎么一运行就出错呢?
·关于虚函数的问题
·谁有 Deitel C++教程 光盘教师手册
·想学C语言,有不知道应该先学什么,那位前辈知道,请帮帮忙 ??

 最新更新
请问:看看程序是什么错误?
《核心编程》中的几个问题
关于 Visual C++ 在 AMD 平台上 无法使用的问题
怎样阻止程序访问栈中的内容?
类与结构体混合使用
二维数组动态添加数据
bioskey检测不到:Win键、右键菜单键、抓屏键、F11、F12键,请大家帮忙
为什么我的vb6。0(SP6)没有自动参数信息功能?
求多元函数极小值的算法?
字符串free()问题,请教
如何才能solaris studio11编程效率?
A* pA = (A*)new char[100];delete pA;对么?
 版权所有:中国IT问库
copyright © 2006 www.itwenku.com all rights reserved.