# c_example_program_postgraduate **Repository Path**: heron_ZYL/c_example_program_postgraduate ## Basic Information - **Project Name**: c_example_program_postgraduate - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-27 - **Last Updated**: 2024-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README p14 ```c #include void q4(){ printf("Hello, World!\n");return 0; }; void q5(){ // 输入三个数a b c 比大小选最大的 } ``` p17 [2.1] 求1*2*3*4*5 while循环的理解 ```c int main() { int target = 6,sum=0; while (--target) { sum*=target; } return 0; } ``` [2.2] 五十个学生输出八十分以上的学生和成绩 结构体 类型转换 WHILE IF ```c struct Student {int id;char name[20];}; struct Student arr[4] = {{1,"张三"},{1,"张三"},{1,"张三"},{1,"张三"}}; int main() { int target = sizeof(arr) / sizeof(struct Student),sum=0;target++; while (--target) {printf("%d-%s\n",arr[target-1].id,arr[target-1].name);} return 0; } ``` [2.3] 判断2000-2500年哪些是yun年 -> 能被四整除的是yun年 ```c a%4==0 ``` 核心代码在于判断是否能被4整除 [2.4] ![img.png](img.png) ```c int up,down,index=101; double sum=0.0; while(--index){ double tmp=up/down; if(index%2==0){ //偶 sum-=tmp; }else { //奇 sum+=tmp; } printf("%d\n", index); } ``` [2.5]P20 判断是否为素数 ```c int target=7,flag=0; int tmp=target; while(--target>1) {//大于1 把1排除 //除了1和他本身以外不能被任意一个数整除 if (tmp%target==0){ flag=1; } } printf("%d\n", flag);//是素数为0 return 0; ``` [2.6]求两个数m和n的最大公约数求解![img_11.png](img_11.png) ```c GCD: Greatest Common Divisor(最大公约数) LCM: Least Common Multiple(最小公倍数) 最大公约数(GCD): 两个或多个整数的最大公约数是能同时整除这些整数的最大整数。例如,对于 8 和 12,GCD 是 4,因为 4 是同时能整除 8 和 12 的最大数。 最小公倍数(LCM): 两个或多个整数的最小公倍数是能被这些整数整除的最小正整数。例如,对于 4 和 5,LCM 是 20,因为 20 是最小的可以被 4 和 5 整除的数。 ``` ```c int x, int y; int originX=x,originY=y; int z = y; while (x%y!=0){ z = x%y; x=y;// 最后输出的结果的x就是最大公约数 y=z; } int lcm = (originX*originY)/x//此处的x为gcd最大公约数 ``` [2.7]求ax^2 + bx +c = 0 的根,分别考虑 d = b^2 - 4ac 大于 0、 等于0 和 小于0这三种情况 求 ax^2 + bx +c = 0的根 (1)有两个不等的实根 (2)有两个相等的实根 [3.1]![img_2.png](img_2.png) [3.2]![img_3.png](img_3.png) [3.3]![img_4.png](img_4.png)] [3.4]![img_5.png](img_5.png) [3.5]还是那个b^2 -4AC的判别式 只不过这次要使用键盘输入处理abc三个变量 [4] ![img_6.png](img_6.png) 4.9.3 可以利用循环从下表0开始循环输出就实现字符串输入了 然后其他的使用sprintf把long 或者double转换成为str; 再利用这个方案通解 4.11利用冒泡排序完成 4.12 拿到 x y值保存到 一个结构体数组{INT , INT} ;然后利用欧几里得距离计算公式(二维坐标的就是三角公式求第三遍) 然后利用冒泡排序把最短距离筛选出来即可 [5.1]累加求和遍历求和 注意对数学符号的敏感程度 ![img_10.png](img_10.png) 求素数不被多少整除![img_7.png](img_7.png) [5.7]泰勒展开求Π的近似值 求近似值 ![img_8.png](img_8.png) 分子分母处理好循环两个参数 [5.8]递归斐波拉数列 ![img_9.png](img_9.png) [5] ##求特殊的数字(求完数】求水仙花数】求最大公约数和最小公倍数】求Π的近似值[5.7]) ![img_12.png](img_12.png) ![img_13.png](img_13.png) ![img_14.png](img_14.png) ![img_15.png](img_15.png) 11循环计算反弹距离和下落距离 12(剩余桃子+1)*2 从第10舔开始逆向推理一共摘了多少个循环解决 13 会使用递归来解决 或者循环 递归方程为x_(n+1) = 1/2 * (x_n + a/x_n) 截止条件为 x_(n+1) - x_n 要小于10^-5 这是一共精度问题 14牛顿迭代法递归公式为x_{n+1} = x_n - f(x_n)/f'(x_n) 知道目标的x为1.5左右截止递归 17 分组问题, 遍历所有组合 路径问题 求最优路径 [6] puts函数 gets函数 strcat函数 strncpy与strcpy函数 strcmp函数 sstrlen函数 strlwr strupr [6.8] ![img_19.png](img_19.png) P165输出杨辉三角形和魔方阵 ![img_20.png](img_20.png) P138 如何初始化二位数组 ![img_16.png](img_16.png) P152 初始化一个字符数组 ![img_18.png](img_18.png) 密码翻译P158 和 P189 ![img_21.png](img_21.png) ![img_22.png](img_22.png) [7.6]递归获得学生年龄 ![img_23.png](img_23.png) AGE(1)=10是截止条件 [7.7]递归求N! 递归的截止条件和继续条件 ![img_24.png](img_24.png) [7.8]递归hanoi问题(重点) 递归1到2 3当中间 然后利用调用递归函数 再递归2到3 1当中间 ![img_25.png](img_25.png) [7.13] 矩阵求最大值![img_26.png](img_26.png) [7] 进制转换 字符串转换 年月日转换天数 ![img_31.png](img_31.png) ![img_32.png](img_32.png) [8.8]指针实现回文数 指针遍历二维数组 指针遍历字符串 [8.16 18 20]指针操作字符串![img_33.png](img_33.png) ![img_34.png](img_34.png)![img_35.png](img_35.png) [8.22]指针操作函数 [8.23]利用函数指针实现定积分函数功能, 传递上限下限 还有函数指针本身来进行调用 ![img_36.png](img_36.png) ![img_37.png](img_37.png) 实现定积分的通用函数 [8.24]字符串从小到大输出 [8] 1、如何使用内存释放函数 malloc calloc realloc free ![img_40.png](img_40.png) 2、转置一个3*3的矩阵 3、实现对输入的字符串进行字数统计 小写字符多少个 大写字符多少 数字多少个 ![img_38.png](img_38.png) 4、自己实现一个strcmp函数 利用函数指针 ![img_39.png](img_39.png) []