C
文章平均质量分 65
C/C++语言学习笔记
HardyDragon_CC
谦虚使人进步
展开
-
Makefile 入门笔记 | 常见函数 | 选项 | 命令
Makefile中有一些常见的函数,它们提供了在Makefile中进行文本处理和操作的能力。而没有指定具体的目标时,Make工具会尝试构建默认目标,而通常这个默认目标就是。命令和选项,实际上还有更多的选项可以根据具体的需求使用。是一个常见的目标名称,它通常被用作默认目标。中,可以方便地一次性构建整个项目或执行一系列任务。目标,根据项目的需要添加相关的依赖项和命令。或查阅相关文档来获取更详细的信息。你可以在Makefile中自定义。这样,通过将常用的目标放在。在Makefile中,是默认目标,它依赖于。原创 2024-01-11 11:20:50 · 964 阅读 · 0 评论 -
将两个非递增的有序链表合并为一个非递减的有序链表
将两个非递增的有序链表合并为一个非递减的有序链表将两个非递增的有序链表合并为一个非递减的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。操作的名称和参数使用下列结构:La和Lb表示将要合并的链表,合并后的新表使用头指针Lc指向。void MergeList(LinkList& La, LinkList& Lb, LinkList& Lc)将两个递减链表合并为一个递增链表;使用递归进行合并,迭代方式反转。空间复杂度O(1)原创 2021-04-06 21:08:23 · 1595 阅读 · 0 评论 -
第11章字符串和字符串函数
title: 第十一章 字符串和字符串函数author: HardyDragontags: C Notes第十一章 字符串和字符串函数使用字符串的几种方式,赋值都是字符串用双引号括起来。字符数组赋值字符指针赋值字符串常量puts() 函数显示字符串,参数可以是字符数组或指针注意puts() 函数也是stdio.h 头文件里的输入输出函数,puts() 函数只显示字符串且自动在字符串末尾加上换行符。// strings1.c --使用字符串#include<stdio..原创 2021-03-23 11:22:29 · 108 阅读 · 0 评论 -
第十章数组和指针
title: 第十章 数组和指针author: HardyDragontags: C Notes第十章 数组和指针初始化数组float candy[365];初始化数组int days[] = {1,2,3};指定初始化器(C99)// designate.c -- 使用指定初始化器#include <stdio.h>#define MONTHS 12int main(int argc, char const *argv[]){ int da.原创 2021-03-22 23:14:22 · 95 阅读 · 0 评论 -
第九章函数
title: 第九章 函数author: HardyDragontags: C Notes第九章 函数函数原型即函数声明,函数调用,函数定义即明确指定函数要做什么。有些老编译器识别不了void返回值的函数,需要改为int。如果函数放到其他文件需要导入局部变量和全局变量形参和实参return返回值没有返回值的函数返回类型为void没有参数的函数声明应该使用void关键字。void print_name(void);递归:需要有终止递归的条件才不会无.原创 2021-03-22 23:13:44 · 102 阅读 · 0 评论 -
第八章字符输入输出和输入验证
title: 第八章 字符输入输出和输入验证author: HardyDragontags: C Notes第八章 字符输入输出和输入验证8.1 单字符IO:getchar和putchar8.2 缓冲区8.3 结束键盘输入8.3.1 文件、流和键盘输入8.3.2 文件结尾8.4 重定向和文件8.5 创建更友好的用户界面使用缓冲输入混合数值和字符输入8.6 输入验证8.6.1 分析程序8.6.2 输入流和数字8.7 菜单浏览8.8 关键概念8.9 本章小结8.10 复.原创 2021-03-22 23:13:17 · 181 阅读 · 0 评论 -
第七章C控制语句分支和跳转
title: 第七章 C控制语句:分支和跳转author: HardyDragontags: C Notes第七章 C控制语句:分支和跳转7.1 if语句7.2 if else语句7.2.1 介绍getchar()7.2.2 ctype.h 系列的字符函数7.2.3 多重选择else if7.2.4 else与if配对7.2.5 多层嵌套的if语句7.3 逻辑运算符7.3.1 备选拼写:iso646.h 头文件7.3.2 优先级7.3.3 求值顺序7.3.4 范围7.4.原创 2021-03-22 23:12:46 · 120 阅读 · 0 评论 -
第六章C控制语句循环
title: 第六章 C控制语句:循环author: HardyDragontags: C Notes第六章 C控制语句:循环6.1 再探while循环程序注释C风格读取循环6.2 while语句6.2.1 终止while循环何时终止循环while:入口条件循环语法要点6.3 用关系运算符和表达式比较大小6.3.1 什么是真6.3.2 其他真值6.3.3 真值的问题6.3.4 新的_Bool 类型6.3.5 优先级和关系运算符6.4 不确定循环和计数循环6.5 fo.原创 2021-03-22 23:12:14 · 496 阅读 · 0 评论 -
第五章运算符表达式和语句
title: 第五章 运算符、表达式和语句author: HardyDragontags: C Notes第五章 运算符、表达式和语句5.1 循环简介5.2 基本运算符5.2.1 赋值运算符:=±*/运算符优先级优先级和求值顺序5.3 其他运算符5.3.1 sizeof 运算符和size_t类型5.3.2 求模运算符:%5.3.3 递增运算符:++ 递减运算符:–优先级不要自作聪明5.4 表达式和语句5.4.1 表达式5.4.2 语句5.4.3 复合语句(块)5..原创 2021-03-22 23:11:33 · 226 阅读 · 0 评论 -
第四章字符串和格式化输入or输出
title: 第四章 字符串和格式化输入/输出author: HardyDragontags: C Notes第四章 字符串和格式化输入/输出4.1 前导程序4.2 字符串简介4.2.1 char类型数组和null字符4.2.2 使用字符串4.2.3 strlen()函数4.3 常量和C预处理器4.3.1 const限定符4.3.2 明示常量4.4 printf()和scanf()4.4.1 printf() 函数4.4.2 使用printf()4.4.3 printf().原创 2021-03-22 23:10:10 · 414 阅读 · 0 评论 -
第三章数据和C
title: 第三章 数据和Cauthor: HardyDragontags: C Notes第三章 数据和C3.1 示例程序3.2 变量和常量数据3.3 数据:数据类型关键字3.3.1 整数和浮点数3.3.2 整数3.3.3 浮点数3.4 C语言基本数据类型int类型其他数据类型使用其他字符:char类型_Bool类型可移植类型:stdint.h和inttypes.hfloat、double、和long、double复数和虚数类型其他类型类型大小3.5 使用数据.原创 2021-03-22 23:09:29 · 596 阅读 · 0 评论 -
第二章C语言概述
title: 第二章 C语言概述author: HardyDragontags: C Notes第二章 C语言概述2.1简单的C程序示例2.2 示例解释2.2.1 第1遍:快速概要2.2.2 第2遍:程序细节2.3 简单的程序结构2.4 提高程序可读性的技巧2.5 进一步使用C语言2.5.1 程序说明2.5.2 多条声明2.5.3 乘法2.5.4 打印多个值2.6 多个函数2.7 调试程序2.7.1 语法错误2.7.2 语义错误2.7.3 程序状态2.8 关键字和.原创 2021-03-22 23:08:25 · 146 阅读 · 0 评论 -
第一章初识C语言
title: 第一章 初识C语言author: HardyDragontags: C Notes第一章 初识C语言1.1 C语言的起源1.2 选择C语言的理由1.2.1 设计特性1.2.2 高效性1.2.3 可移植性1.2.4 强大而灵活1.2.5 面向程序员1.2.6 缺点1.3 C语言的应用范围1.4 计算机能做什么1.5 高级计算机语言和编译器1.6 语言标准1.6.1 第一个ANSI/ISO C 标准1.6.2 C99 标准1.6.3 C11标准1.7 使用.原创 2021-03-22 23:07:43 · 801 阅读 · 0 评论 -
C循环链表代码实现,主函数调用
C循环单链表代码实现,主函数调用引入了一个表头结点,同时循环单链表有表长以及表尾指针属性。表头结点不存放值,只存放指向第一个元素的指针域;同时表尾指针的next指向表头结点;即从链表任意位置出发都可以遍历完所有链表元素;#include <stdio.h>#include <stdlib.h>typedef int ListItem; // 表元素类型typedef ListItem *addr; // 表元素指针类型#define eq(A, B) (A原创 2021-02-06 13:47:11 · 566 阅读 · 0 评论 -
C间接寻址法实现表代码,主函数调用
C间接寻址法实现表代码,主函数调用结合了数组方便存取的优点以及指针实现表方便修改表元素的优点;将原来数组存储元素的值改为存储指向元素的指针,修改元素只需要修改指针指向的值即可,不需要在表内移动其他元素。#include <stdio.h>#include <stdlib.h> // malloctypedef int ListItem; // 表元素类型typedef ListItem *addr; // 表元素指针类型#define eq(A,原创 2021-02-03 14:55:21 · 247 阅读 · 0 评论 -
C递归实现合并两个有序单链表
C递归实现合并两个有序单链表发现力扣上有简洁的解法https://leetcode-cn.com/problems/merge-two-sorted-lists/comments//** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct List原创 2021-02-02 21:20:01 · 214 阅读 · 0 评论 -
C指针实现单链表,主函数调用
C指针实现单链表,主函数调用使用数组或者指针简单实现的表都有其不同的优缺点,例如数组的比较方便查询,不方便修改,指针的比较方便修改但不方便查询,同时需要额外空间存放指针……之后会有一种 间接寻址方法实现表 结合了以上两种方式的优点。#include <stdio.h>#include <stdlib.h>typedef int ListItem; // 表元素类型typedef ListItem *addr; // 表元素指针类型#define eq(A,原创 2021-02-02 14:26:02 · 1437 阅读 · 0 评论 -
C数组实现表,代码函数及主函数调用
C数组实现表,代码函数及主函数调用重点:位置和索引不用,位置比索引值多1;例如,表位置1 => 表的索引0;或者可以理解为位置是常人思维,索引是程序员思维;#include <stdio.h>#include <stdlib.h> // malloctypedef int ListItem; // 表元素类型typedef ListItem *addr; // 表元素指针类型#define eq(A, B) (A == B) // 元素相等原创 2021-02-01 14:33:28 · 263 阅读 · 2 评论 -
C描述数据结构
C描述数据结构1.指针的定义使用以及取地址符&使用#include <stdio.h>int main(int argc, char const *argv[]){ int *point = 0; int num = 10; point = # printf("*point value = %d.\n",*point); return 0;}result:*point value = 10.2.函数定义调用以原创 2021-01-24 14:58:55 · 121 阅读 · 0 评论 -
有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中
有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中#include "stdio.h"int main(){ FILE *fp; int i, j, n; char c[160], t, ch; if ((fp = fopen("a.txt", "r")) == NULL) { printf("file A cannot be opened\n"); } print原创 2021-01-23 22:27:12 · 2313 阅读 · 1 评论 -
C 结构体数组练习
C 结构体数组练习c++demo// 结构体数组练习#include <stdio.h>using namespace std;// typedef struct Node// {// int data;// Node *next;// } Node, *Linklist;struct Node{ int data; Node *next;};int main(int argc, char const *argv[]){原创 2020-12-27 22:27:23 · 295 阅读 · 0 评论 -
C typedef和struct的随笔
C typedef 和 struct的随笔推荐阅读 typedef关键字与结构体、结构体指针的定义typedef 相当于给基本的数据结构起了 花名、别名、小名;配合struct 还可以让初始化变量更简洁。下面简单使用typedef和struct,主要的区别就是初始化变量的不同,typedef少写一个struct。Book book;struct Car car;c++代码,有些结构体定义规范据说在c++可以在c不行。#include<stdio.h>using namesp原创 2020-12-27 22:11:49 · 99 阅读 · 0 评论 -
C文件指针操作
C文件指针操作第十三章 文件⒈ 考试内容⑴ 文件类型指针。⑵ 文件的操作。⒉ 考试要求⑴ 了解文件类型指针⑵ 掌握文件的打开与关闭、文件的读写方法。#include<stdio.h>#include <string>using namespace std;int main(int argc, char const *argv[]){ FILE *file_potiner = NULL; file_potiner = fopen("dat原创 2020-12-27 21:00:34 · 276 阅读 · 0 评论 -
C指针随笔2020/12/19
C指针随笔有关C指针的简单使用,最近想回顾一下,就写了一个小demo。#include <stdio.h>int main(){ int a[] = {1, 2, 3}; int *p; p = a; // array's name is address,point also printf("a[0] = %d\n", a[0]); printf("*p = %d\n", *p); printf("*(p+1) = %d\n", *(p +原创 2020-12-19 22:19:11 · 78 阅读 · 1 评论 -
Ubuntu 下cmake编译C程序简单流程
Ubuntu 下cmake编译C程序简单流程效果:将文件夹内的 demo.c 编译为可执行二进制文件新建一个项目文件夹,里面新建两个文件 CMakeLists.txt demo.cdemo.c#include <stdio.h>int main(){ printf("helloworld!"); return 0;}CMakeLists.txtcmake_minimum_required(VERSION 3.10)#project namePROJECT(原创 2020-12-05 21:32:45 · 2396 阅读 · 0 评论 -
编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数
#include <stdio.h>void count(char *string);int main(){ char string[] = "abc123 #$%"; count(string); return 0;}void count(char *string){ int a=0,b=0,c=0,d=0; while (*string!='\0') { /* code */ if ((*string>=原创 2020-11-05 20:02:08 · 12115 阅读 · 0 评论 -
输入3个正整数,按由大到小的顺序输出,要求使用指针实现
输入3个正整数,按由大到小的顺序输出,要求使用指针实现#include <stdio.h>// 输入3个正整数,按由大到小的顺序输出,要求使用指针实现。int main(){ int num1, num2, num3; printf("输入三个整数:\n"); scanf("%d%d%d", &num1, &num2, &num3); // printf("%d,%d,%d\n", num1, num2, num3); i原创 2020-12-02 19:53:50 · 15440 阅读 · 1 评论 -
以下函数的功能是删除字符串s中的所有大写英文字母
以下函数的功能是删除字符串s中的所有大写英文字母#include <stdio.h>// 以下函数的功能是删除字符串s中的所有大写英文字母void dele(char *s){ int n = 0, i; for (i = 0; s[i]; i++) if (!(s[i] >= 'A' && s[i] <= 'Z')) // 1 s[n++] = s[i]; s[n] = '\0'; // 2原创 2020-12-02 19:29:41 · 1629 阅读 · 1 评论 -
下面程序用变量count统计文件中字符的个数
下面程序用变量count统计文件中字符的个数#include <stdio.h>// 下面程序用变量count统计文件中字符的个数int main(){ FILE *fp; long count = 0; if ((fp = fopen("letter.dat", "r")) == NULL) // 1 { printf(" cannot open file\n"); // exit(0); } while原创 2020-12-02 19:22:31 · 2396 阅读 · 2 评论 -
求100至200间的全部素数。
求100至200间的全部素数。//求100至200间的全部素数。#include <stdio.h>int main(){ int i = 0; for (i = 100; i <= 200; i++) { int j = 0; for (j = 2; j <= i - 1; j++) { if (i % j == 0) break;原创 2020-12-02 11:37:09 · 6452 阅读 · 4 评论 -
输入三个字符串,按由小到大的顺序输出,利用指针实现。
输入三个字符串,按由小到大的顺序输出,利用指针实现。//输入三个字符串,按由小到大的 顺序输出,用指针来实现#include <stdio.h>#include <string.h>#include <stdlib.h>#define M 5int main(){ char a[M], b[M], c[M]; char *p, *q, *t; char x[M]; printf("请输入三个字符串:\n"); gets原创 2020-12-02 11:29:23 · 22403 阅读 · 5 评论 -
以下程序的功能是:输出a,b,c三个变量中的最大值,请填空
以下程序的功能是:输出a,b,c三个变量中的最大值,请填空#include <stdio.h>// 以下程序的功能是:输出a,b,c三个变量中的最大值int main(){ int a, b, c, t1, t2; scanf("%d%d%d", &a, &b, &c); t1 = a < b ? b:a; // t2 = c < t1 ? t1:c; // printf("%d\n", t2); re原创 2020-12-02 10:52:40 · 2024 阅读 · 0 评论 -
以下程序的功能是:在N行M列的二维数组中,找出最小值,以及最小值所在的行下标,请填空。
以下程序的功能是:在N行M列的二维数组中,找出最小值,以及最小值所在的行下标,请填空。#include <stdio.h>#define N 3#define M 3// 以下程序的功能是:在N行M列的二维数组中,找出最小值,以及最小值所在的行下标int main(){ int a[N][M] = {21, 11, 23, 6, 1, 15, 9, 17, 20}; int i, j, row = 0, min = a[0][0]; for (i = 0;原创 2020-12-02 10:45:18 · 2288 阅读 · 0 评论 -
编写一个程序将用户输入的由数字字符和非数字字符组成的字符串中的数字提取出来,请填空。
编写一个程序将用户输入的由数字字符和非数字字符组成的字符串中的数字提取出来,请填空。#include <stdio.h>// 编写一个程序将用户输入的由数字字符和非数字字符组成的字符串中的 数字提取出来int main(){ char str[20], *p; p = str; gets(str); for (; *p != '\0'; p++) if (*p > '0' && *p < '9')原创 2020-12-02 10:39:20 · 3217 阅读 · 1 评论 -
将一个4×3的二维数组a行和列互换,存到另一个3×4的二维数组b中,并将两个数组的数据输出
将一个4×3的二维数组a行和列互换,存到另一个3×4的二维数组b中,并将两个数组的数据输出#include <stdio.h>void printArr(int a[], int length){ int i; for (i = 0; i < length; i++) { printf("%d ", a[i]); } puts("\n");}// 将一个4×3的二维数组a行和列互换,存到另一个3×4的二维数组b中,并将两个数原创 2020-12-01 00:10:49 · 1398 阅读 · 0 评论 -
以下程序完成对一维数组Array进行冒泡排序(从大到小),请填空。
**注意**:是从大到小排序,交换的顺序需要注意,当前项小于后项时就交换,把大的放到前面。**冒泡排序:**外循环:数组长度 - 1内循环:数组长度 - 第几轮的外循环;当外循环初值为0时,需要再-1,因为下标为0时也是一轮排序,而 数组长度- 0起不到效果,需要数组长度 - 0 - 1原创 2020-11-30 23:56:19 · 1150 阅读 · 0 评论 -
下面程序段的功能是实现一趟快速排序,请在下划线处填上正确的语句
## 下面程序段的功能是实现一趟快速排序,请在下划线处填上正确的语句其中的函数参数s对应low指针,t对应high指针。具体代码解析查看这个视频:[https://www.bilibili.com/video/BV1nJ411V7bd?p=164](https://www.bilibili.com/video/BV1nJ411V7bd?p=164)答案出处:[https://www.nowcoder.com/questionTerminal/0c7fcaa6954741fd8349b9ea1ff6原创 2020-11-30 21:28:49 · 2923 阅读 · 2 评论 -
C数组实现二分查找(又名折半查找) 主函数调用
>注意:>使用二分查找必须是 **有序** 的对象,即先排序后二分查找。>平均时间复杂度: **O(log2n)** >思路:记录一个表的low、high、mid 查找 key 如果 key 大于 mid 下标的值就表明要查找的key 可能在 mid 的右边,将 low 变为 mid + 1;如果 key 小于 mid 下标的值 表明要查找的值可能在 mid 的左边,将 high 变为 mid - 1;当 low 大于 high 时跳出查找。原创 2020-11-26 17:37:18 · 485 阅读 · 0 评论 -
C链表实现基数排序 主函数调用
> **注意:**> 基数排序可以有低位/高位作为关键点,一般使用低位,高位的代码更加复杂。其平均时间复杂度为O(n*k)每次都要安利的排序可视化网站:[https://visualgo.net/en/sorting](https://visualgo.net/en/sorting)先上代码,由于基数排序一般使用链表来实现,所以需要提前使用结构体定义原创 2020-11-25 12:20:05 · 295 阅读 · 0 评论 -
C递归实现快速排序 主函数调用
> **注意:**> 快速排序的思路是 对一个子表取第一个作为初始 **支点** ,经过 **partition** 函数的排序后返回新的支点下标,排序后该子表的支点放在中间的合适位置(即支点左边的值小于支点,右边的值大于支点)。然后对左右子表递归调用 **partition** 函数进行排序,直到每一个子表长度为1时停止(这点和归并排序递归调用很像),排序便完成了。>快速排序的平均时间复杂度 : **O (nlogn)** , 体现了递归,分而治之的思想。原创 2020-11-24 17:05:00 · 806 阅读 · 0 评论