零基础c++从入门到精通(自学 C++ 第 5 课 杨辉三角)

生活常识 2023-05-16 02:08生活常识www.xinxueguanw.cn

杨辉三角 自学 C++ 第 5 课 杨辉三角

杨辉三角,是中国古代数学的杰出研究成果之一,出现在中国南宋数学家杨辉1261年所著的《详解九章算法》中,是二项式系数在三角形中的一种几何排列,把组合内在的数字规律直观地从图形中体现出来。其主要规律(如图示意)为第n行有n个数,每行头数和尾数均为1,其余的数为上一行左右两边数之和,每行的数左右对称。通过C++实现杨辉三角的 很多,结合近期对vector的学习 ,通过vector定义n×n的数组来实现。

该动图来源百度图片(侵删)

编写的程序注解

测试结果

知识点

? vectorltvectorltintgt gtnums(n, vectorltintgt(n, 0)) 定义了一个vector容器,元素类型为vector,初始化为包含n个vector对象,每个对象又是一个新定义的vector对象的拷贝,而新定义的vector对象被初始化为n个0,由此定义一个nn的二维数组。vectorltintgt nums 其中vector为容器名称,int为容器数据类型,nums为容器变量,nums表示未指定长度;nums(n)表示指定了长度。表示传入函数的是vector的物理地址,函数内部对vector改变时,原始的数据也会改变;vectorltintgt nums表示传入函数的是vector的复制(复制品存入新的物理地址中),函数内部对vector改变时,原始的数据不会改变。

? vector [#39vekt?r](向量/矢量)是封装了一个能存放任意类型动态数组的顺序容器(Sequence Container)。顺序容器中的元素按照线性顺序排序,可以通过元素在顺序容器中的位置访问对应的元素。vector 是C++ STL的一个重要的数据结构(动态的数组)。其头文件为#includeltvectorgt。vector不需要动态操作内存,不用担心内存泄露等问题。常见的几种定义和使用

vectorltintgtnums //不指定长度vectorltintgtnums(n) // 指定长度为n,每个元素的初值默认为0vectorltintgtnums(n,1) // 指定长度为n,每个元素的初值为1vectorltintgtnums{1,2,3,4,5} //每个元素均赋初值vectorltvectorltintgt gtnums {{1,2,3},{1,2,3}} //二维数组每个元素均赋初值(注意空格)nums.size() //获得长数组度nums.push_back(x) //从数组末端插入一个元素x(x为要插入的值)nums.pop_back(x) //从数组末端删掉一个元素nums.clear() //清空所有元素nums.empty() //判断nums是否为空,空返回truenums.insert(nums.begin()+i, x) //在第i+1个元素前面插入xnums.erase(nums.begin()+2) //删除第3个元素nums.erase(nums.begin()+i, nums.end()+j) //删除区间[i,j)

? ltiomanipgt 是i/o流控制头文件,i/o代表输入/输出,manip是manipulator(操纵器)的缩写。对cin,cout等函数的一些操纵控制运算,一些常见的控制函数的

//setw(n) 在输出操作中设置字段宽度,宽度为n个字符,默认是右对齐coutltltsetw(6)ltlt1234ltltendl //输出的结果(空格)(空格)1234//域宽n为6,1234占了4位,剩下2位用空格表示,如果n=7,剩下的3为用空格表示;coutltltsetw(6)ltlt1234ltlt5678ltltendl //输出的结果(空格)(空格)123445678//说明setw(n)设定域宽只对其后的之一个ltlt(流插入运算符)中的内容有效//Sets the number of characters to be used as thefield width for the next insertion operation.coutltltleftltltsetw(6)ltlt1234ltltendl //如果需要左对齐,在setw前加leftcoutltlt#39A#39ltltsetw(3)ltlt#39B#39ltltendl // A后面输出3个字符,B占一个字符,剩余2个字符用空格填充

//setfill(char c) 在设定的域宽中,由字符c填充没有占用的宽度coutltltsetfill(#39@#39)ltltsetw(6)ltlt1234ltltendl //输出的结果@@1234coutltltsetfill(#39#39)ltltsetw(6)ltlt1234ltltendl //输出的结果1234coutltlt#39A#39ltltsetfill(#39#39)ltltsetw(3)ltlt#39B#39ltltendl //输出的结果AB

//setbase(int n) : 将数字转换为 n 进制,计算机一般的进制为8进制、10进制、16进制coutltltsetbase(8)ltlt1234ltltendl //输出的结果2322coutltltsetbase(16)ltlt1234ltltendl //输出的结果4d2

//setprecision(n)可控制输出流显示浮点数的数字个数,C++默认的流输出数值有效位是6double a = 7 / 3cout ltlt setprecision(1) ltlt a ltlt endl //输出的结果2cout ltlt setprecision(4) ltlt a ltlt endl //输出的结果2.333 (按四舍五入进行保留)

自学 C++ 第 1 课 数字大小排序

自学 C++ 第 2 课 数组包含关系

自学 C++ 第 3 课 正整数反序输出

自学 C++ 第 4 课 计算体积及表面积

c语言杨辉三角解题思路 c语言杨辉三角代码讲解

Copyright@2015-2025 www.xinxueguanw.cn 心血管健康网版板所有