新微赢技术网
标题:
[求助]C++新手算法求助
[打印本页]
作者:
紫禁之颠
时间:
2009-11-3 04:13
标题:
[求助]C++新手算法求助
大家好,大一学过C,C++现在刚学到输入/输出,遇到一个题目无法解出,感谢各位赐教。
题目:编写程序提示用户输入小数,然后输出该小数四舍五入到小数点后第二位的数字。
要求:用基本的输入输出语句写出算法,不要涉及判断与循环。
作者:
宝贝
时间:
2009-11-3 04:13
#include <iostream>
#include <iomanip>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n;
char dot;
char c1,c2,c3;
cout<<"shuru:";
cin>>n;
cin>>dot;
cin>>c1;
cin>>c2;
cin>>c3;
c2+=((c3-'0')>5);
cout<<n<<dot<<c1<<c2<<endl;
return 0;
}
作者:
生活的成功者
时间:
2009-11-3 04:13
double d;
cin>>d;
cout<<setprecision(3);
cout<<showpoint<<d<<endl;
wfpb你那个是不是要进行判断啊,比如输入5.999你的结果是5.9:
作者:
火之雄狮
时间:
2009-11-3 04:13
#include <iostream>
using namespace std;
void main()
{
double db;
cout<<"输入:";
cin>>db;
db*=1000;
int num=(int)db;
int add=(num%10>5);
num/=10;
db=num;
db/=num;
db+=add*(0.01)
cout<<db<<endl;
}
小于号不是判断,只是一个运算符。这样用他不叫判断。
我只是从a>b得到一个数字,就好象a-b一样。所以不算判断吧?
作者:
加非猫
时间:
2009-11-3 04:13
#include<iostream>
using namespace std;
int main()
{
double d;
cout<<"shuru:";
cin>>d;
cout.setf(ios_base::fixed, ios_base::floatfield); // 设置定数格式输出
cout.precision(2); // 设置小数部分输出精度
cout<<d;
return 0;
}
作者:
劳资ぶ龍哥
时间:
2009-11-3 04:13
感谢 wfpb及大家的关注,经过思考,我也想出了一个算法,可以完全不用判断来实现四舍五入,完整代码如下:
#include <iostream>
using namespace std;
int main()
{
double inputDecimal,tempDecimal;
int minuend,subtranhend,result;
cout<<"Please enter a decimal. ";
cin>>inputDecimal;
cout<<endl;
tempDecimal = inputDecimal*200; //step1
minuend=static_cast<int>(tempDecimal)%10;
tempDecimal = inputDecimal*100;
subtranhend=static_cast<int>(tempDecimal)%10;
result=minuend-subtranhend; //step2
cout<<"Result is "<<result<<endl;
return 0;
}
作者:
︶ㄣ帅々︷`
时间:
2009-11-3 04:13
不过还有一个问题。
上面step1中原来是这样写的:
minuend=static_cast<int>(inputDecimal*200)%10;
subtranhend=static_cast<int>(inputDecimal*100)%10;
这样写的话就不用中间变量tempDecimal,但是计算出的minuend不正确,不知为何,谢谢大家指点迷经。
作者:
√金刚石猛男
时间:
2009-11-3 04:13
请输入 1.6888, result=-1.
作者:
30岁就改变
时间:
2009-11-3 04:13
谢谢corrupt指出错误,经过实验,我发现算法存在错误,对小数点后第二位数字是5到9的都不能正确得出结果。
不过错误也算是收获啦。我会继续尝试。
作者:
玩QQ名字千万
时间:
2009-11-3 04:13
我用类型转换方法写了一个,大家看看有什么问题
#include<iostream.h>
void main()
{
double a,b;
cout<<"输入一个小数:"<<endl;
cin>>a;
b=a+0.005;
b=b*100;
int c=(int)b;
double d;
d=(double)c/100;
cout<<d<<endl;
}
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2