以下代码参考网上资料(需要好好研究研究)。。。
#include<iostream>
using namespace std;
int main()
{
int m,n,i,j=1,k=0,a[20],x,y;
cout<<"请输入一个整数:";
cin>>m;//输入的数为m
y=m;//先将m赋值给y,将原始输入的数保护起来
for(i=1;;i++)//中间的判断条件可以不要,就变成了死循环
{
j*=10;
n=m/j;
a[i]=n;
k++;//用于记录有几位数
if(n<1)//循环退出条件
{
break;
}
}
int b=1,c,d=0;
for(i=1;i<=k;i++)
{
b*=10;
//cout<<b<<endl;
}
cout<<"你输入的数字各位分别是:";
for(i=k;i>0;i--)
{
b=b/10;
c=m/b;
m=m-c*b;
d+=c;
cout<<c<<" ";
}
cout<<endl;
cout<<"你输入的数字是"<<k<<"位数\n";
cout<<"各位上的数字之和为:"<<d<<endl;
x=0;
do{
x=x*10+y%10;
y=y/10;
}while(y!=0);
cout<<"逆序输出为:"<<x;
cout<<endl;
return 0;
}
我的做法:
#include<iostream>
using namespace std;
int main()
{
int n,p,q=1;
int k=0,temp=1;
int sum=0,sum1=0;
int a[20];
cout<<"please input an number : "<<endl;
cin>>n;
for(int i=0;i<20;i++)
{
a[i]=0;
}
for(int j=0;j<=20;j++)//这里错得刻骨铭心。。。把条件写成j<=n了
{
if(n!=0)
{
p=n%10;
a[j]=p;
cout<<p<<" "<<endl;
n=n/10;
k++;
}
}
for(int k=0;k<=20;k++)
{
sum+=a[k];
}
for(int m=1;m<=k;m++)
{
temp*=10;
a[k-m]*=(temp/10);
sum1+=a[k-m];
}
cout<<"它是"<<k<<"位数"<<endl;
cout<<"它各位数字之和为:"<<sum<<endl;
cout<<"其逆值为:"<<sum1;
return 0;
}