注册 登录
编程论坛 C++教室

[求助]求更简单的办法!

a8451727 发布于 2007-07-03 23:07, 719 次点击

给出一个不多于5位数的正整数
1:求它是几位数
2:按逆序打印出各位数字,输入:321,输出:123。

我写了个,知道很多语句都重复了,希望大家教个简单点的

#include<iostream>
using namespace std;

int main()
{
int number,a,b,c,d,e,change;
cin>>number;
char ch;
char ch;
ch=(number>=10000)?'a':(number>=1000)?'b':(number>=100)?'c':(number>=10)?'d':e;
switch(ch)
{
case 'a': a=number/10000;
change=number%10000;
b=change/1000;
change=number%1000;
c=change/100;
change=number%100;
d=change/10;
e=number%10;
cout<<"五位数,它的逆序是:"<<e<<d<<c<<b<<a<<endl;
break;
case 'b': b=number/1000;
change=number%1000;
c=change/100;
change=number%100;
d=change/10;
e=number%10;
cout<<"四位数,它的逆序是:"<<e<<d<<c<<b<<endl;
break;
case 'c': c=number/100;
change=number%100;
d=change/10;
e=number%10;
cout<<"三位数,它的逆序是:"<<e<<d<<c<<endl;
break;
case 'd': d=number/10;
e=number%10;
cout<<"两位数,它的逆序是:"<<e<<d<<endl;
break;
default:cout<<"一位数,它的逆序是:"<<number<<endl;
}return 0;
}

10 回复
#2
aipb20072007-07-03 23:23
int main(){
int num,digit[5],i=0;
cin >> num;
while (num){
digit[i++] = num % 10;
num /= 10;
}
for (int j = 0;j < i;++j)
cout << digit[j];
return 0;
}

[此贴子已经被作者于2007-7-3 23:25:13编辑过]

#3
yuyunliuhen2007-07-04 09:47

顶楼上的

#4
yushui2007-07-04 11:44
厉害 先一个一个取出来 装进数组了   
#5
野比2007-07-04 13:20
可以直接打印... 不用存..
如果存可以用char digit[6], 每个元素只存1位数, int太浪费了..
digit[5]='\0', 然后 cout<<digit;就是了..
浪费了1个元素(1 byte)的空间, 节约了最少1x bytes的代码空间
#6
a84517272007-07-04 16:02

嘿嘿,太谢谢了。

#7
aipb20072007-07-04 16:53
野比想的真全面啊!
PF,学习了。
#8
Ailsa2007-07-04 17:23
很简洁,比较好!
#9
reamercer2007-07-04 17:25
佩服,两位版主果然强悍...
#10
沉墨2007-07-04 19:52
回复:(a8451727)[求助]求更简单的办法!
#include<iostream>
using name space std;

main()
{
int a,i=0,digit[5];
int b=1,count=0;
cout<<"please input a number:";
cin>>a;
while(b)
{
b=a/10;
a=b;
digit[i++]=a%10;
count++;
}
cout<<"您输入的是"<<count<<"位数";
for(j=0;j<i;j++)
cout<<a[j];
}
#11
duffebear2007-07-04 20:29
版主果然强悍
1