• 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
    

     (摘自pintia.cn)

    解答:

     1 #include<iostream>
     2 #include<string>
     3 #include<iomanip>
     4 #define PI "314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196"
     5 using namespace std;
     6 int main()
     7 {    
     8     string str(PI);            //初始化字符串
     9     int height,weight,mark(0);        //height为高度,weight为底层的宽度,mark用于记录截取字符串的位置
    10     cin>>height;                    //输入高度
    11     weight=height*2-1;                //计算底层宽度
    12     string *p=new string[height];    //动态分配字符串组
    13     for(int i(0);i<height;i++)        //将字符串分层,每层有2*i+1个字符
    14     {
    15         *(p+i)=str.substr(mark,i*2+1);        //sting.substr(unsigned int pos, unsigned int n) 从字符串sting的下标为pos的字符开始,截取n个字符
    16         mark+=(i*2+1);
    17     }
    18     for(int i(0);i<height;i++)                //分层输出
    19     {
    20         cout<<setw(weight/2+i+1)<<setfill(' ')<<*(p+i)<<endl;        //每层占位wight/2+i+1个字符位,输出每层的字符串,其他的由空格填充
    21     }
    22     return 0;
    23 }

    解析:

      见代码注释。

      string.substr(unsigned int pos, unsigned int n)的使用方法。

  • 相关阅读:
    页面自动打印
    水晶报表安装问题
    c#中重写属性
    水晶报表无法找到数据源问题
    SQL Server2000安装提示数据源配置错误解决方案
    由C/C++中的结构体包含数组引申到C/C++堆栈
    自写缓存类
    C语言fread和fwrite的例子
    C语言生成DLL供C#调用
    C语言操作文件总结
  • 原文地址:https://www.cnblogs.com/wzzdeblog/p/10615716.html
Copyright © 2020-2023  润新知