好的,从今天开始,我将学习刘汝佳老师的《算法竞赛入门经典》,以便冲刺今年九月份的 CSP-J。
题目
输入底面半径 r 和高 h,输出圆柱体的表面积,保留3位小数。
样例输入:
3.5 9
样例输出:
Area = 274.889
解答
由于题目过于简单,上过小学的人都会逻辑,所以没有分析。
初版解答
#include <iostream>
using namespace std;
float area(r,h)
{
int s;
s = 2 * pi * r ** 2 + 2 * pi * r * h;
return s;
}
int main()
{
int r,h,a;
cin >> r >> h;
a = area(r,h);
cout << "Area = " << a;
return 0;
}
大意了,这个程序存在以下问题:
参数类型缺失
float area(r,h)
未声明参数类型。未定义常量 π
C++ 标准库中没有预定义的
pi
。错误的幂运算符
C++ 不支持
**
运算符。变量类型不匹配
公式优化
这个故事告诉我们:
不要以为语言入门之后就能轻易地写出算法程序。 ——《算法竞赛入门经典》前言
这也是我以前存在的问题。
修改解答
#include <iostream>
using namespace std;
float area(float r,float h)
{
float s,pi;
pi = 3.1415926;
s = 2 * pi * r * r + 2 * pi * r * h;
return s;
}
int main()
{
float r,h,a;
cin >> r >> h;
a = area(r,h);
cout << "Area = " << a;
return 0;
}
完美通过
收工!
祝各位读者早日成为神牛牪犇!