圆柱体的表面积

问题描述:

        输入底面半径r和高h,输出圆柱体的表面积,保留3位小数,格式见样例。

样例输入:

        3.5 9

样例输出:

        Area = 274.889

 

分析:

        圆柱体的表面积由3部分组成:上底面积、下底面积和侧面积。由于上下底面积相等,完整的公式可以写成:表面积=底面积×2+侧面积。根据几何知识,底面积=πr2,侧面积=2πrh。

关键:

        这道题目的关键在于π的求法。如果是普通的程序,直接令π=3.14,或π=3.1415926......之类的;但关键是这是算法竞赛,所以如果你π=3.14和π=3.1415那结果肯定不一样,那正常情况一般不能通过。

        所以这就涉及到了反函数的内容。cos(π)=-1,所以acos(-1.0)=π。使用数学函数需要用到math.h。

代码:

#include
#include
using namespace std; 
int main()
{
	const double pi = acos(-1.0);//常量用const 
	double r, h, s1, s2, s;
	
	//1.输入 
	cin>>r>>h;
	
	//2.计算 
	s1 = pi*r*r;
	s2 = 2*pi*r*h;
	s = s1*2.0 + s2;
	
	//3.输出 
	printf("Area = %.3f\n", s);//保留三位小数用printf
	return 0;

}

 

说一下题外话。虽然我们是因为要输出后三位小数从而利用了printf;但有一个知识点,scanf会比cin更快,printf会比cout更快。当题目有明确要求:“本题的输入量(输出量)很大,请使用较快的输入(输出)方式”时,建议使用scanf和printf,或者关闭输入/输出流和stdio的同步,即调用ios::sync_with_stdio(false)。

 

 

你可能感兴趣的:(ACM,刘汝佳老师)