输入一个整数,判断该数是几位数,逆向输出该数

lfzyx 2009-12-03 08:41:14
这个题不用指针和数组怎么做?
...全文
2369 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2011-04-02
  • 打赏
  • 举报
回复
一年多前的帖子还没结啊....
影响我得分率了,囧
無_1024 2011-04-02
  • 打赏
  • 举报
回复
取模 加取余
liyan881226 2011-04-02
  • 打赏
  • 举报
回复
我给你个样板试哈,我就是这样编的
#include <iostream>
using namespace std;
int main()
{
int m,a,b,c,d,e;
cout<<"请输入不多于5位的正整数:";
cin>>m;
while(m>=100000||m<0)
{
cout<<"输入有误!请重新输入:";
cin>>m;
}
a=m/10000;
b=(m/1000)%10;
c=(m/100)%10;
d=(m/10)%10;
e=m%10;
if(m/10000>=1)
{
cout<<"****它为5位数"<<endl;
cout<<"它的每一位数为:"<<a<<b<<c<<d<<e<<endl;
cout<<"********逆序为:"<<e<<d<<c<<b<<a<<endl;
}
else if(m/1000>=1)
{
cout<<"****它为4位数"<<endl;
cout<<"它的每一位数为:"<<b<<c<<d<<e<<endl;
cout<<"********逆序为:"<<e<<d<<c<<b<<endl;
}
else if(m/100>=1)
{
cout<<"****它为3位数"<<endl;
cout<<"它的每一位数为:"<<c<<d<<e<<endl;
cout<<"********逆序为:"<<e<<d<<c<<endl;
}
else if(m/10>=1)
{
cout<<"****它为2位数"<<endl;
cout<<"它的每一位数为:"<<d<<e<<endl;
cout<<"********逆序为:"<<e<<d<<endl;
}
else
{
cout<<"****它为1位数"<<endl;
cout<<"它的每一位数为:"<<e<<endl;
cout<<"********逆序为:"<<e<<endl;
}
return 0;
}
shaotine_wu 2011-04-02
  • 打赏
  • 举报
回复
2009-12-03 08:41:14??????????????????
tmchgy 2011-03-23
  • 打赏
  • 举报
回复
我个人觉得这样也可以的,试过了的
#include<stdio.h>
void main()
{
int n,m,num=0;
printf("请输入一个正整数n:");
scanf("%d",&n);
m=n;
do
{
n=n/10;
num++;
} while(n!=0);
printf("正整数%d 的位数是%d\n ",m,num);
}

mubaohong 2009-12-03
  • 打赏
  • 举报
回复
摸10,不要忘记了0
sixbusy 2009-12-03
  • 打赏
  • 举报
回复
mod 10 移位 就可以
heis07w 2009-12-03
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i = 0;
while (n) {
cout<<n%10;
n /=10;
++i;
}
cout<<endl<<i<<"位"<<endl;
return 0;
}
赵4老师 2009-12-03
  • 打赏
  • 举报
回复
整数转换成字符串atoi
求串长度strlen
i从长度减一到0,输出str[i]
asdnana 2009-12-03
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
void main()
{int a;
static int n=1;
int b;
cout<<"请输入整数"<<endl;
cin>>a;
b=a;
while
(a/10)
{
a=a/10;
n++;
}//判断位数
cout<<n;
cout<<endl;
while
(b/10)
{
cout<<b%10;
b=b/10;
}
cout<<b;//倒序输出
cout<<endl;
system("pause");
}
wolflion 2009-12-03
  • 打赏
  • 举报
回复
用取余和取整的方法应该能实现,呵呵
macrojj 2009-12-03
  • 打赏
  • 举报
回复
递归
Awanghao 2009-12-03
  • 打赏
  • 举报
回复
有点难
gaodj9999 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhengjiankang 的回复:]
逆向输出,思路大致这个样子:
int m, n = 0;
cin >> m;
while(!m)
{
n = m % 10;
cout < < n;
m = m / 10;
}
自己再组织一下。
[/Quote]
while(!m) ----> while(m)

mstlq 2009-12-03
  • 打赏
  • 举报
回复
仅输入一个0的情况请楼主自行解决……

#include <iostream>
using namespace std;

void reprint(int num,int dep)
{
if(num==0) {
printf("\n这是一个%d位数\n",dep);
return;
}
printf("%d",num%10);
reprint(num/10,dep+1);
}

int main()
{
int num;
cin>>num;
reprint(num,0);
return 0;
}
zhengjiankang 2009-12-03
  • 打赏
  • 举报
回复
逆向输出,思路大致这个样子:
int m, n = 0;
cin >> m;
while(!m)
{
n = m % 10;
cout << n;
m = m / 10;
}
自己再组织一下。

65,189

社区成员

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

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