测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
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 位。