计算长方形的周长和面积
1 条题解
-
0
P4630 计算长方形的周长和面积(入门)
解题思路
这道题考察结构体的基本使用和浮点数的输出格式,分四步讲。
第一步,回忆周长和面积的公式。 周长等于长加宽的和再乘 2,也就是围成长方形四周的总长度;面积等于长乘宽,也就是长方形所占的平面大小。打个比方:长方形像一块菜地,想围一圈篱笆,篱笆的总长就是周长;想知道菜地能种多少菜,就要算面积。
第二步,用结构体把四个量装进一个"盒子"。 题目要求必须定义一个长方形结构体 rect,把长、宽、周长、面积四个量都放进去。为什么用结构体?如果四个量分散成四个普通变量,程序显得零散;把它们装进一个结构体,就像把四样东西放进同一个盒子,之后用 r.length、r.width 这样的方式取出即可。因为长和宽是小数,四个成员都用 double 类型。
第三步,读入并计算。 先用 cin 读入长和宽,然后计算周长 perimeter = 2 × (length + width),计算面积 area = length × width,最后输出。
第四步,控制输出格式。 题目要求保留两位小数。这里用 里的 printf("%.2f", x),%.2f 表示保留两位小数输出,比 iomanip 更简洁。比如长 6.3、宽 4.8:周长 2×(6.3+4.8)=22.2,输出时自动补成 22.20;面积 6.3×4.8=30.24,输出 30.24。题目保证 0<w<l≤1000,长宽一定是正的,不需要额外判断。
**回顾总结。**这道题的三个要点:一是记住周长和面积公式,二是把四个量装进结构体一起管理,三是用 printf("%.2f") 控制两位小数。用结构体之后,程序里不再出现散落的变量,所有计算都围绕 r 这个盒子展开,读代码的人一眼就能看出每个量属于哪个长方形。只要公式不错、格式串写对,答案就能精确输出。
参考代码
// 程序用途:输入长方形的长和宽,用结构体保存并输出周长和面积(保留两位小数) #include <iostream> #include <cstdio> using namespace std; // 长方形结构体:保存长、宽、周长和面积 struct rect { double length; // 长 double width; // 宽 double perimeter; // 周长 double area; // 面积 }; int main() { struct rect r; cin >> r.length >> r.width; // 读入长和宽 r.perimeter = 2 * (r.length + r.width); // 周长 = 2*(长+宽) r.area = r.length * r.width; // 面积 = 长*宽 printf("%.2f %.2f\n", r.perimeter, r.area); // 用 printf 保留两位小数输出 return 0; }复杂度分析
时间上,程序只做了一次输入和两次简单的乘加运算,不管数据多大,运算次数都是固定的,所以时间复杂度是 O(1)。空间上,只使用了一个结构体变量,占用内存也是固定的,所以空间复杂度是 O(1)。本题数据范围只有 1000,这样 O(1) 的算法完全可以轻松应对。
- 1