25.(需要好好研究研究)输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值
#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; }