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

求解答,非零整数的倒数

大笑的蚂蚁 发布于 2012-06-21 17:35, 727 次点击
编写一个程序,计算用户输入非0整数的倒数,该程序应把计算的结果存储在double类型的变量中,再输出它

#include<iostream>
using std::cout;
using std::endl;
using std::cin;

int main() {
   
    int input=0;
   
    cout<<"enter interger number:"<<endl;
    cin >>input;
   
    int output=1/input;
   
    double reciprocal =static_cast<int>(output);
   
    cout<<"the number you get reciprocal is :"<<endl;
    cout<<reciprocal<<endl;
   
    return 0;
   
}

以上这样是正确的吗???????????????
6 回复
#2
liudw22012-06-21 23:07
错了,input不要初始化, 还有output的数据类型要注意, int的倒数是0,你先执行 int output = 1/input之后的话,output已经为0了
#3
kangtachan2012-06-22 01:49
2楼的哥哥,input不初始化vc里面会变成int类型的最大值;input初不初始化和结果没关系,因为c无论怎样都是破坏性写入的;

安全类型转换static_cast<int>(output);这里好像不对哦~你这样写的意思是output类型安全转换成为int型,然后double XX=int XXX;

我猜楼主的意思应该是想将int安全转换成double然后再赋值给double变量
#4
大笑的蚂蚁2012-06-22 02:39
回复 3楼 kangtachan
我猜楼主的意思应该是想将int安全转换成double然后再赋值给double变量

正是这个意思,我应当这样写   : double reciprocal=static_cast<double>(input) 这样对吗??

另外想问一下,我写的这个程序,正确吗???

还想问一句,你用什么样的c++编译软件
#5
hellovfp2012-06-22 10:41
#include<iostream>
using std::cout;
using std::endl;
using std::cin;

int main() {

    int input=0;

    cout<<"enter interger number:"<<endl;
    cin >>input;

    if(input > 0)
    {
        double reciprocal = 1 / static_cast<double>(input);

        cout<<"the number you get reciprocal is :"<<endl;
        cout<<reciprocal<<endl;
    }
    else cout << "error: please Non negative number!" << endl;

    return 0;

}
#6
大笑的蚂蚁2012-06-22 15:37
回复 5楼 hellovfp
小问一下,你用什么样的编译软件呢
#7
hellovfp2012-06-22 15:42
回复 6楼 大笑的蚂蚁
MinGW(gcc)编译器
1