B27
案例:圆周长面积、八五折、字符菱形
引入
章前总览 先复习圆周率 π,再做三道题:圆的周长与面积(浮点 + 保留小数)、三件八五折、用输入字符画菱形。
三道案例:
- 圆:r=d/2.0,fixed + setprecision
- 折扣:a*3*0.85,保留两位
- 菱形:char 读入 + 空格对齐
1 准备:圆周率 π
任意圆周长 ÷ 直径 ≈ 3.1415926…,这个比值叫圆周率,记作 π。祖冲之把 π 精确到小数点后 7 位。一级题目常用 3.1415926。
常用公式
- 直径 d,半径 r = d/2,周长 c = π·d,面积 s = π·r·r。
- 半径务必用浮点除法:
d/2.0,不要d/2。
2 案例1:求圆的周长和面积
输入正整数直径 d(d≤100),输出周长和面积,中间一个空格,都保留 4 位小数。
参考代码
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int d;
double c, s, pi = 3.1415926;
cin >> d;
double r = d / 2.0; // 不能写 d/2
c = pi * d;
s = pi * r * r;
cout << fixed << setprecision(4) << c << " " << s << endl;
return 0;
}
- 样例:输入 5 →
15.7080 19.6350。 - 格式控制要包含
<iomanip>(万能头则可不写)。
知识点:fixed 与 setprecision
fixed:固定小数点位置(按“小数位数”输出)。setprecision(n):配合fixed时,n 表示小数点后位数。- 例:
cout << fixed << setprecision(4);再输出浮点数。
3 案例2:3 件八五折
输入单价 a(浮点数),买 3 件打八五折,输出应付金额,保留 2 位小数。
参考代码
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double a;
cin >> a;
double m = a * 3 * 0.85;
cout << fixed << setprecision(2) << m << endl;
return 0;
}
- 八五折 = 乘以 0.85;样例 72.5 → 184.88。
4 案例3:输出字符菱形
输入一个字符,用它构造对角线长为 5 的菱形(与第1章固定字符菱形类似,字符来自输入)。
参考代码
#include <iostream>
using namespace std;
int main() {
char c;
cin >> c;
cout << " " << c << endl;
cout << " " << c << c << c << endl;
cout << c << c << c << c << c << endl;
cout << " " << c << c << c << endl;
cout << " " << c << endl;
return 0;
}
- 用空格字符串对齐:第 1、5 行前 2 个空格;第 2、4 行前 1 个空格。
小结
浮点输出三件套:
#include <iomanip>
cout << fixed << setprecision(位数);
r = d / 2.0; // 半径要用浮点除法
✓
里程碑达成:
下一节练习:阴影面积、小写转大写、字母表后移 4 位。