输入5位数 求位数 正反打印数字(为什么我最高位老是0)

来源:百度知道 编辑:UC知道 时间:2024/06/16 20:07:09
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
int a[5],b[5];
int i,n,t=0;
cin>>n;
b[0]=n;
for(i=0;i<5;i++)
{
a[i]=(b[i]/pow(10,4-i));

b[i+1]=(b[i]%(int)(pow(10,4-i)));

if(a[i]!=0)
{
t++;
}
}
cout<<t<<endl;
for(i=0;i<5;i++)
{
cout<<a[i];
}
for(i=4;i>-1;i--)
{
cout<<a[i];
}
return 0;
}
那么请问 如果我输入的是四位数 怎样去除第五位的零呢 谢谢啦

太繁琐吧,直接写成下面的
#include <iostream>
#include <string.h>
#include <cstdlib>
using namespace std;
int main()
{ char num[20];
cin>>num;
int j;
j=strlen(num);
cout<<num<<endl;
for(int i=j-1;i>=0;i--)
cout<<num[i];
system ("PAUSE");
return 0;
}

第13行有问题,如下:

10:for(i=0;i<5;i++)
11:{
12:a[i]=(b[i]/pow(10,4-i));
13:b[i+1]=(b[i]%(int)(pow(10,4-i)));
14:if(a[i]!=0)
15:{

i=0,1,2,3,4,当i=4时,第13行将出现b[4+1]=...(计算结果得0,即b[5]=0)这样的语句。
而b[5]已经数组越界,最大只能有b[4],又a[5],b[5]内存连续开辟,a[0],b[5]实质是指向同一内存单元的,于是a[0]被修改为0

修改后的代码:
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
int a[5],b[5];
int i,n,t=0;
cin>>n;
b[0]=n;
for(i=0;i<5;i++)
{
a[i]=(b[i]/pow(10,4-i));
if(i+1==5)con