- 博客(37)
- 收藏
- 关注
原创 Python练习题(三)
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码:x2 = 1for day in range(9,0,-1): ...
2018-06-08 11:50:33 671
原创 Python练习题(二)
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n大于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n, 重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,...
2018-06-05 15:10:54 1015
原创 Python练习题(一)
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再取掉不满足条件的排列。 2.程序源代码:for i in range(1,5): for j in range(1,5): for k in range(1,5): if(i !...
2018-06-01 16:33:12 1652
原创 Python应用总结
Python 阿姆斯特朗数如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。以下代码用于检测用户输入的数字是否为阿姆斯特朗数。num = int(input("请输入一个数字:"))sum = 0...
2018-05-31 11:32:13 780
原创 python实例练习
Python 判断闰年year = int(input('请输入一个年份:'))if(((year % 4 == 0) and (year % 100 != 0))or(year % 400 == 0)): print("{0}是闰年".format(year))else: print("{0}不是闰年".format(year))python质数判断nu...
2018-05-30 10:54:17 1626
原创 Python简单示例
Python数字求和通过用户输入两个数字,并计算两个数字之和:num1 = input("输入第一个数字:")num2 = input("输入第二个数字:")sum = float(num1) + float(num2)print('数字{0}和数字{1}相加结果:{2}'.format(num1, num2, sum))用一句代码进行改写输入:print('两数之和...
2018-05-29 14:58:39 3731
原创 pickle 序列化实现一个简单联系人信息管理
import pickleimport osdatafile = 'person.data'line = '======================================='message = '''=======================================Welcome bookmark: press 1 to show list ...
2018-05-28 09:58:45 398
原创 绘制四叶草图案
类初探import turtledef draw_shapes(): window = turtle.Screen() window.bgcolor(“red”)flower = turtle.Turtle()flower.speed(10)flower.shape("arrow")flower.right(45)for i in range(1,37):...
2018-05-11 11:00:30 8478
原创 支持异步通知的globalfifo驱动
前言驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。一 驱动方面在设备抽象的数据结构中增加一个struct fasync_struct的指针
2017-11-13 20:46:30 798 1
原创 Linux内核模块
1.Linux内核模块简介Linux内核如此之大,如何将需要的部分包含在内核中。把需要的功能编译到Linux内核中。这样会产生两个问题,一生成的内核很大,二如果在现有的内核中新增或者删除功能,将重新编译内核。Linux提供一种机制,称为模块(Module)。其具有特点是模块本身不被编译入内核映像,从而控制内核的大小。模块一旦被加载,就和内核中的其他部分相同。2.Linux内核模块程序结构(1)
2017-11-02 10:09:46 179
原创 Linux 设备驱动的重点、难点
Linux 设备驱动的重点、难点1.Linux学习重点和难点● 编写 Linux 设备驱动要求工程师有非常好的硬件基础,懂得 SRAM、 Flash、 SDRAM、磁盘的读写方式,UART、 I2C、 USB 等设备的接口以及轮询、中断、 DMA 的原理,PCI 总线的工作方式以及 CPU 的内存管理单元( MMU)等。 ● 编写 Linux 设备驱动要求工程师有非常好的 C 语言基础,能灵活地运
2017-11-02 09:46:08 967
原创 成员函数调用
#include<iostream>using namespace std;class MyCircle{public: double m_r;//半径 double m_s;//面积 double m_s = 3.14*m_r*m_r; /*double getS() { m_s = 3.14*m_r*m_r; ret
2016-11-13 12:12:40 352
原创 汉诺塔
#include<stdio.h>#include<stdlib.h> /*如果N=1 直接将A柱子上的盘子从A移动到C否则 先将A柱子上的N-1个盘子借助C移动到B 直接将A柱子上的盘子从A移动到C 最后将B柱子上的N-1个盘子借助A移动到C*/void hannuota(int n, char x, char y, char z){ if (
2016-11-12 13:01:14 252
原创 实现read文件
read#include <unistd.h>ssize_t read ( int fd, // 文件描述符 void* buf, // 缓冲区 size_t count // 期望读取的字节数);成功返回实际读取的字节数(0表示读到文件尾),失败返回-1。read.c文件 创建read.txt文件 1 好好学习Linux编译运行后: tar
2016-09-05 20:32:32 425
原创 malloc、realloc、calloc之间区别
C语言跟内存分配方式 1.从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量. 2.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. 3.从堆上分配,亦称动态内存
2016-09-05 09:32:07 357
转载 函数调用约定与名字修饰约定
在Windows下,由于很多语言支持动态链接库技术,因此动态链接库是一种很好的混合编程方法。语言对函数的约定有两种:函数调用约定和名字修饰约定。不同语言默认的调用调用约定和函数的命名方式是不同的,要想不同的语言开发的动态链接库能够相互调用,那么开发动态链接库的语言和调用链接库的语言的函数约定必须相同,同时在编译时函数的修饰名也必须一样。 1.函数调用约定 调用约定决定了函数参数传送时入栈和出
2016-09-03 19:43:14 463
原创 SPI、UART和IIC区别
SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 I2C:一种串行传输方式,三线制 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用同步异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这
2016-09-02 23:55:25 978
原创 堆栈
进程映像程序是保存在磁盘上的可执行文件。运行程序时,需要将可执行文件加载到内存,形成进程。一个程序(文件)可以同时存在多个进程(内存)。进程在内存空间中的布局就是进程映像。从低地址到高地址依次为:代码区(text):可执行指令、字面值常量、具有常属性的全局和静态局部变量。只读。数据区(data):初始化的全局和静态局部变量。 有初值,直接存在程序文件中。BSS区:未初始化的全局和静态局部变
2016-08-31 09:53:04 290
原创 环境变量函数
环境变量函数#include <stdlib.h>环境变量:name=valuegetenv - 根据name获得value。putenv - 以name=value的形式设置环境变量, name不存在就添加,存在就覆盖其value。setenv - 根据name设置value,注意最后一个参数表示, 若name已存在是否覆盖其value。
2016-08-30 23:39:28 387
原创 注释转换
代码如下:.h 文件#define _CRT_SECURE_NO_WARNINGS#ifndef __CMOMMENT_COVERT_H__#define __CMOMMENT_COVERT_H__#include<stdlib.h>#include<stdio.h>typedef enum CONVERT_STATE{ NULL_STATE, C_STATE, CPP
2016-08-30 00:17:21 470
原创 51单片机的几种精确延时
实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 今天主要介绍软件延时,关于硬件延时,之后定时器部分再做详细说明。首先介绍单片机的几个周期在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称
2016-08-29 23:43:27 98084 7
原创 函数
实现四个函数:slen() - 求字符串的长度,若为空指针,则报错。scpy() - 字符串拷贝,考虑缓冲区溢出, 成功返回目标缓冲区地址, 目标缓冲区无效时报错。intmin() - 求两个整数的最小值,若二者相等,则报错。intave() - 求两个整数的平均值,考虑求和溢出, 该函数不会失败。#include <s
2016-08-27 20:32:30 582
转载 Linux必学的60个命令
Linux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重
2016-08-26 23:04:55 722
原创 Linux中粘滞位
Linux粘滞位使用粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对目录设置,对于目录内文件有效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般于/tmp目录,以防止普通用户删除或移动其他用户的文
2016-08-26 17:47:43 657
原创 Linux进程之task_struct结构体
进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件
2016-08-25 18:16:45 831
原创 Linux下find查找命令用法
Linux下find命令在目录结构中搜索文件,并执行指定的操作。1.命令格式:find pathname -options [-print -exec -ok ...]2.命令功能:用于在文件树中查找文件,并作出相应的处理3.命令参数:pathname: find命令所查找的目录路径。例如用 . 来表示当前目录,用 / 来表示系统根目录。 -
2016-08-23 21:17:38 808
原创 Linux文件的三种时间属性
在windows下,一个文件有:创建时间、修改时间、访问时间。而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后,状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,
2016-08-22 16:48:24 319
转载 C++面试题
1.关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
2016-08-20 14:21:58 612
原创 模拟实现strstr
目的实现string字符串中查找子字符串strCharSet;思路:1.遍历整个长串,然后找到与短串相同的位置,并且记录这个位置2.与短串依次次比较,若在后面某个位置不相同了,这时候,将刚在记录的长串的位置后移一位继续比较;若一直都相同,则返回刚才记录的位置3.如果长串遍历都没找到,则返回NULL#include#includeconst char
2016-06-05 20:34:16 522
原创 类的成员函数
类的默认成员函数:构造函数,拷贝构造函数,析构函数,赋值操作符重载,取地址操作符重载,const修饰的取地址操作符重载1.构造函数:是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译 器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初始值。classTime{public: //
2016-05-31 15:01:59 803
原创 与C不同之处——引用
引用:与C语言不同之处,c++这门语言多了一个用法——引用(&)void swap(int l, int r){int temp = l;l = r;r = temp;}在C语言中要想实现两个数的调用必须进行传址调用,但是还是上面的代码可以交换两个形参,但是并没有交换实参,只是进行了一份临时拷贝,并没有影响到实参,因此并没有发生交换。我们在c语言中通常进行传址调
2016-05-28 23:51:56 1437
原创 计算机存储的大端小端问题
1.大小端定义: 大端:一个数字的低位放在高地址处,高位放在地址地处。 小端:一个数字的低位放在低地址处,高位放在高地址处。2.程序实现:指针方式int sys_check(){ int a=1; char *p=(char *)&a; if(*p==1) return 1;//小端 else
2016-04-25 21:32:35 291
原创 数组与指针的sizeof大小
1.sizeof定义sizeof运算符,以字节为单位给出数据大小strlen()函数,以字符为单位给出字符串长度sizeof(int)求类型大小,必须带括号sizeof(b=a+2)其中表达式不计算sizeof(a)求变量大小2.sizeof与数组int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//16 一个整形四个字节,四个元素 p
2016-04-16 16:30:09 1396
原创 字符数组逆置
字符数组"student a am i"逆置成“i am a student”,不能使用库函数#includeint my_strlen(const char *str){if (*str != '\0')return 1 + my_strlen(str + 1);elsereturn 0;}int main(){char *str = "abcdef"
2016-04-07 20:26:38 612
原创 const、static关键字
一、const 1.定义const只读变量,具有不可变性 const 修饰的只读变量必须在定义的同时初始化。 原因:在定义的时候就把它的内存空间给限制死了,要是不初始化,那块区域永远就是那个样子。(C语言规定) case语句后面是否可以是 const修饰的只读变量呢? case后边只能跟的是常量,不能是变量。 2.节省空间,避免不必要的内存分配,提高效率
2016-04-05 13:21:21 275
原创 菱形的大小调节
1.对于菱形的输出我在谭浩强那本书里看到就是直接用printf();直接打印每一行确定好要输出的菱形数量就可以,但是这样做只适合小一点的,对于较大的就不好控制,也比较麻烦,对于输出的大小可变的可以采用以下程序进行实现。int main(){int n = 0;int i = 0;scanf("%d",&n);//输入n来调节菱形的大小for(i = 0;i{i
2016-04-04 21:51:54 647
原创 数组的那些事
1.输出数组的最大最小数#includeint main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int Max = arr[0];int Min = arr[1];int i = 0;for (i = 0; i {if (Max {Max = arr[i];}if (Min > arr[
2016-04-03 21:26:21 233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人