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

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语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

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

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

ini 复制代码
struct ListNode* head = NULL;

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

  1. 添加节点
ini 复制代码
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
ini 复制代码
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. 遍历链表
ini 复制代码
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
ini 复制代码
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语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

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

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

ini 复制代码
struct ListNode* head = NULL;

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

  1. 添加节点
ini 复制代码
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
ini 复制代码
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. 遍历链表
ini 复制代码
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
ini 复制代码
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语言中进行链表操作,需要先定义链表节点的结构体,即链表中每个节点的结构:

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

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

ini 复制代码
struct ListNode* head = NULL;

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

  1. 添加节点
ini 复制代码
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = head;
head = newNode;
  1. 删除节点
ini 复制代码
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. 遍历链表
ini 复制代码
struct ListNode* cur = head;
while (cur != NULL) {
    // 处理当前节点
    cur = cur->next;
}
  1. 反转链表
ini 复制代码
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.先定义一个二维数组:aNN,略大于要打印的行数。再令两边的数为 1,即当每行的第一个数和最后一个数为 1。ai0=aii-1=1,n 为行数。除两边的数外,任何一个数为上两顶数之和,即 aij = ai-1j-1 + ai-1j。最后输出杨辉三角。

3.代码如下:

4.运行结果

相关推荐
曲幽1 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱11 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵12 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio16 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户03321266636717 小时前
使用 Python 从零创建 Word 文档
python
Csvn1 天前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817531 天前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱2 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2