问个基础题目,估计各位都会...
题目:输入任意一个数求它是几位数,并逆输出。
我将他是几位数求出来了,但由于不知是几位数所以我不知道如何逆输出。各位帮忙,顺便把我的代码优化下,谢谢。
[code=C/C++][/code]#include<iostream>
using namespace std;
int main ()//求出是几位数
{
int a;
int n = 1;
cout<<"请输入a ";
cin>>a;
while(a/10 > 0)
{
++n;
a=a/10;
}
cout<<"该数是"<<n<<"位数\n";
return 0;
}
[解决办法]
建议可以用字符串表示
建个CString numTmp;
然后用itoa转换下,长度不就有了,反正你只是要个逆序输出而已
[解决办法]
哈哈,这个问题我遇到过,我知道有两个关于这方面处理的函数,并且还是V6自带的库函数,一个是itoa,
一个是atoi。好这两个是数字和字符串相互转换的。这两个函数在库<stdlib.h>中。你到网上搜下具体实现代码,到处都是,我就不再打上来啦。一般函数库里的东西效率应该不低吧。
[解决办法]
#include<iostream>#include<math.h>using namespace std;int main (){ int a; int b = 0; cin>>a; while (a/10 > 0) { b = 10*b + a%10; a=a/10; } b = 10*b + a%10; cout<<b<<endl; getchar(); return 0;}
[解决办法]
#include<iostream>using namespace std;int main (){ int a; int n = 0,s; int inverse = 0; cout<<"请输入a "; cin>>a; while(a != 0)//mark; { ++n; s = a % 10; inverse = inverse * 10 + s;//mark a=a/10; } cout<<"该数是"<<n<<"位数\n"; cout<<"逆转的数是"<<inverse<<endl; return 0;}
[解决办法]
#include<iostream>
using namespace std;
int main ()
{
int a;
int n = 0,s;
int inverse = 0;
cout<<"请输入a ";
cin>>a;
while(a != 0)//mark;
{
++n;
s = a % 10;
inverse = inverse * 10 + s;//mark
a=a/10;
}
cout<<"该数是"<<n<<"位数\n";
cout<<"逆转的数是"<<inverse<<endl;
return 0;
}
就是这个。
算法也是最好的。我在一本书上看见过,这个逆序输出的代码是最好的。
[解决办法]
输入的a可以改成char[] ,一个入栈再出栈就可以逆序输出了