#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 1000int main()
{
int a[MAX]={0},b[MAX]={0},c[MAX]={0};
int i,j;
int la,lb,lc;
char sa[MAX],sb[MAX];
void multiply(int a[],int b[],int c[],int *la,int *lb,int *lc);
scanf("%s%s",sa,sb);
la=strlen(sa);
lb=strlen(sb);
for(i=1,j=la-1;i<=la;i++,j--)
a[i]=sa[j]-'0';
for(i=1,j=lb-1;i<=lb;i++,j--)
b[i]=sb[j]-'0';
multiply(a,b,c,&la,&lb,&lc);
for(i=lc;i>=1;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}void multiply(int a[],int b[],int c[],int *la,int *lb,int *lc)
{
int i,j;
for(i=1;i<=*la;i++)
for(j=1;j<=*lb;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
*lc=*la+*lb-(c[*la+*lb]==0);
return;
}
#include<string.h>
#include<stdlib.h>
#define MAX 1000int main()
{
int a[MAX]={0},b[MAX]={0},c[MAX]={0};
int i,j;
int la,lb,lc;
char sa[MAX],sb[MAX];
void multiply(int a[],int b[],int c[],int *la,int *lb,int *lc);
scanf("%s%s",sa,sb);
la=strlen(sa);
lb=strlen(sb);
for(i=1,j=la-1;i<=la;i++,j--)
a[i]=sa[j]-'0';
for(i=1,j=lb-1;i<=lb;i++,j--)
b[i]=sb[j]-'0';
multiply(a,b,c,&la,&lb,&lc);
for(i=lc;i>=1;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}void multiply(int a[],int b[],int c[],int *la,int *lb,int *lc)
{
int i,j;
for(i=1;i<=*la;i++)
for(j=1;j<=*lb;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
*lc=*la+*lb-(c[*la+*lb]==0);
return;
}
解决方案 »
- win7(64位)+delphi6+SQL2000連接數量庫出錯!
- 9月3日是法定的中国抗战胜利纪念日
- 如何在桌面添加快捷方式
- 在TDatasetProvider组件的data属性中是否也传递了表字段的类型、名称等信息,如何取得或设置这些值
- 关于导入EXCEL表的问题,释放出现了问题
- 能罗列出pagecontrol的某一tabsheet上所放的所有控件吗?
- 怎样在DELPHI中使用WIN32API的关机函数ExitWindowsEx()
- 请指教ADO连接的Errors.Item[0]非法的原因
- 我的socket怎么一次接收不完数据??
- 紧急求助-SQL!!!
- 帮忙看一下这个界面用哪些组件可以?
- delphi 入库出库订购提示 应用程序在当前操作中使用了错误类型的值
const MAX = 1000;function main():Integer;
var
a,b,c: array [0..MAX-1] of Integer=(0);
i,j:Integer;
la,lb,lc: Integer;
sa,sb: array[0..MAX-1] of char;
procedure multiply(a,b,c: array of integer;la,lb,lc:PInteger);
var
i,j: Integer;
begin
for i:=1 to la^ do
for j:=1 to lb^ do
begin
c[i+j-1] := c[i+j-1] + a[i]*b[j];
c[i+j] := c[i+j] + c[i+j-1] div 10;
c[i+j-1] := c[i+j-1] mod 10;
end;
if (c[la^+lb^]=0) then
lc^ :=la^+lb^-1
else
lc^ :=la^+lb^;
end;
begin
Result := 0;
readln(sa);
readln(sb);
la=strlen(sa);
lb=strlen(sb);
i:=1;
j:=la-1;
while i <=la do begin
a[i]:=ord(sa[j])-ord('0');
inc(i);
dec(j);
end;
i:=1;
j:=lb-1;
while i <=lb do begin
b[i]:=Ord(sb[j])-Ord('0');
Inc(i);
dec(j);
end;
multiply(a,b,c,@la,@lb,@lc);
for i:=lc downto 1 do
write(c[i]);
writeln;
end;
program Project1;{$APPTYPE CONSOLE}uses SysUtils;const
MAX = 100;type
TIntArr = array[0..MAX - 1] of Integer;
PIntArr = ^TIntArr;procedure multiply(a, b, c: PIntArr; var la, lb, lc: Integer);
var
I, J: Integer;
begin
for I := 1 to la do
for J := 1 to lb do
begin
Inc(c[i + j - 1], a[i] * b[j]);
Inc(c[i + j], c[i + j - 1] div 10);
c[i + j - 1] := c[i + j - 1] mod 10;
end;
lc := la + lb - Ord(c[la + lb] = 0);
end;var
a, b, c: TIntArr;
i, j: Integer;
la, lb, lc: Integer;
sa: array[0..MAX - 1] of Char;
sb: array[0..MAX - 1] of Char;
begin
Write('输入第一个数:');
Readln(Input, sa);
Write('输入第二个数:');
Readln(Input, sb);
la := StrLen(sa);
lb := StrLen(sb);
i := 1;
j := la - 1;
while i <= la do
begin
a[i] := Ord(sa[j]) - Ord('0');
Inc(i);
Dec(j);
end;
i := 1;
j := lb - 1;
while i <= lb do
begin
b[i] := Ord(sb[j]) - Ord('0');
Inc(i);
Dec(j);
end;
multiply(@a, @b, @c, la, lb, lc);
Write('这两个数积是:');
for i := lc downto 1 do
Write(c[i]);
Readln(Input);
end.