测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B28

练习:阴影面积、大小写、后移字母

引入

章前总览 三道练习:正方形减去内切圆的阴影;小写变大写(ASCII 差 32);大写字母后移 4 位要用强制转换。

三道练习:

  • 阴影:a*a - π*a*a/4
  • 大小写:c1 = c - 32
  • 后移:char(c+4)

1 练习1:求阴影部分的面积

边长为 a 的正方形内嵌直径为 a 的圆,求正方形减去圆的阴影面积。π 用 3.1415926,保留 2 位小数。

</> 参考代码

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int a;
    cin >> a;
    double pi = 3.1415926;
    double ans = a * a - pi * a * a / 4;
    cout << fixed << setprecision(2) << ans << endl;
    return 0;
}
  • 圆面积 = π·(a/2)² = π·a·a/4。
  • 样例:10 → 21.46。

2 练习2:小写字母变大写

输入一个小写字母,输出对应大写。同一字母的大写 ASCII 比小写小 32。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    char c;
    cin >> c;
    char c1 = c - 32;
    cout << c1 << endl;
    return 0;
}
  • 样例:y → Y。
  • 若写 cout << c-32;,会输出整数(自动转成 int)。要字符请存回 char,或用 char(c-32)

3 练习3:输出后面第 4 个字母

输入大写字母 c(保证不是 WXYZ),输出字母表中它后面第 4 个字母。如 A → E。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    char c;
    cin >> c;
    cout << char(c + 4) << endl;
    return 0;
}
  • 答案就是 c+4,但直接 cout<<c+4 会打印整数。
  • 必须强制转成 char:char(c+4)
小结

字符运算后要想清楚“输出字符还是数字”:

char c1 = c - 32;     // 结果仍当字符用
cout << char(c+4);   // 强制转回字符再输出
cout << c-32;        // 会输出整数!
里程碑达成:

下一节系统学习自动类型转换与强制类型转换。