打卡第五条

一、问题描述

设计一座圆周率山

已知圆周率为:3.

1415926535 8979323846 2643383279 5028841971 6939937510

5820974944 5923078164 0628620899 8628034825 3421170679

8214808651 3282306647 0938446095 5058223172 5359408128

4811174502 8410270193 8521105559 6446229489 5493038196

二、设计思路:(如果写的文字无法编程实现,则需要进一步细化,再细分步 骤)

  1.  接收输入的山的高度。

  2.  根据圆周率的值,定义一个字符串变量存储圆周率的值。

  3.  定义一个变量表示每行数字的宽度,初始值为1。

  4.  使用两个嵌套循环逐行输出圆周率数字,外层循环为山的高度,即要输出的行数。内层循环为每行的数字个数。 

  5.  在每行输出前,添加合适数量的空格,使之符合 "pi mountain" 的形状和对称性。

  6.  每次行的宽度增加2,以便能够逐行输出圆周率数字。

  7.  最终输出结果,每行数字右侧没有空格。

 

四、代码实现 

#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;
}

 

 

posted @ 2023-04-21 20:54  /张根源/  阅读(20)  评论(0编辑  收藏  举报