打卡第五条
一、问题描述
设计一座圆周率山
已知圆周率为:3.
1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679
8214808651 3282306647 0938446095 5058223172 5359408128
4811174502 8410270193 8521105559 6446229489 5493038196
二、设计思路:(如果写的文字无法编程实现,则需要进一步细化,再细分步 骤)
-
接收输入的山的高度。
-
根据圆周率的值,定义一个字符串变量存储圆周率的值。
-
定义一个变量表示每行数字的宽度,初始值为1。
-
使用两个嵌套循环逐行输出圆周率数字,外层循环为山的高度,即要输出的行数。内层循环为每行的数字个数。
-
在每行输出前,添加合适数量的空格,使之符合 "pi mountain" 的形状和对称性。
-
每次行的宽度增加2,以便能够逐行输出圆周率数字。
-
最终输出结果,每行数字右侧没有空格。
四、代码实现
#include<bits/stdc++.h>
using namespace std;
#define PI "314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196"
int main()
{
int n,x,i,j;
cin>>n;
string s(PI);
int flag=0;
for(i=0;i<n;i++){
string s1=s.substr(flag,i*2+1);
cout<< setw((n*2-1)/2+1+i)<<s1<<endl;
flag+=i*2+1;
}
return 0;
}