C语言典型例题二——杨辉三角

2023-10-26

C语言典型例题二——杨辉三角

杨辉三角

1.杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。这就是我们用C语言写杨辉三角的关键之一。杨辉三角是一种数学工具,它是由一个数字三角形组成,其中第一行只有一个数字1,接下来的每一行都由前一行的相邻数字相加而来,最后一行为1 1,这种数字三角形以数学家杨辉的名字命名。杨辉三角具有很多有趣的数学特性,可以用于组合数学、概率论、数论等领域的计算和证明。

C语言中的位运算有哪些操作符

C语言中的位运算操作符包括:

  1. 按位与(&):两个位都是1,结果才为1,否则为0。

  2. 按位或(|):两个位中只要有一个为1,结果就为1,否则为0。

  3. 按位异或(^):两个位不相同,结果为1,否则为0。

  4. 按位取反(~):把操作数的每一位取反,即0变1,1变0。

  5. 左移(<<):将一个数的所有二进制位全部左移若干位,高位丢弃,低位补0。

  6. 右移(>>):将一个数的所有二进制位全部右移若干位,低位丢弃,高位补符号位或0。

在C语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

struct ListNode {
    int val; // 节点存储的值
    struct ListNode *next; // 指向下一个节点的指针
};

然后,我们可以定义一个指向链表头节点的指针:

struct ListNode* head = NULL;

接下来,就可以进行链表的各种操作了,比如:

  1. 添加节点
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
struct ListNode* cur = head;
struct ListNode* pre = NULL;
while (cur != NULL && cur->val != x) {
    pre = cur;
    cur = cur->next;
}
if (cur != NULL) {
    if (pre == NULL) {
        head = cur->next;
    } else {
        pre->next = cur->next;
    }
    free(cur);
}
  1. 遍历链表
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
struct ListNode* pre = NULL;
struct ListNode* cur = head;
while (cur != NULL) {
    struct ListNode* next = cur->next;
    cur->next = pre;
    pre = cur;
    cur = next;
}
head = pre;

这些操作只是链表操作的一部分,还有很多其他的操作,需要根据实际场景进行使用。在C语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

struct ListNode {
    int val; // 节点存储的值
    struct ListNode *next; // 指向下一个节点的指针
};

然后,我们可以定义一个指向链表头节点的指针:

struct ListNode* head = NULL;

接下来,就可以进行链表的各种操作了,比如:

  1. 添加节点
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
struct ListNode* cur = head;
struct ListNode* pre = NULL;
while (cur != NULL && cur->val != x) {
    pre = cur;
    cur = cur->next;
}
if (cur != NULL) {
    if (pre == NULL) {
        head = cur->next;
    } else {
        pre->next = cur->next;
    }
    free(cur);
}
  1. 遍历链表
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
struct ListNode* pre = NULL;
struct ListNode* cur = head;
while (cur != NULL) {
    struct ListNode* next = cur->next;
    cur->next = pre;
    pre = cur;
    cur = next;
}
head = pre;

这些操作只是链表操作的一部分,还有很多其他的操作,需要根据实际场景进行使用。在C语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

struct ListNode {
    int val; // 节点存储的值
    struct ListNode *next; // 指向下一个节点的指针
};

然后,我们可以定义一个指向链表头节点的指针:

struct ListNode* head = NULL;

接下来,就可以进行链表的各种操作了,比如:

  1. 添加节点
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
struct ListNode* cur = head;
struct ListNode* pre = NULL;
while (cur != NULL && cur->val != x) {
    pre = cur;
    cur = cur->next;
}
if (cur != NULL) {
    if (pre == NULL) {
        head = cur->next;
    } else {
        pre->next = cur->next;
    }
    free(cur);
}
  1. 遍历链表
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
struct ListNode* pre = NULL;
struct ListNode* cur = head;
while (cur != NULL) {
    struct ListNode* next = cur->next;
    cur->next = pre;
    pre = cur;
    cur = next;
}
head = pre;

这些操作只是链表操作的一部分,还有很多其他的操作,需要根据实际场景进行使用。
2.先定义一个二维数组:a[N][N],略大于要打印的行数。再令两边的数为 1,即当每行的第一个数和最后一个数为 1。a[i][0]=a[i][i-1]=1,n 为行数。除两边的数外,任何一个数为上两顶数之和,即 a[i][j] = a[i-1][j-1] + a[i-1][j]。最后输出杨辉三角。

3.代码如下:
在这里插入图片描述
在这里插入图片描述
4.运行结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言典型例题二——杨辉三角 的相关文章

随机推荐

  • virtualbox 主机ping不通虚拟机解决办法

    场景描述 virtualbox虚拟机可以ping通主机和外网 但是主机一直无法ping通虚拟机ip 10 0 2 15 虚拟机的网络设置为nat 自己添加的nat网络 这样可以使得不通的虚拟机ip不一样 否则都选择NAT网络地址转发这个选项
  • 用deconstructSigs来做cosmic的mutation signature图

    用deconstructSigs来做cosmic的mutation signature图 作者的英文文档对这个包的用法描述的非常清楚 我只是记录一下自己学习该包用法的一点感悟 安装并加载必须的packages 如果你还没有安装 就运行下面的
  • Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法

    转自 https blog csdn net CC1991 article details 82965981 关闭Finder快速搜索输入框的方法 用鼠标单击输入框 点击进去 然后按电脑键盘的 Esc 键 即可关闭这个输入框
  • 离散特征和连续特征混合_混合蛋白和特征

    Java语言的开发人员精通C 和其他包含多重继承的语言 从而使类可以从任意数量的父级继承 多重继承的问题之一是无法确定派生自哪个父继承功能 这个问题称为菱形问题 请参阅参考资料 多重继承中固有的菱形问题和其他复杂性启发了Java语言设计人员
  • Docker 进入启动容器

    在使用 d参数时 容器启动后会进入后台 用户无法看到容器中的信息 也无法进行操作 这个时候如果需要进入容器进行操作 有多种方法 包括使用官方的attach或exec命令 以及第三方的nsenter工具等 1 attach命令 attach命
  • Linux下载及配置

    方法一 我们可以来到vm ware的官网 下载一个vm ware16 pro的模拟器 之后在下载完vm ware之后 我们可以去到centOS的官网 下载一个centOS 当然你也可以选择其他的linux的发行版 当然官网的下载速度是很慢的
  • MATLAB 绘制动态正弦函数

    一 动态正弦函数 动态正弦函数 二 MATLAB 绘制动态正弦函数代码 clear clc close all Np 100 空间点数 dx 2 pi Np 步长 x 0 dx 6 pi x 范围 f1sin sin x f1cos cos
  • LVGL视频课程更新啦,基于lvgl v8.2版本,课程适配多个平台、多款板子

    视频教程观看 百问网LVGL v8 系列课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 百问网LVGL v8 视频课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 视频学习地址
  • mysql集群 配置Keepalived+mm

    集团公司已经在oracle方向有成熟的几十套环境 但是为了节约成本 要尝试下mysql下面先用两台linux x86 Red Hat Enterprise Linux Server release 5 4 Tikanga 和linux6 3
  • O-RAN专题系列-37:管理面-WG4.MP.V07-规范解读-第3章-启动安装流程:NETCONF会话的建立、维护、关闭

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122498392 目录 第3章 Sta
  • 计算机硬件基础——第一章:计算机系统概述

    目录 计算机发展历史 第一代 电子管计算机时代 1946 1957 其主要特点是采用电子管作为基本器件 第二代 晶体管计算机时代 1958 1964 这时期计算机的主要器件逐步由电子管改为晶体管 第三代 集成电路计算机时代 1965 197
  • 旧视频调整为4k视频提高分辨率Topaz Video Enhance AI

    Topaz Video Enhance AI是Mac上的提升视频分辨率的工具 也是拍摄出色画面 并将其变得完美方法 借助软件Topaz Video Enhance AI 可以将您的素材从标清转换为高清 并不会发生模糊 且会得到质量的提升 非
  • Java并发编程系列 - 互斥锁:解决原子性问题

    Java并发编程系列 互斥锁 解决原子性问题 原子的意思代表着 不可分 那么如果我们要保证原子性就必须满足 同一时刻只有一个线程执行 称之为互斥 如果我们能够保证对 共享变量的修改是互斥的 那么 无论是单核 CPU 还是多核 CPU 就都能
  • Elasticsearch框架基础概念

    Elasticsearch ES 是一个基于Lucene构建开源分布式搜索引擎并提供Restful接口 Es是一个分布式文档数据库 JSON数据格式存储 类似MongoDB JSON中的每个字段数据都可作为搜索条件 并且能够扩展至数以百计的
  • Mysql查询数据库表中前几条记录

    Mysql查询数据库表中前几条记录问题 我想好多朋友也会碰到 下面我简单的说下我遇到的情况 且解决方法 希望对好多朋友有许多帮助 下面是我数据库test中表student的数据 其中第二条记录被我删除了 在查询分析器中输入select fr
  • Deep Learning:基于pytorch搭建神经网络的花朵种类识别项目(内涵完整文件和代码)—超详细完整实战教程

    基于pytorch的深度学习花朵种类识别项目完整教程 内涵完整文件和代码 相关链接 超详细 CNN卷积神经网络教程 零基础到实战 大白话pytorch基本知识点及语法 项目实战 文章目录 基于pytorch的深度学习花朵种类识别项目完整教程
  • Java集合 —— Map集合

    目录 1 Map接口和Collection接口的不同 2 Map集合的特点 3 Map集合的功能 4 HashMap原理 谈谈你对HashMap的理解 HashMap的数据插入原理是怎样的 5 HashTable特点 6 LinkedHas
  • Unity游戏开发 怪物巡逻AI

    今天实现的内容是怪物AI 看了一些网上的AI 不是特别符合我的需求 于是就自己研究了一种AI 大致和魔兽类的RPG游戏效果差不多 AI效果如下 1 将怪物分为如下几个状态 待机状态 该状态内有3种行为 原地呼吸 原地观察 和游走 可通过权重
  • 汇编语言(王爽第三版)实验九

    实验九 题目与个人思路 编程 在屏幕中间分别显示绿色 绿底红色 白底蓝色的字符串 welcome to masm 在80 25彩色字符模式下 显示器可以显示25行 每行80个字符 根据题意大致效果如下图所示 11行的起始地址计算10 80
  • C语言典型例题二——杨辉三角

    C语言典型例题二 杨辉三角 杨辉三角 C语言中的位运算有哪些操作符 杨辉三角 1 杨辉三角最本质的特征是 它的两条斜边都是由数字1组成的 而其余的数则是等于它肩上的两个数之和 这就是我们用C语言写杨辉三角的关键之一 杨辉三角是一种数学工具