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.运行结果

相关推荐
数据智能老司机2 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机3 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i3 小时前
drf初步梳理
python·django
每日AI新事件3 小时前
python的异步函数
python
这里有鱼汤4 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook13 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室13 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三15 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试