摘要:近期一直在学习python和批处理,来将工作中的手工操作的低效环节用脚本自动实现。已经实现了几个脚本。但是命令行窗口,总是不太友好,对执行结果的反馈也不清楚,就想实现可视化。在网上找到Python可视化的编程的一个方法,周末专心实现了一下,效果还行,算是有头绪了。http://blog.sina.c...
阅读全文
摘要:用python替换文件内容的方法,搜了网上许多例子,又请教了朋友。把完整的实现流程写一下,希望对大家有所帮助。要求:目标文件中有一个字段为no=x x为0、1、2……,将其替换为no=01 import re2 fobj = open("goal.ini", "r")3 f = re.sub("no...
阅读全文
摘要:在codecademy上学习python有一段时间。好像持续的时间太长,学习得太零碎,导致记忆不牢。学习之后,应该多少写些。函数要实现,输入两个字符串,第一个字符串中包含的第二个字符串用*代替,返回第一个字符串。def censor(text, word): temp = text.split...
阅读全文
摘要:《批处理在提高Windows管理效率中神奇应用》学习批处理自身信息::1.5::关于批处理文件自身的路径以及一些信息@echo offecho 获取批处理自身的完整路径echo %0echo 获取批处理自身的完整路径,并去掉首尾的引号echo %~0echo 获取批处理自身的文件名(不含后缀)ech...
阅读全文
摘要:今天第一次尝试使用Excel宏。 要实现的功能是:1个xls文件中,有2个工作表。判断工作表是否筛选,如果筛选清除筛选。然后将一个工作表中的数据,粘贴到另一个工作表下方。 尝试了录制宏,然后个修改其中的代码。整个过程中,遇到了一些问题,在网上找,并试验,解决了部分问题。1)判断工作表是否处于筛选模...
阅读全文
摘要:《批处理在提高Windows管理效率中神奇应用》学习::1.3::echo. 显示空行::数值范围循环的for循环@echo offecho Creating file0.txt ~ file99.txtecho.echo.:: for /l %%n in (0,1,99) /l表示for语句在指定...
阅读全文
摘要:转自CSDN。http://blog.csdn.net/hjune/article/details/292454为便于学阅读,做适当删减修改。例一、先给出一个最easy的批处理脚本,将下面的几行命令保存为name.bat,然后执行(以后文中只给出代码,保存和执行方式类似):ping sz.tencent.com > a.txtping sz1.tencent.com >> a.txtping sz2.tencent.com >> a.txtping sz3.tencent.com >> a.txtping sz4.tencent.com >>
阅读全文
摘要:这几天看MFC,头晕眼花,也觉得没有什么可以写的。 今天学习之余,看到一个面试题“1000个范围0-2000的数字,进行排序打印出来”。就想着实现一下。 第一步先要建立1000个范围确定的不重复随机数字数组。 建立数组的过程,首先想到在循环中随机数对范围取模,新生成的数字再与之前已经生成的数字进行比较,如果不重复,则放入数组,与已有数字重复,则重复操作。这样实现出来之后,效率非常低下,不能接受。 既然范围确定,可以先建立一个顺序数组作为待选数组,然后从其中不断挑选数字。挑选数字时,以随机数为下标。这样做因为随机数会出现重复,挑选出的数字也就会重复。 解决随机数字重复的问题比较困难...
阅读全文
摘要:微软基础类库(英语:MicrosoftFoundationClasses,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 ----维基百科对MFC的定义 上面的定义简单介绍了MFC,同时说出了MFC的一个优点——基于框架编程,减少工作量。其中还出现了一个词语“封装”,MFC封闭了大部分Windows API函数、数据结构、甚至是程序执行过程。 新建一个简单的MFC窗口...
阅读全文
摘要:一些基础的问题还是很有搞头的,单个循环实现九九乘法表。 第一次我的想法是用除9与模九来实现,这样做的结果是浪费了一半左右的计算。 1 #include 2 int main(void) 3 { 4 int i = 0, x = 0, y = 0; 5 for(i = 0; i 2 int main(void) 3 { 4 int x = 1, y = 1; 5 while(x < 10) 6 if (y <= x) 7 printf("%d*%d=%2d ", x, y++, x * y); 8 ...
阅读全文
摘要:Win32中的菜单、图标、光标、加速键、字符串资源,使用的过程有一致的地址。 1. 用VC制作出资源,或从外部加载资源。 2. 保存.rc文件. 将.rc resource.h 加入到工程中 3. 包含resource.h头文件 4. LoadXXX,加载资源。 菜单、光标、图标资源都可以在注册窗口类中使用。之后该窗口类创建的窗口都拥有这些资源。 图标资源还可以通过发送WM_SETICON消息使用。 光标资源可以通过SetCursor函数使用,该函数只能在WM_SETCURSOR消息处理中调用。WM_SETCURSOR消息在鼠标移动,并且鼠标没有被捕获的情况下...
阅读全文
摘要:在用到格式化I0可变域宽的时候,想到只用一个循环实现最初学c语言时的小练习,打印空心三角形,就实现了一下。 printf("%*d\n", m, n);*表示域宽,值由m确定。就由两个可变域宽实现两条边,遗憾的是顶点与底边还得单独实现。 1 // 只用一次循环,打印空心三角形 2 #include 3 int main(void) 4 { 5 size_t i = 0; 6 size_t n = 10; 7 char s[128] = "* *"; 8 printf("%*c\n", n, '*'); 9 for (i
阅读全文
摘要:C语言标准库中提供了一个快递排序函数——qsort()。qsort()采用快速排序算法,几乎能实现C语言范围内的一切类型排序。void qsort(void *base, size_t nmemb, size_t size,int(*compar)(const void *, const void *));qsort()函数需要提供待排序数组地址、数组元素个数、每个元素大小以及一个函数指针。qsort()在执行过程中会调用函数指针指向的函数,得到大小的评判标准,进行排序。 该函数指针的类型为int(*compar)(const void*, const void*)。有关类型处理的工作,...
阅读全文
摘要:内存分配,根据系统与编译器的不同,差别很大。 之前曾经发现在ubuntu12.04系统gcc 4.63版本编译器,先定义的局部变量在栈中地址低,而后定义的局部变量在栈中地址高,与认知有差别。试了多个系统与编译器,最后发现与linux发行版关系不大,而与gcc的版本有关。在gcc4.4.7版本和4.8.0版本中,栈中的内存地址分配“正常”。 今天又因为一个问题,对这个问题进行了进一步的探索。 试验之后,得到如下的大致结论。 gcc4.47ubuntu12.04环境中,在栈中定义多个变量时: 同类型的,单元素数组按单元素算。从高到低,从元素到数组(数组在低地址)。 不同类型...
阅读全文
摘要:二叉树,每个节点至多有两个子树。第n层节点总数不超过2^(n-1)。 有序二叉树,左子树中的数据比节点的数据小,右子树中的数据比节点不小。 二叉树的结构,可以方便的进行递归,将问题的规模减小。 对于有序二叉树,查找某个数据,与节点的值想比较,判断下次比较进入哪个子树,每次规模缩减一半。与二分查找有共通之处。 递归,函数自己调用自己。形象地说就是“将要做的事,就是正在做的事”。内联函数不能递归。
阅读全文
摘要:使用链表实现的队列,先进先初,压入弹出判空。 1 // 基于链表的队列 2 #include 3 using namespace std; 4 template 5 class Queue 6 { 7 public: 8 //在构造过程中初始化为空队列 9 Queue(void) : m_rear (NULL), m_front (NULL) {} 10 //在析构过程中销毁剩余节点 11 ~Queue(void) 12 { 13 for (Node* next; m_front; m_front = ne...
阅读全文
摘要:复习算法的时候,实然想用链表实现堆栈。就着手去写,顺便复习一下STL的内容。C++涉及的内容太多,折腾完VC及MFC,再回头,好像又不会了。今天是第一次贴完整的代码呢,不知道会不会有大神看到给指正指正。 1 //基于链式表的堆栈 2 #include 3 using namespace std; 4 class Student 5 { 6 public: 7 int m_no; 8 string m_name; 9 int m_age; 10 11 Student(int no, const string& name, int a...
阅读全文
摘要:向量是由一组元素封装而成的线性序列。向量是数组的抽象与泛化,元素类型可以灵活选取。向量使用连续的内存存储元素。一旦容量需要扩充,在紧临的后方再开辟一块内存(通常是倍增)。如果后方的内存不足,则寻找一块足够大的内存,开辟倍增的内存,再将原来的向量复制过来。 向量是连续内存,所以循秩访问非常方便,通过指针计算,可以一步到位。同时,也由于必须是连续内存,在其中插入与删除元素,需要对后续的元素全部进行移动,操作复杂。 列表采用动态储存策略。其中的元素称为节点。每个节点至少包含三个成员,数据、前指针和后指针。各节点通过指针相互联接,在逻辑上是一个线性结构。 与向量中紧密的内存排布不同,列表的内...
阅读全文
摘要:通过函数的返回值表示错误,之前已经大量使用过这种方法。这种方法因为有return,函数的右括号会被执行,对象可以正确地被析构。但是这种方法需要层层判断返回值,流程非常繁琐。在UnixC的源代码中,经常是返回值判断的代码比运行的代码还要多。 通过setjmp/longjmp远程跳转。C中的函数,一般是调用一次返回一次,而setjmp比较特殊,是调用一次,返回两次。longjmp也比较特别,是从一个函数是调用,而从另一个函数里返回。这两个函数相互配合,构成远程跳转,实现C中的错误集中处理。第一次调用setjmp时,会将进入函数时的环境信息,包括系统堆栈保存到一个jmp_buf缓冲区中,并返回...
阅读全文