帮我看看这道C++题目的错在哪里?

#include<iostream>#include<string>usingnamespacestd;#defineMax100inta[Max],b[Max],c[M... #include<iostream>
#include<string>
using namespace std;
#define Max 100
int a[Max],b[Max],c[Max];
int main()
{
int a1,bl,i,j;
string s1,s2;
cout<<"请输入两个整数:";
cin>>s1>>s2;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a1=s1.length();bl=s2.length();
for(i=a1-1,j=0;i>=0;i--,j++)
a[j]=s1[i]-48;
for(i=bl-1,j=0;i>=0;i--,j++)
b[j]=s2[i]-48;
cout<<" a=";
for(i=Max-1;a[i]==0;i--);
for(;i>=0;i--)
cout<<a[i];
cout<<"\n b=";
for(i=Max-1;b[i]==0;i--);
for(;i>=0;i--)
cout<<b[i];
cout<<endl;
int n,t;
for(i=0;i<bl;i++)
{
n=0;
for(j=0;j<a1;j++)
{c[i+j]=c[i+j]+(a[j])*(b[i])+n;
n=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
c[i+j+1]=n;
}
cout<<"a*b=";
for(i=Max-1;c[i]==0;i--);
for(;i>=0;i--)cout<<c[i];
cout<<endl;
system("PAUSE");
return 0;
}
你点图片
展开
 我来答
liuxinling_06
2012-07-17 · TA获得超过1289个赞
知道小有建树答主
回答量:345
采纳率:100%
帮助的人:426万
展开全部
for(i=0;i<bl;i++)
{
n=0;
for(j=0;j<a1;j++)
{c[i+j]=c[i+j]+(a[j])*(b[i])+n;
n=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
c[i+j]=n; //这里原来是c[i+j+1]=n
}
276506968
2012-07-17 · TA获得超过777个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:81.3万
展开全部

看了半个钟,楼上都解答出来了。

问循环for(i=0;i<5;i++)最后i的值为多少?答案是5,因为最后要加一次才不符合条件退出循环呀。所以c[i+j+1]=n处为c[i+j]=n。

 

为了给同道解释下程序,我讲一下我对程序的理解吧。

其实这题目有点类似于大整数的运算,核心内容就是字符串的乘法运算。比如111*11,串s1为111,串s2为11,其实可以理解为

i+j很巧妙地精确控制了对应的数组元素。

 

program为您服务!希望能帮到大家。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冥冥红颜
2012-07-17
知道答主
回答量:30
采纳率:0%
帮助的人:14.7万
展开全部
就是做一个相乘的运算。 cin的时候为什么要用字符串呢, 直接int类型就好了啊。如果是想判断合法性的话,你这也太复杂了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MarcusV
2012-12-31 · 知之为知之,不知为不知。
MarcusV
采纳数:21 获赞数:313

向TA提问 私信TA
展开全部
很给力的大数运算程序,想楼上学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syai211
2012-07-17
知道答主
回答量:6
采纳率:0%
帮助的人:3.5万
展开全部
你这是要做大数相乘吗?
追问
是的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式