int main() { string a1,b1; int k1=0,k2=0; cin>>a1>>b1; int pp=max(a1.size(),b1.size()); int a[pp],b[pp],c[pp++]; for(int i=a1.size()-1;i>=0;i--) { //cout<<i<<" "<<a1[i]-'0'<<endl; a[k1]=a1[i]-'0'; k1++; cout<<a[k1]; } 为什么a[k1]里面的值错误
时间: 2024-03-12 10:47:11 浏览: 101
在循环体内,先执行了 k1++ 操作,再输出 a[k1] 的值,导致输出的是 a[k1] 的下一个元素,也就是未被赋值的元素,因此输出的值是错误的。正确的写法应该是先输出 a[k1] 的值,再执行 k1++ 操作,如下所示:
```
for(int i=a1.size()-1;i>=0;i--) {
a[k1]=a1[i]-'0';
cout<<a[k1];
k1++;
}
```
相关问题
有什么问题? #include <bits/stdc++.h> using namespace std; string a; string b; int k1,k2; int a1[2000],b1[2000],ab1[4001]; int main() { cin>>a>>b; for(int i=a.size()-1 ; i>=0 ; i--) { a1[i]=a[i]-'0'; k1++; } for(int i=b.size()-1 ; i>=0 ; i--) { b1[i]=b[i]-'0'; k2++; } for(int i=0 ; i<=k1 ;i++) { for(int j=0 ; j<=k2 ;j++) { ab1[i+j]+=a1[i]*b1[j]; } } for(int i=0 ; i<=k1+k2 ; i++) { ab1[i+1]+=ab1[i]/10; ab1[i]=ab1[i]%10; } int u=k1+k2+1; while(ab1[u]==0) { u--; } for(int r=u ; r>=0 ; r--) { cout<<ab1[r]; } }
这段代码是一个简单的大整数乘法实现。它输入两个字符串 a 和 b,然后将它们转换为整数数组 a1 和 b1。然后,它通过两个嵌套循环遍历将数组 a1 和 b1 中的元素相乘,并将结果存储在数组 ab1 中。接下来,它通过遍历数组 ab1,将每个元素除以 10 并取余数,将进位保存在下一个元素中。最后,它打印出数组 ab1 中的元素,得到最终的乘积。
请问有什么问题我可以帮助你解答吗?
阅读全文