首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个基础题目,估计各位都会.该如何处理

2012-04-10 
问个基础题目,估计各位都会...题目:输入任意一个数求它是几位数,并逆输出。我将他是几位数求出来了,但由于

问个基础题目,估计各位都会...
题目:输入任意一个数求它是几位数,并逆输出。
我将他是几位数求出来了,但由于不知是几位数所以我不知道如何逆输出。各位帮忙,顺便把我的代码优化下,谢谢。
[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>中。你到网上搜下具体实现代码,到处都是,我就不再打上来啦。一般函数库里的东西效率应该不低吧。
[解决办法]

C/C++ code
#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;}
[解决办法]
C/C++ code
#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[] ,一个入栈再出栈就可以逆序输出了

热点排行