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.先定义一个二维数组: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.运行结果

相关推荐
鸡鸭扣36 分钟前
Docker:3、在VSCode上安装并运行python程序或JavaScript程序
运维·vscode·python·docker·容器·js
paterWang1 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
东方佑1 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
神秘_博士2 小时前
自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
arm开发·python·物联网·flutter·docker·gitee
Moutai码农3 小时前
机器学习-生命周期
人工智能·python·机器学习·数据挖掘
小白教程4 小时前
python学习笔记,python处理 Excel、Word、PPT 以及邮件自动化办公
python·python学习·python安装
武陵悭臾4 小时前
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
python·selenium·网络爬虫·pyautogui·deepseek·鼠标右键模拟·保存链接为htm
代码猪猪傻瓜coding5 小时前
关于 形状信息提取的说明
人工智能·python·深度学习
码界筑梦坊6 小时前
基于Flask的第七次人口普查数据分析系统的设计与实现
后端·python·信息可视化·flask·毕业设计
微笑的Java7 小时前
Python - 爬虫利器 - BeautifulSoup4常用 API
开发语言·爬虫·python