在做练习的时候发现用DEV-C++和用MS的VC编译下面的程序运行结果不一样(在turbo C++里面编译提示static_cast没有定义)。源码如下:
#include<iostream.h>
#include<math.h>
#include <stdlib.h>
int main()
{
cout<<"please input a number"<<endl;
long int num,mun=0,n=5,temp1,temp2,temp3;
cin>>num;
for(int i=0;i<=5;i++)
{
temp1=static_cast<long int>(pow(10,(5-i)));
temp2=static_cast<long int>(pow(10,i));
temp3=static_cast<long int>(pow(10,(5-i)));
mun+=(num/temp1*temp2);
//cout<<mun<<endl;//下面给出的运行结果是在这一行没被注释的情况下
if(mun!=0) num=num%temp3;
else n--;//n是用来记录输入的是几位数
}
cout<<n<<endl;
cout<<mun<<endl;
system("pause");
return 0;
}
功能是输入一个《=5位的整数,输出这个数的位数,并反转输出
比如输入1234,则输出4 4321
算法:(以输入1234为例)
1234除以10000 得0 余1234
1234除以1000 得1 余234
234除以100 得2 余34
34除以10 得3 余4
4除以1 得4 余0
将
得
数0*10^0+1*10^1+2*10^2+3*10^3+4*10^4
得到得结果就是反转的4321
在VC6.0中编译运行结果是:
please input a number
1234
0
0
100
2100
32100
432100
3
432100
在dev-C++中编译运行结果是:
please input a number
1234
0
0
99
2099
32096
632096
3
632096
在论坛里新手提问区问了后得到回复:
cunsh的:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
cout<<"please input a number"<<endl;
long int num;
cin>>num;
char buf[10];
sprintf(buf,"%d",num);
int len = strlen(buf);
reverse(buf,buf+len); //翻转字符串
cout << len << endl
<< buf <<endl;
system("pause");
return 0;
}
guyanhun的:
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string buf;
cout<<"please input :"<<endl;
cin>>buf;
int len = buf.size();
reverse(buf.begin(),buf.end()); //翻转字符串
cout << len << endl
<< buf <<endl;
system("pause");
return 0;
}
// 这个对输入字符串 和 数字都有效。
xiaocai0001的:
#include<iostream.h>
#include <stdlib.h>
int main()
{
cout<<"please input a number"<<endl;
long int num,mun=0,n=0,temp1;
cin>>num;
while(num>0)
{
temp1 = num % 10; // 取num个位数
mun = mun*10 + temp1; //反转移位
num /= 10;
++n; // 位数加1
}
cout<<n<<endl;
cout<<mun<<endl;
system("pause");
return 0;
}
看了三位的答复,我感到真是羞愧,当时怎么就想出那么拙劣的算法呢?看来我这几天学的还只是那么一点点。前路漫漫。
但是用DEV-C++和用MS的VC编译运行结果不一样的问题还是不明白,还有在turbo C++里面编译怎么就会提示static_cast没有定义呢?