c++ 高精度乘单精度
c++高精度乘单精度#include <bits/stdc++.h>using namespace std;
string st;
int x,i,len,m;
int a;
int main(){
cin>>st>>x;
len=st.size();
for(i=0;i<len;i++){
a=st-'0';
}
for( i=0;i<len;i++){
a*=x;
}
for( i=0;i<len;i++){
a += a/10;
a%=10;
}
while(a){
a += a/10;
a%=10;
len++;
}
m=a;
while(m){
a=m%10;
m=m/10;
}
// for(i=0;i<len;i++){
// cout<<a;
// }
for(i=len-1;i>=0;i--){
cout<<a;
}
return 0;
}
当输入20和3时,
输出了06.
求解决办法 看了半天没看懂你想干什么...
你的程序到底要实现什么功能呢?
就你代码我说一下吧
cin >> st >> x;
len = st.size();
for(i = 0; i < len; i++)
{
a = st - '0';
}
for( i = 0; i < len; i++)
{
a *= x;
}
for( i = 0; i < len; i++)
{ //这里开始我就没看懂了 难道你是想进位?但是进位应该是低位进高位,没听说是高位进低位的啊
a += a / 10;
a %= 10;
}
while(a)//这里就更奇怪了,你有值的下标只到 len - 1,难道是因为进位?进位就不会是往低位
{
a += a / 10;
a %= 10;
len++;
}
//这我就又没看懂了,上面进位已经执行完了,为什么还要往后
//这是得亏你上面进位没完成要是我输入100位数,你这直接就崩溃了都
m = a;
while(m)
{
a = m % 10;
m = m / 10;
}
// for(i=0;i<len;i++){
// cout<<a;
// }
//你这又从后向前打印,那可不就是输出06么
for(i = len - 1; i >= 0; i--)
{
cout << a;
}
页:
[1]