首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏SDLC技术探究

    python实现的AI版飞花

    一 前言 “春城无处不飞花”,在遥远的古代,古人就开始有饮酒作乐的智慧,伴随着“飞花”的诞生,文学创作者饮酒作乐必须要飞花助兴了。 bot: 好的,我们可以玩飞花游戏。 you: 这是飞花游戏 bot: 对不起,我误解了你的意思。让我们继续玩飞花游戏吧!请说出下一个含有“月”字的词语或诗句: 回答:“但愿人长久”。 接下去的飞花令你来定吧。 you: 说一个 以鸟为关键词的飞花游戏 bot: 好的,让我们来一场以鸟为关键词的飞花游戏。 接下去的飞花令你来定吧。 you: exit 我们可能需要进一步训练这个工具才能让他成为一个飞花高手。

    1K21编辑于 2023-12-21
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言指针

    规避野指针(3):及时将闲置指针设置成NULL #include <stdio.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int = { 1, 2, 3 }; int arr2[4] = { 11, 22, 33, 44 }; // 添加第4个元素 int arr3[5] = { 111, 222, 333 sizeof(arr3) / sizeof(arr3[0]) // 5 }; printf("指针数组模拟不规则二维数组:\n\n"); for (int [5] = { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} }; test(arr, 3, 5); return 0; } 总结:二维数组传参,形参部分可以是数组形式 解引用获取实际整数值 // 3.

    25810编辑于 2025-11-18
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言内存函数

    1️⃣ memcpy(void *dest, const void *src, size_t n) 2️⃣ memmove(void *dest, const void *src, size_t n) 3️⃣ char data[] = "12345"; memmove(data + 2, data, 3); // 支持重叠 printf("%s\n", data); // 输出 12123 空间卷轴:memmove函数 3️⃣ memset(void *ptr, int value, size_t n) 作用: 将从 ptr 开始的 n 个字节都设为 value(按字节存)。 : < 0 :a < b = 0 :a == b > 0 :a > b char a[] = "abc"; char b[] = "abd"; int result = memcmp(a, b, 3) [3] = 'b' → "ababe fghi" *(data+4) = *(data+2); // data[4] = 'a' → "ababa fghi" ← 问题出现!

    17510编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言数组

    }; //不完全初始化 int arr2[6] = {1};//第⼀个元素初始化为1,剩余的元素默认初始化为0 //错误的初始化 - 初始化项太多 int arr3[3] = {1, 2, 3, 4}; ⼆维数组的初始化 (1)不完全初始化 int arr1[3][5] = {1, 2}; int arr2[3][5] = {0}; (2)完全初始化 int arr3[3][5] = {1,2,3,4,5 , 2,3,4,5,6, 3,4,5,6,7}; (3)按照行初始化 int arr4[3][5] = {{1,2},{3,4},{5,6}}; 注意 初始化时省略行,但是不能省略列 二维数组的使用 ⼆ C语言规定,⼆维数组的⾏是从0开始的,列也是从0开始的,如下所⽰: int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7}; 二维数组的输入与输出 #include <stdio.h> int main() { int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7}; int i = 0;//遍历⾏ //输⼊ for(

    21710编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——【C语言】文件操作

    文件名包含3部分:文件路径+文件名主干+文件后缀 例如: c:\code\test.txt 为了方便起见,文件标识常被称为文件名 五、文件是如何存储的? ⼀个数据在文件中是怎么存储的呢? fgets: 会读取字符,直到 (1) 读取了 n-1 个字符,(2) 读到了一个换行符 \n,或 (3) 遇到了文件结尾 EOF。

    18510编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言常见概念

    3、第一个C语言程序 #include <stdio.h>//引用头文件,使我们可以使用C语言库本身就已经提供给 我们的函数,即库函数 int

    19710编辑于 2025-11-18
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言转义字符

    = 被解析为 #) \0 空字符(Null) 0 字符串结束标志 \ooo 八进制转义 - 最多 3 位八进制数(如 \101 表示 'A') \xhh 十六进制转义 - 任意位数十六进制数(如 \x41

    29810编辑于 2025-11-12
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言(数组+函数)

    a, int b return a + b; // 返回计算结果 } (2)函数的调用 //函数定义后,可以通过 `函数名 + 参数` 调用: int result = add(3, 5); // 调用 add(),传入 3 和 5 printf("3 + 5 = %d\n", result); // 输出: 3 + 5 = 8 //无返回值函数的调用 greet(); // = 10, y = 20; swap(&x, &y); // 传入地址,交换 x 和 y 的值 printf("x=%d, y=%d\n", x, y); // 输出: x=20, y=10 (3) 告诉编译器函数的存在): #include <stdio.h> // 函数声明(原型) int add(int a, int b); int main() { int sum = add(3, 代码展示 int main() { int arr[5] = {1, 2, 3, 4, 5}; printArray(arr, 5); // arr在这里退化为指向首地址的指针

    27710编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言变量和常量

    // 定义并初始化为10 double pi = 3.14159; // 定义双精度浮点数并初始化 char letter = 'A'; // 定义字符变量并初始化 3. 同时定义多个变量 语法 数据类型 变量名1, 变量名2, 变量名3; 代码展示 int x, y, z; // 定义三个整型变量 float a = 1.2, b = 3.4; double d; // 双精度浮点,通常8字节 2) 带符号修饰符 signed int si; // 有符号整型(默认) unsigned int ui; // 无符号整型 3) int globalVar; // 全局变量 void func1() { globalVar = 10; } void func2() { globalVar = 20; } 3) [3]; // 二维浮点数组 3) 结构体变量 struct Point { int x; int y; }; struct Point p1; // 结构体变量

    19010编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言分支与循环语句(下)

    前言 上一篇文章收集飞花碎片——C语言分支与循环结构(上)已经跟大家全面讲解了分支与循环的基础知识,这一张会通过几个程序设计项目来锻炼逻辑思维能力,难度从难到易,大家可以根据自己的需求去练习 练习一 第一个 && 的操作数是 1(真),继续计算 ++b: ++b:b 先自增为 3,返回值是 3(非零,真)。 输出: a = 2 b = 3 c = 3 d = 5 代码2 #include <stdio.h> int main() { int i = 0, a = 1, b = 2, c = 3, d = 4 第一个 || 的操作数是 0(假),继续计算 ++b: ++b:b 先自增为 3,返回值是 3(非零,真)。 + 1/3! - 1/4! + ... ± 1/n!

    25810编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言分支与循环语句(上)

    C语言分支与循环语句(基础知识) 这一章的C语言分支与循环结构的基础知识已经全部讲完了,下一章会利用几道程序设计题目让大家更好地掌握分支循环语句 C语言语句的分类 (1)表达式语句(例如 y=x+3; 假设变量y和x均已定义) (2)函数调用语句(MAX(x,y);假设函数MAX()已经定义) (3)控制语句 (4)复合语句(把多种语句复合在一起形成的语句) (5)空语句(例如 ;分号本身就可以作为一条语句 if (条件) { // 条件为真时执行 } else { // 条件为假时执行 } (3)if-else if-else 链 作用: 多条件分支。 do { // 循环体 } while (条件); 流程图演示 (3)for 循环 集初始化、条件判断、迭代于一行。 i = 0; i < 10; i++) { if (i % 2 == 0) continue; // 跳过偶数 printf("%d ", i); // 仅打印奇数 } 流程图演示 (3

    17510编辑于 2025-11-18
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言关键字typedef

    : %d\n", (*ptr)[4]); return 0; } 遍历二维数组 #include <stdio.h> int main() { int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 为"指向包含3个int的数组的指针"创建别名 typedef int ( *RowPtr)[3]; // 使用该类型声明指针,指向第一行 RowPtr ptr = matrix; printf("二维数组内容:\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", (*ptr)[j]) ); func = subtract; printf("减法结果: %d\n", func(5, 3)); return 0; }

    20510编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片———C语言输入函数(应声虫)

    &a); // 正确 scanf("%d", a); // 错误 2、多个输入值 int x, y; scanf("%d%d", &x, &y); // 输入时可以用空格/Tab/回车分隔 3、 补充非闰年的情况 } return 0; } 代码运行结果如下 这个错误是Visual Studio 编译器针对scanf()函数的安全警告,是属于比较常见的问题 解决方法(3种方式 方法3:彻底关闭安全警告(不推荐) 在项目属性里设置: 右键项目 → 属性 → C/C++ → 预处理器 在 预处理器定义 中添加: _CRT_SECURE_NO_WARNINGS 应用并重新编译

    40210编辑于 2025-11-12
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言字符串(纯干货)

    int main() { char arr1[] = "Hello"; char arr2[] = { 'H', 'e', 'l', 'l', 'o' }; char arr3[ e', 'l', 'l', 'o', '\0'}; printf("%s\n", arr1); printf("%s\n", arr2); printf("%s\n", arr3) 字符串的定义的方式时,一定要记得加上字符串的结束标志,否则就会出现乱码现象 小编提醒:一个合格的程序员必备的素养,是对代码的每一处细节严格把控,虽然我们有时候用不到,但这却是我们必须要做的 3、 代码示例: char *ptr = "Hello"; printf("%p\n", (void *)ptr); // 输出指针地址(如 0x55a1b2c3d4e5) 后面我们讲到指针的时候会深度解析 代码示例: int count; printf("Hello%nWorld\n", &count); // count = 5("Hello"的长度) 3.

    26710编辑于 2025-11-13
  • 来自专栏Crossin的编程教室

    用Python+小程序实现诗词大会的飞花

    写在前面 在2018年下半年的某一天,偶然观看了《中国诗词大会》节目的飞花环节。 实现语音版飞花仅作为兴趣爱好,之前本来是用 Django 完成的,在朋友的安利之下改用 Sanic 重写。 飞花 整体架构如图所示 ? 架构如上图所示,接下来分享部分技术细节。 最后 以上是关于飞花应用的总结,总的来说还是挺满意这次实践。 有希望继续改进的同学可以在 github 上 fork 飞花代码库进行二次开发。

    3.2K40发布于 2019-07-08
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言操作符与进制转换

    8^2 = 64 3 3 * 8^2 第4位 8^3 = 512 4 4 * 8^3 第5位 8^4 = 4096 5 5 * 8^4 第6位 8^5 = 32768 6 6 * 8^5 第7位 8^ : 逗号表达式: , 下标引⽤: [] 函数调⽤: () 3.原码、反码、补码(了解即可) 整数的2进制表示方法有3种,即原码、反码和补码 有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中 3 + 4 * 5; 上⾯⽰例中,表达式 3 + 4 * 5⾥⾯既有加法运算符( +),⼜有乘法运算符(*)。由于乘法 的优先级⾼于加法,所以会先计算4 * 5,⽽不是先计算3 + 4。 if (3 == x) ... 1 这样的话,如果把 == 误写成 = ,编译器就会报错。 /* 报错 */ if (3 = x) ... 需要避免的错误是:多个关系运算符不宜连⽤。 if(month >= 3 && month <= 5) 表达式中&& 的左操作数是 month >= 3 ,右操作数是 month <= 5 ,当左操作数 month >= 3 的结果是0的时候,

    24510编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——C语言字符函数与字符串函数

    } return 0; } #include <stdio.h> #include <ctype.h> int main() { char ch1 = 'a', ch2 = 'B', ch3 toupper(ch1)); printf("'%c' 转换为小写: '%c'\n", ch2, tolower(ch2)); printf("'%c' 转换: '%c'\n", ch3, > #include <stdlib.h> int main() { char str1[] = "123"; char str2[] = "45.67"; char str3[ atoi(str3)); // 0(开头非数字) return 0; } atof() – 字符串转浮点数 atol() – 字符串转长整数 itoa() - 整数转字符串 fclose(file); 3. fread() 从文件中读取数据到内存。

    17010编辑于 2025-11-12
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——【C语言】动态内存管理&&数据存储的内存结构

    它会自动把分配的内存全部初始化为0 malloc 不会,malloc 给你的内存里可能是任何“垃圾数据” 3)realloc - 重新分配 摆渡游船:点击前往realloc函数官网 原型: void 如果new_size大于 原大小,它会尝试在原地扩容 3. 尽情使用 ... // 好了,用完了,必须释放 free(my_array); 3)动态内存的注意事项 3.1)动态开辟内存忘记释放(内存泄漏) “只借不还” 1.你 malloc 了一块内存,但用完后忘记 内存泄漏、悬空指针) int *p = malloc(sizeof(int)); *p = 42; free(p); // ✅ 释放 p = NULL; // ✅ 置空避免野指针 3️⃣

    19410编辑于 2025-11-12
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——【C语言】自定义类型(结构体、联合体、枚举)

    i int 4 4 [4, 7] 0 c2 char 1 8 [8] 3 尾部填充 - - - - 3 偏移计算: c1 从 0 开始,占 1 字节。 i(4 字节)需对齐到 4 的倍数,因此在 c1 后填充 3 字节,i 从偏移 4 开始。 c2 从 8 开始,占 1 字节。 6.2)代码练习 struct S3 { double d; char c; int i; }; printf("%d\n", sizeof(struct S3)); → 最终结构体大小:16 字节 //结构体嵌套问题 struct S4 { char c1; struct S3 s3; double d; }; printf("%d\n", sizeof(struct S4)); \n\n"); // 3. 再次给number赋值 data.number = 65; // 65是'A'的ASCII码 printf("3.

    18410编辑于 2025-11-13
  • 来自专栏C语言与数据结构算法

    收集飞花碎片——【C语言基本数据类型&&数据在内存中的存储】

    无符号 0到255 %hhu 每一种变量举例 char ch1 = 'A'; // 字符赋值 char ch2 = 65; // 等效于'A'的ASCII值 char ch3 printf("字符形式: %c\n", ch1); // 输出: A printf("整数值: %hhd\n", ch2); // 输出: 65 printf("可能的有符号值: %hhd\n", ch3) 代码示例 int x; printf("%zu", sizeof(x)); // 输出:4(在32/64位系统中通常为4字节) 3、关键区别 特性 大小(Size) 长度(Length) 关注点 内存占用 \0') 后面随着学习内容的深入,会有越来越多关于sizeof的结合运用,敬请期待 三、数据在内存中存储 1)基本数据类型的内存占用 2)整数的存储方式 梦泽瑶池:原码、反码、补码的讲解 3

    30310编辑于 2025-11-12
领券