学C++遇到的第一个问题

在做练习的时候发现用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没有定义呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值