C语言基础
文章平均质量分 58
C语言基础+进阶
小白的Soda
厚德弘毅,求是笃行。
展开
-
12指针与main函数
文章目录指针与main函数一、函数指针二、typedef 的用法三、main 函数参数 指针与main函数 一、函数指针 int (*add)(int, int); // 函数指针变量 typedef int (*add)(int, int); // 函数指针类型 二、typedef 的用法 内建类型的重命名:(与宏定义看着有相似之处,但是本质上是有差异的) typedef long long lint; // 给long long 取别名为 lint typedef char * pchar; 结构体类型原创 2021-10-31 18:49:46 · 115 阅读 · 0 评论 -
11复杂结构与指针
文章目录复杂结构与指针一、字符串二、字符串相关操作三、结构体四、共用体五、变量的地址六、等价形式转换 复杂结构与指针 一、字符串 定义字符数组:char str[size]; 初始化字符数组: char str[] = “hello world”; // sizeof(str)为12 char str[size] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’}; 字符串数组的大小需要比字符串大小大1,因为最后以为需要存储字符‘\0’; ‘a’ —> 97, ‘A’ —> 65, ‘0’原创 2021-10-31 14:49:33 · 84 阅读 · 0 评论 -
10预处理命令
文章目录预处理命令一、宏定义二、预定义宏三、条件式编译四、预处理命令 预处理命令 一、宏定义 定义符号常量: #define PI 3.1415926 #define MAX_N 10000 定义傻瓜表达式: #define MAX(a, b) (a) > (b) ? (a) : (b) #define S(a, b) a * b 定义代码块: #define P(a) { \ printf("%d\n", a); \ } " \ " 表示连接符,一行代码最好不要超过 80 个字符,超过的原创 2021-10-23 19:46:26 · 119 阅读 · 0 评论 -
09二分查找
文章目录二分查找一、折半查找(二分查找) 二分查找 一、折半查找(二分查找) 前提:当前待查找元素具有单调性 min 是头指针;max 是尾指针;mid = (min + max)/ 2 调整: (终止条件:min > max) 如果 arr[mid] < x, min = mid + 1 如果 arr[mid] > x, max = mid - 1 如果 arr[mid] == x, 找到结果 随堂练习-1 请完成如下函数,实现一个数组 arr 中查找数字 x 是否原创 2021-10-18 21:36:43 · 78 阅读 · 0 评论 -
08线性筛算法
文章目录线性筛算法一、线性筛 线性筛算法 一、线性筛 标记一个范围内的数字是否是合数,没有被标记的就是素数 算法的空间复杂度为 O(N), 时间复杂度为 O(N) 总体思想是用一个整数 M 去标记合数 N,其中 N 和 M具有如下性质: N 中最小的素数为 p N 可以表示成为 p * M p 一定小于等于 M 中最小的素因子 利用 M * P’ (所有不大于 M 中最小素因子的集合)标记 N1, N2, N3… 线性筛实例代码: #include <stdio.h> #define原创 2021-10-10 22:02:31 · 191 阅读 · 0 评论 -
07数组与预处理命令
文章目录数组与预处理命令一、数组声明与初始化二、素数筛 数组与预处理命令 一、数组声明与初始化 数组可以理解为相同类型变量的集合。 数组声明: 类型 数组名[数组大小]; 如:int b[2]; 数组声明并初始化:类型 数组名[数组大小] = {数组内容初值}; 如:int b[2] = {3, 5}; 数组的访问按下标进行访问,数组下标从 0 开始。 变量可以用 sizeof(变量名) 函数来获取变量所占内存空间大小。数组在内存上所占的是一片连续的空间。数组支持随机存储和随机访问。数组名可以代表数原创 2021-10-09 00:09:52 · 202 阅读 · 0 评论 -
06扩展欧几里得&简版printf函数实现
文章目录扩展欧几里得&简版printf函数实现一、扩展欧几里得二、简版 printf 函数实现 扩展欧几里得&简版printf函数实现 一、扩展欧几里得 欧几里得算法可以快速求解 a * x + b * y = 1 方程的一组整数解。 当 b = 0 时,可得 a * x = 1,当 a = 1,x = 1,y = 任意值 时满足条件。欧几里得算法最后一步也是 b = 0 时,返回 a 的值。求解一组解的过程与欧几里得算法的流程类似,属于递归和回溯的应用。 #include <stdi原创 2021-10-07 18:55:32 · 58 阅读 · 0 评论 -
05函数Part-2
文章目录函数_Part2一、PE-05 欧几里得算法二、变参函数 函数_Part2 程序 = 算法 + 数据结构 程序设计 = 算法 + 数据结构 + 编程范式 一、PE-05 欧几里得算法 又名辗转相除法 迄今为止已知最古老的算法 用于快速计算两个数字的最大公约数 还可以用于快速求解 a * x + b * y = 1 方程组的一个解 算法其实是一种聪明人的做事方法。 gcd(a, b) ==> gcd(b, a % b) #include <stdio.h> int gcd(in原创 2021-10-06 19:22:04 · 89 阅读 · 0 评论 -
04函数part-1
文章目录函数_Part1一、函数说明二、 K & r 风格的函数定义三、递归程序四、函数指针 函数_Part1 代码封装函数的好处:提高了代码的可读性,且能有效降低 bug 率,简化思维逻辑。 一、函数说明 函数的声明:通俗的来说就是宣布一个声明 :int is_prime(int x); 函数的定义:通俗的来说就是实现一个功能 int is_prime(int x) { for (int i = 2; i <= x / 2; ++i) { if (x % i == 0) {原创 2021-10-05 18:54:32 · 85 阅读 · 0 评论 -
03流程控制
文章目录C语言-流程控制一、C语言关系运算符二、分支结构1. if 语句(选择语句)2. switch 语句三、循环结构1. while 循环2. for 语句 C语言-流程控制 一、C语言关系运算符 运算符 说明 例子 == 等于 a == b != 不等于 a != b <、> 小于和大于 a > b, a < b <=(=<)、=>(>=) 小于等于和大于等于 a <= b, a >= b ! 非 !(0)、!原创 2021-10-01 12:07:36 · 192 阅读 · 0 评论 -
02数学运算
文章目录C语言-数学运算一、C 语言基本运算符二、C语言中的数学函数1)pow 函数说明2)sqrt 函数说明3)ceil 函数说明4)floor 函数说明4)abs 函数说明5)fabs 函数说明6)acos 函数说明 C语言-数学运算 一、C 语言基本运算符 运算符 说明 例子 = 赋值运算符 a = b; +、-、*、/、() 基本四则运算 a = (b + c) * d; % 求余运算 a = b % 2; &、|、^、~ 位运算 a = ~ b | c; &原创 2021-10-01 07:58:40 · 129 阅读 · 0 评论 -
01入门基础
文章目录**C语言入门基础**一、汇编与C语言二、输出函数说明三、输入函数说明 C语言入门基础 学习参考手册:cppreference 一、汇编与C语言 开发效率、程序可移植性。 最简单代码示例: #include <stdio.h> int main() { printf("Hello World!"); return 0; } C 语言的缺点:执行效率低于汇编 编程范式:面向过程。 C++ 编程范式:面向过程、面向对象、泛型编程、函数式编程。 二、输出函数说明 printf原创 2021-10-01 07:56:21 · 59 阅读 · 0 评论