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;
}

 

posted on 2014-08-06 16:44  Ji_xiaowu  阅读(399)  评论(0编辑  收藏  举报

导航