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

lfzyx 2009-12-03 08:41:14
这个题不用指针和数组怎么做?
...全文
2321 15 打赏 收藏 转发到动态 举报
写回复
用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;
}
自己再组织一下。
 (编程题)花朵数 一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。 当N=4时,1634满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。 当N=5时,92727满足条件。 实际上,对N的每个取值,可能有多个数字满足条件。 程序的任务是:求N=21时,所有满足条件的花朵数。注意:这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。因为这个数字很大,请注意解法时间上的可行性。要求程序在3分钟内运行完毕。 【程序运行参考结果】 128468643043731391252 449177399146038697307  (编程题)信用卡号验证 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是:5432123456788881 则奇数、偶数位(用红色标出)分布:5432123456788881 奇数位和=35 偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后35+35=70 可以被10整除,认定校验通过。 请编写一个程序,从标准输入获得卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。 比如,用户输入:356827027232780 程序输出:成功 【程序测试参考用例】 356406010024817 成功 358973017867744 成功 356827027232781 失败 306406010024817 失败 358973017867754 失败  (c/c++组代码填空)下列代码把一个串p复制到新的位置q。请填写缺少的语句; char* p = "abcde"; char* q = (char*)malloc(strlen(p)+1); for(int i=0;_____________; i++) q[i] = p[i]; q[i] = 0; 【参考答案】 P[i] 或 *(p+i) 或 p[i] != '\0' 或 ... (答案不唯一,以选手提供代码带入专用验证程序测试为依据,验证程序比题面中提供的程序片段更严谨,更完善)  (Java组代码填空)有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。 Vector a = new Vector(); for(int i=1; i<=10; i++) { a.add("第" + i + "个孩子"); } for(;;) { if(a.size()==1) break; for(int k=0; k<2; k++) ________________; a.remove(0); } System.out.println(a); 【参考答案】 a.add(a.remove(0)) (答案不唯一,以选手提供代码带入专用验证程序测试为依据,验证程序比题面中提供的程序片段更严谨,更完善)  (结果填空题) 有趣的平方数 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?还有一个!该数是:_____________ 【参考答案】 376

64,637

社区成员

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

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