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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值