永发信息网

C++基础编程:输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值

答案:2  悬赏:30  手机版
解决时间 2021-03-21 23:26
  • 提问者网友:爱唱彩虹
  • 2021-03-21 01:29
求大神帮忙看看,输入三位数时,如果百位是1那么程序就是错的。。。比如输入123
#include
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 : "< cin>>n;

for(int i=0;i<20;i++)
{
a[i]=0;
}
for(int j=0;j<=n;j++)
{
if(n!=0)
{
p=n%10;
a[j]=p;
cout< n=n/10;
k++;
}
cout< }
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<<"它是"< cout<<"它各位数字之和为:"< cout<<"其逆值为:"<
return 0;
}
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-03-21 02:54
主要有两个问题:
1.    for(int k=0;k<=20;k++)
   {
       sum+=a[k];
   }中与前面重复定义了,可以将这里的k都改为l。
2. for(int j=0;j<=n;j++)这一句有问题,如果j跟n比的话,每次n都会是除后的商,如果刚好是1开头的数,那么最后一步时就不执行内部语句了。例如输入123,第三次循环判断时,n已经为1,但是j为2,故不执行for内部语句了。(你自己好好模拟下执行过程)
改进为:for(int j=0;j<=20;j++)
       PS:这种改法其实占用了很多无谓的命令,真正编程时尽量考虑减少执行时间的问题,不过还是可以解决你给的编程题的。
      打字不易,望采纳!!!
全部回答
  • 1楼网友:空山清雨
  • 2021-03-21 03:23

#include "iostream.h" main() {    int f1,f2,f3,i;  for(i=100;i<=999;++i)  {   f1=i/100;   f2=i/10%10;   f3=i%10;    if (f1*f1*f1+f2*f2*f2+f3*f3*f3==f1*100+f2*10+f3)   cout<<i<<" "<<endl; }

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯