
C
文章平均质量分 52
我是py呀
py_学习,发布一些我在学习中遇到的问题和经验总结,大家一起学习呀~
展开
-
递归讲解与递归实现列表的反转
递归:特点:当一个复杂的问题可以分解为几个(最简单的就是一个)相对简单的且与原来问题解法相同或者类似的子问题来求解,便称为递归求解。:递归工作栈与递归过程:在高级语言中,调用函数与被调用函数之间的链接及信息交换需要通过栈来进行。字数太多,我们直接上图:递归算法的效率分析:时间复杂度: 大致为O(2^n) (斐波那契以及汉诺塔问题)空间复杂度: O(f(n)) ,f(n) 为递归工作栈中记录的个数与问题规模n的函数关系。分治法:一种分解-求解的策略,叫做分治法,用来求解递归原创 2021-04-01 18:13:59 · 3514 阅读 · 0 评论 -
模拟python底层数据类型,大整数的实现!
我们参考C源码的逻辑,试着用python去模拟一下大整数的实现,这里 只实现了加减法的操作。(感谢作者的专栏,收获很大,参考 慕课网:《Python 源码深度剖析》)(1)类: Int32()这是设计出来的,用来模仿 int类型 4字节的整形数据。定义了加减乘除4个基本运算利用数据描述器,对数据进行限制。最大的取值只有 -2 **31 到 2 **31 -1当运算结果大于 这个范围,便会抛出异常,提示你 整数溢出提供一个转换函数,当结果取值大时, 转换为 大整数类型进行计算(PyLongO原创 2021-03-10 16:52:18 · 893 阅读 · 0 评论 -
静态链表和动态链表的创建使用 C语言与python实现
题目,以录入三个学生的成绩,学号为目的,创建链表(1)C语言(静态链表)// 静态链表/* 所以的节点都是在程序中定义的,不是临时开辟的, 也不能在用完后释放空间,这种称为静态链表*/# include <stdio.h>// 声明结构体struct Student{ long int num; float score; struct Student * next; // next 指针};int main(){ //原创 2021-02-01 10:59:10 · 482 阅读 · 0 评论 -
汉诺塔问题(Hanoi) C语言与Python实现
上 题目与分析:截取自C语言书籍中,详细的题目描述及解题分析C语言实现:尝试过自己解题,但是始终还是琢磨的不是很到位。总结一下主要是有两点(1) 去发现规律,想着去用递归,然后如何代码实现递归(2) 其中 叙述的 A B C,三个塔, 有两个过程, (1)A 借助 B 向 C ,(2) B 借助 A 向 C。 都可以抽象为 一个借助 另一个,向 另另一个三者的关系~ 这也将两种情况抽象的实现为一种,一个函数解决,我没想到这样下面是书中的解题代码// 汉诺塔问题#inclu原创 2021-01-20 13:32:14 · 326 阅读 · 0 评论 -
输出魔方阵,C语言与Python实现
上题目就是横竖斜的值相加相等规律:1.第一行中间一列的值为1。所以用j=n/2+1确定1的列数,得出a[1][j]=1。2.每一个数存放的行比前一个数的行数减1,列数加1。行数用i=i-1确定,列数用j=j+1确定。3.如果一个数行数为第一行,则下一个数行数为最后一行。4.如果一个列行数为最后一列,则下一个数列数为第一列。5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。解法:利用二维数组表示实现将上述五原创 2021-01-19 20:12:47 · 1549 阅读 · 1 评论 -
超细节讲解杨辉三角!C语言与Python实现
33原创 2021-01-18 21:22:50 · 407 阅读 · 1 评论 -
输出菱形图案C语言与Python实现
上题目:要求, 输入菱形的宽 n,表示最宽地方的 * 个数,例如下图 n = 7C语言实现技巧:(1) 将菱形(如上图)分开为 上三角形,和倒三角形实现。(2) 分别找到 每行输出 空格 与 * 号的规律#include<stdio.h>int main(){ int n, m, c, i; printf("请输入*号的个数,代表菱形宽度:\n"); scanf("%d", &n); //打印上三角形 for(i=1; i<= (n + 1)原创 2021-01-17 20:53:46 · 1293 阅读 · 2 评论 -
水仙花数C语言与python版
水仙花数就是 100-1000 以内的三位数,例如:153 = 111 + 555 + 333 这样的数叫做水仙花数。C语言实现过程很简单,穷举,一个一个数字的循环试// 水仙花数#include <stdio.h>#include <math.h>int main(){ int b, s, g; for(int num = 100; num < 1000; num++) { b = num/100; s = num/10%10; g原创 2021-01-17 13:26:47 · 362 阅读 · 1 评论 -
翻译密码(简单的 大小写英文字母后移四位,其他字符不变)C语言与Python版本
题目及分析上图片~~~c语言实现(利用ASCLL码)// 译密码: 使用ASCLL码,转换#include <stdio.h>int main(){ // 1. 首先接收字符,我把它定义为 str,因为输出类似一个字符串 char str; printf("请输入要进行转换的一段话(英文字母加字符:)\n"); str = getchar(); while (str != '\n') { // 2. 判断是否为 a-z,A-Z ,不是就不动 if ((st原创 2021-01-16 17:18:46 · 4216 阅读 · 3 评论 -
斐波那契数列实现C与python版
Fibonacci数列:就是前两个数为1, 从第三个数字开始,该数字是前两个数字得和。c语言实现很简单,就是设置三个变量,依次循环,第三个变量等于前两个变量的和。// c语言实现斐波那契数列:计算第n个斐波那契数的值#include<stdio.h>int main(){ int n; long int f1=1, f2=1, f3; printf("请输入想要的斐波那契数(n>=3):\n"); scanf("%d", &n); for(int原创 2021-01-16 15:06:08 · 607 阅读 · 1 评论 -
素数判定C语言与python
题目:对任意一个大于3的数,判断它是否是素数分析:(1) 素数:除了1和本身,不能被任何其他数整除(2) 假设数字是 n, 只用检测是否被 2 ~ n/2 整除即可(甚至是只需要判断到 2~根号n)。C语言解题第四步写起来还是比较乱的,要判断定 3,4,5 这几个小的数字。仅个人思路写法并且要注意类型转换 (int)n/2#include<stdio.h>// 素数判定int main(){ // 1.获取n的值 int n, i; print原创 2021-01-15 11:19:16 · 215 阅读 · 2 评论