IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 杨辉三角形c/c++ -> 正文阅读

[C++知识库]杨辉三角形c/c++

杨辉三角形c/c++

多种写法多种思路,重在参考,莫要争辩!

s
#include<iostream>
#include<iomanip>
using namespace std;


void triangle(){
	//定义一个二维动态数组
	int n;//定义层数
	cout<<"你想得到几层的杨辉三角形:";
	cin>>n;
	while(n<=0){
		cout<<"输入错误,请重新输入!"<<endl;
		cout<<"你想得到几层的杨辉三角形:";
		cin>>n;
	}
	int **a;//定义二维指针
	a = (int**)calloc(n,sizeof(int*));//申请一组一维指针空间

	int i;//循环通用变量
	for(i = 0; i<n; ++i){
		a[i] = (int*)calloc(n,sizeof(int));//对每个一维指针再申请一行空间
	}

	//定义数组初值
	if(n>=2){
		a[0][0] = 1;
		a[1][0] = 1;
		a[1][1] = 1;
	}else{
		a[0][0] = 1;
	}
	

	//以上一层的数为基础,推导出下一层的数
	for(int x = 3; x<=n; ++x){//前两层已经定义,故从第三层开始
		//定义每层开始和末尾两个数字1
		a[x-1][0] = 1;//x-1为数组下标从0开始,第三行实则为2,故-1
		a[x-1][x-1] = 1;
		//定义除始末的中间值
		//   1
		//  1 1
		// 1 2 1
		//1 3 3 1
		//定义y,实际含义为记录下标
		for(int y = 1 ; y<=x-2; ++y){//x-2为中间值数量,除去始末故-2
			a[x-1][y] = a[x-2][y-1] + a[x-2][y];//中间值下标从1开始,为上一层同下标的值和-1下标值的和,x-1为此层,x-2为上一层
		}
	}
	
	//左侧输出遍历 
	//for(i = 0; i<n ; ++i){
	//	for(int j = 0; j<=i ; ++j){//j<=i,本层虽有许多空间,但实际输出数量等于层数,输出大于无意义
	//		cout<<a[i][j]<<" ";
	//	}
	//	cout<<endl;
	//}

	//正三角输出遍历
	int num = 0;//记录最大数
	for(i = 0; i<n ; ++i){
		for(int j = 0; j<=i ; ++j){//j<=i,本层虽有许多空间,但实际输出数量等于层数,输出大于无意义
			(num < a[i][j]) ? (num = a[i][j]) : num = num;
		}
	}

	//cout<<"最大数是"<<num<<endl;


	int size = 0;//记录最大数的位数
	while(num){
		num = num / 10;
		++size;
	}

	for(i = 0; i<n ; ++i){
		int kong = n-(i+1);//层数-当前层数(i+1)
		while(kong){
			cout<< setiosflags(ios::left) << setw(size);
			cout<<"";
			--kong;
		}
		for(int j = 0; j<=i ; ++j){//j<=i,本层虽有许多空间,但实际输出数量等于层数,输出大于无意义
			cout<< setiosflags(ios::left) << setw(size);
			cout<<a[i][j];
			cout<< setiosflags(ios::left) << setw(size);
			cout<<"";
		}
		cout<<endl;
	}

}


void text(){
	int a[5][5] = {{1,1,1,1,1},{11,11,11,11,11},{5,5,5,5,5},{6,6,6,6,6},{11111,11,1,1,1}};
	int n = 5;
	int i;

	for(i = 0; i<n ; ++i){
		for(int j = 0; j<=i ; ++j){//j<=i,本层虽有许多空间,但实际输出数量等于层数,输出大于无意义
			cout<< setiosflags(ios::left) << setw(5);
			
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
}

int main(){
	triangle();
	return 0;
}
h
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	int n;//层数
	cout<<"需要输入多少层:";
	cin>>n;
	int x=n+1;

	int arr[100][100];
	for(int i=0;i<n;i++){
		arr[i][0]=arr[i][i]=1;//每行第一个数和最后一个等于0
	}
	for(int m=2;m<n;m++){//从第三行开始
		for(int j=1;j<m;j++){
			arr[m][j]=arr[m-1][j-1]+arr[m-1][j];//上一行的元素+上一行元素前一个
		}
	}
	
	int num = 0;//记录最大数
	for(i = 0; i<n ; ++i){
		for(int j = 0; j<=i ; ++j){
			(num <arr[i][j]) ? (num = arr[i][j]) : num = num;
		}
	}

	int size = 0;//记录最大数的位数,用于输出位数的控制
	while(num){
		num = num / 10;
		++size;
	}
	int temp=size-2;//用来确定需要往右移动的位数,(给前边加多少空格)
	for(int l=0;l<n;l++){
		cout<<setw(3*x)<<"";//在每行前输入宽度为3x的空格
		x--;//每行-1
		for(int k=0;k<=l;k++){
			
			cout<<arr[l][k]<<setw(size+1);//输出数组每个数的宽度是最大数位数加1   
			
		}
		
		cout<<endl;
	}
		//	   1     右移3位
		//	  1 1    右移2位
        //   1 2 1   右移1位
       //   1 3 3 1

}

1 2021年10月23日16:43:39

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:45:41  更:2021-10-24 14:47:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:24:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码