关于倒序输出数值

猪皮冻 2012-11-10 09:36:28
今天在写一道编程题,要求将输入的数值倒序输出,并计算位数和各位的和。我写的程序如下
#include<iostream.h>

void main()
{int a,sum=0,num=0;
cin>>a;
int b[5];
int base=10000,count=0;
for(int i=5;i>0;i--)
{
if(a/base)
{
num++;

b[i-1]=(a/base)%10;
sum=sum+b[i-1];
base=base/10;

}
else
{base=base/10;

continue;}


}


for(int j=0;j<5;j++)
{
cout<<b[j]<<endl;;
}


cout<<"输入数的位数为"<<num<<endl;
cout<<"各位的和为"<<sum<<endl;
}

这个程序只能计算5位以内的,而且输出一定是5个数,若输入不是5个的,输出数组的后几位就会乱码,如下:

高手们提醒一下我错在哪了,或者用什么方法能更好的实现这个功能,谢啦!!
...全文
208 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kuovane 2012-11-10
  • 打赏
  • 举报
回复
下面程序对输入>=0且在范围内的整数有效。对负数及任意长度的数的情况,楼主可思考下
#include<iostream>
using namespace std;

void main()
{
	int a,sum=0,num=0,r;
	cin>>a; 

	do
	{
		r = a%10;
		a = a/10;
		sum += r;
		cout<<r;
		num++;

	}while(a);

	cout<<endl;
	cout<<"输入数的位数为"<<num<<endl;
	cout<<"各位的和为"<<sum<<endl;
}
newtee 2012-11-10
  • 打赏
  • 举报
回复
int i=0,j,sum=0,num; while(a!=0) { b[i++]=a%10; a=a/10; } for(j=0;j<i;j++) sum+=b[j]; for(j=0;j<i;j++) num+=b[i-j-1]*pow(j,10);
ri_aje 2012-11-10
  • 打赏
  • 举报
回复
算之前先数一下位数呗,然后 new 一个同样长度的数组。
newtee 2012-11-10
  • 打赏
  • 举报
回复
引用 15 楼 mghhz816210 的回复:
引用 11 楼 zhuankeshumo 的回复:C/C++ code123456789101112131415161718#include<stdio.h>#include<math.h>main(){int a=1243;int b[10];int i=0,j,sum=0,num=0;while(a!=0){ b[i++]=a%10; a=a/10;}for(……
要求将输入的数值倒序输出,并计算位数和各位的和?
猪皮冻 2012-11-10
  • 打赏
  • 举报
回复
引用 11 楼 zhuankeshumo 的回复:
C/C++ code123456789101112131415161718#include<stdio.h>#include<math.h>main(){int a=1243;int b[10];int i=0,j,sum=0,num=0;while(a!=0){ b[i++]=a%10; a=a/10;}for(j=0;j<i;j++) sum+=b[j];f……
其实你没明白我的意思,我是想手动输入,然后倒序,3楼写的已经很好了,同样谢谢。。。
漫步者、 2012-11-10
  • 打赏
  • 举报
回复
引用 9 楼 mghhz816210 的回复:
引用 7 楼 ganpengjin1 的回复:引用 4 楼 mghhz816210 的回复:引用 1 楼 ri_aje 的回复:算之前先数一下位数呗,然后 new 一个同样长度的数组。 那样不是只能输入固定长度的数,那要长度不固定呢 不固定的用字符串处理了,把你的数字字符转换成数字就可以了 能具体点吗?用的是什么函数?
你说的是不定长的数据,那你就这样,用string来存储,然后取出数据,进行转换为int数据类型就可以了
漫步者、 2012-11-10
  • 打赏
  • 举报
回复
void main()
{int a,sum=0,num=0;
cin>>a;
int b[5];
int base=10000,count=0;

for(int i=4;i>=0;i--)
{
	if(a/base)
	{
		num++;

		b[i]=(a/base)%10;
		sum=sum+b[i];
		base=base/10;
	}
	else 
	{
		b[i]=0;//修改处
		base=base/10;	
	}
}


for(int j=0;j<5;j++)
{
	cout<<b[j]<<endl;;
}


cout<<"输入数的位数为"<<num<<endl;
cout<<"各位的和为"<<sum<<endl;
}
newtee 2012-11-10
  • 打赏
  • 举报
回复
pow(10,i) => i的10次方
newtee 2012-11-10
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
main()
{
int a=1243;
int b[10];
int i=0,j,sum=0,num=0;
while(a!=0)
{
   b[i++]=a%10;
   a=a/10;
}
for(j=0;j<i;j++)
  sum+=b[j];
for(j=0;j<i;j++)
  num+=b[i-j-1]*pow(10,j);
printf("%d,%d",sum,num);
}
newtee 2012-11-10
  • 打赏
  • 举报
回复
貌似有点错误 我改下
猪皮冻 2012-11-10
  • 打赏
  • 举报
回复
引用 7 楼 ganpengjin1 的回复:
引用 4 楼 mghhz816210 的回复:引用 1 楼 ri_aje 的回复:算之前先数一下位数呗,然后 new 一个同样长度的数组。 那样不是只能输入固定长度的数,那要长度不固定呢 不固定的用字符串处理了,把你的数字字符转换成数字就可以了
能具体点吗?用的是什么函数?
猪皮冻 2012-11-10
  • 打赏
  • 举报
回复
引用 6 楼 zhuankeshumo 的回复:
加上#include<math.h> pow(i,10) => i的10次方
前面的b[i]数组是怎么定义的
漫步者、 2012-11-10
  • 打赏
  • 举报
回复
引用 4 楼 mghhz816210 的回复:
引用 1 楼 ri_aje 的回复:算之前先数一下位数呗,然后 new 一个同样长度的数组。 那样不是只能输入固定长度的数,那要长度不固定呢
不固定的用字符串处理了,把你的数字字符转换成数字就可以了
newtee 2012-11-10
  • 打赏
  • 举报
回复
加上#include<math.h> pow(i,10) => i的10次方
newtee 2012-11-10
  • 打赏
  • 举报
回复
看下2楼
猪皮冻 2012-11-10
  • 打赏
  • 举报
回复
引用 1 楼 ri_aje 的回复:
算之前先数一下位数呗,然后 new 一个同样长度的数组。
那样不是只能输入固定长度的数,那要长度不固定呢

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧