【C++ | PTA】2017Final 圆周率山

文章目录

题目要求

为了参加学校的社团风采展,怡山小学数学组的同学们决定画一座圆周率山,以宣传圆周率。

已知圆周率为:3.

1415926535 8979323846 2643383279 5028841971 6939937510

5820974944 5923078164 0628620899 8628034825 3421170679

8214808651 3282306647 0938446095 5058223172 5359408128

4811174502 8410270193 8521105559 6446229489 5493038196

输入格式:
输入山的高度,为一个不超过10的正整数。

输出格式:
以上尖下宽,左右对称的三角形形式,给出圆周率的前若干位(不含小数点)。注意:每行均以数字结尾,即数字右边无空格。

输入样例1:
1
输出样例1:
3

输入样例2:
4
输出样例2:

   3
  141
 59265
3589793

代码

#include <iostream>
#include <string>

#define PI "314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196"  // 定义 π 的近似值字符串为常量宏

int main() {
    int n, x, i, j;  // 声明整数类型变量
    cin >> n;  // 输入需要输出的等腰三角形的行数
    string s(PI);  // 将 π 的近似值字符串赋值给 s 变量

    int flag = 0;  // 定义变量 flag 表示已经输出的 π 中字符的数量(即前 i 行的字符数)
    for (i = 0; i < n; i++) {  // 循环输出等腰三角形的每一行,下标从 0 开始,到 n-1 结束
        // 使用 substr() 函数截取 PI 的子串,具体截取长度为 i*2 + 1,表示第 i 行需要输出的字符数
        string s1 = s.substr(flag, i*2+1);
        // setw() 函数设置输出宽度,确保每行输出的 PI 字符串居中对齐
        // 其中参数为输出宽度,即空格数,每行空格总数为 (n*2-1)/2+1+i
        cout << setw((n*2-1)/2+1+i) << s1 << endl;  
        flag += i*2+1;  // 计算已经输出的字符数量,注意是 +=,表示每一行需要计算累加
    }
    return 0;  // 返回 0,程序结束
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值