自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

理工科的杜小甫的博客

博客用于分享求职前的历程

  • 博客(117)
  • 收藏
  • 关注

原创 函数与指针

1、用函数指针调用函数指针变量可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。int max(int x,int y); //函数声明int(*p)(int,int); //定义指向函数的指针变量pp = max; //使p指向函数m

2016-07-19 18:52:04 542

原创 C++抽象类

如果声明了一个类,一般可以用它定义对象。但是在面对对象程序设计中,往往有一些类,它们不用来生成对象。定义这些类的唯一目的就是用它作为基类去建立派生类。抽象类是为了抽象和设计的目的而建立的,处于继承层次结构的上层。具体类是能够建立对象的类。抽象类的规定(1)抽象类只能用作其他类的基类,不能建立抽象类对象。(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。(3)可以定义指向抽象类的指针和引用,

2016-07-19 18:33:58 1456

转载 static说明

static 声明的变量在C语言中有两方面的特征:   1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。   2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips:   A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

2016-07-19 18:05:26 545

原创 快速排序(完整程序c语言实现)

键码序列(66,13,51,76,81,26,57,69,23)进行快速排序。 求第一趟划分后的结果。 关键码序列递增。 以第一个元素为划分基准。 【主要方法步骤】如下: 将两个指针i,j分别指向表的起始和最后的位置。 反复操作以下两步: (1)j逐渐减小,并逐次比较j指向的元素和目标元素的大小,若p(j)#include<stdio.h>#include<stdlib.h>void

2016-07-16 21:57:09 3103

原创 替换子字符串(将字符串中的某个子字符串替换为给定的字符串)

#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>int replace_sub_str(const char *str,const char *substr,char *repstr,char *result){ const char *p,*q,*re,*temp1; //

2016-07-11 11:00:00 2515

原创 用指针求出字符串的长度

#include<stdio.h>void strle(char str[]){ char *p; int len = 0; p = str; while(*p) { len++; p++; } printf("%d",len);}void main(){ char str[20] = "abcd"

2016-07-10 17:04:31 3774 1

原创 关于华为的一道笔试题(传值和传引用)

#include <stdio.h> #include <stdlib.h> void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL; getmemory(str);//等于getmemor

2016-07-07 12:05:22 608

转载 什么是预编译?何时需要预编译?

什么是预编译:预编译又称为预处理 , 是做些代码文本的替换工作。 处理以# 开头的指令 , 比如拷贝 #include 包含的文件代码,#define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段。主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。C 编译系统在对程序进行通常的编译之前,首先进行预处理。 c 提供的预处理功

2016-07-07 11:19:27 19429 2

原创 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;

#include<stdio.h>int strcmp(char *source, char *dest){ int m,n,i,flag; m = strlen(source); n = strlen(dest); if(m!=n) flag = -1; if(source==NULL&&dest==NULL) { fl

2016-07-07 11:10:29 1886

原创 替换空格(c语言完整版程序)

题目:请实现一个函数,把字符串中的每个空格替换为“20%”。例如输入“we are happy”,则输出“we20%are20%happy”;#include<stdio.h>#include<stdlib.h>#include<string.h>void replaceBlank(char string[],int len){ int oriLen = 0; //oriLen

2016-07-06 19:57:38 1894

原创 二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。#include<stdio.h>#include<stdlib.h>void Find(int *matrix,int rows,int columns,int number){ int row = 0; in

2016-07-06 19:01:17 332

原创 函数的重载、覆盖和隐藏

1、重载和覆盖 成员函数被重载的特征: (1) 相同的范围(在同一个类中)。 (2) 函数名字相同; (3) 参数不同; (4) virtual关键字可有可无; 覆盖是指派生类函数覆盖基类函数,特征是: (1) 不同的范围(分别位于派生类与基类) (2) 函数名字相同; (3) 参数相同; (4)基类函数必须有 virtual关键字; 2

2016-07-06 15:07:02 256

原创 什么是hashtable,如何解决hash冲突

哈希函数:在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。 哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象。可写成:addr(ai)=H(ki) ,其中i是表中一个元素,addr(ai)是ai的地址, ki是ai的关键字。 哈希表:应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫哈希表。 哈希查找(又叫

2016-07-05 20:36:54 3693

转载 【Eclipse使用方法】Eclipse中安装插件的三种方式

在线安装:以TestNG的安装为例来阐述其安装过程。第一步:点击菜单栏中“Help”菜单,在下拉列中选择“Install New Software…”.此时会弹出“install”的安装框。第二步:在弹出的“install”框,选择之前已经建立好的site,如果没有建立好,则可以点击“Add”按钮,弹出一个添加site的对话框,在该框中的Name属性后面给该site起一个别名,在location属性

2016-07-02 08:49:41 12103 2

转载 c语言指针的初始化和赋值

1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思。 例如: int a = 25; int *ptr = &a; int b[10]; int *point = b; int *p = &b[0];如果:int *p

2016-07-01 09:41:55 769

原创 串定位运算(完整程序)

在一个字符串中定位子字符串的位置。#include<stdio.h>#include<string.h>#include<assert.h>int locate(const char *mainString,const char *childString){ int i,j,k; int m = strlen(mainString); int n = strlen(ch

2016-06-30 19:52:11 1263

原创 整数转化为字符串数(完整程序)

#include<stdio.h>#include<stdlib.h>#include<string.h>void main(void){ int num = 12345,i = 0, j = 0; char temp[7],str[7]; while(num) { temp[i] = num%10 + '0'; num = num/

2016-06-30 18:45:42 403

原创 希尔排序(ShellSort程序完整版)

#include<stdlib.h>#include<stdio.h>void ShellSort(int *data,int left,int right){ int len = right - left + 1; int i; int d = len; while(d > 1) { d = (d + 1)/2; for

2016-06-30 17:36:31 942

转载 Java堆和栈的区别

Java堆和栈的区别 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先

2016-06-25 12:09:28 270

转载 java的三大特性——封装

三大特性之—封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以

2016-06-25 09:56:42 299

转载 Java并发(1)-基础概念

这是将是一系列关于Java并发基础知识的文章。事实上,主要是《实战Java高并发程序设计》的读书笔记和网络资料以及对它们的整理。相关概念 1.同步Synchronous和异步Asynchronous 同步和异步通常是用来形容一次方法调用。所谓同步,就是在发出一个”调用”时,在没有得到结果之前,该”调用”就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由”调用者”主动等待这个”调用”的结

2016-06-25 09:37:38 1399

转载 Java堆内存

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆的内存模型大致为:

2016-06-25 09:14:02 258

翻译 线程模型的综述

本文首先介绍了一些线程基础,比如并发、并行、内存分配、系统调用、POSIX线程。接着通过strace分析了线程与进程的区别。最后以Android、Golang等线程模型进行了分析。基础 1. 什么是并发(Concurrent),什么是并行(Parallels)? 并发指同时进行多个计算任务。 并行指通过切换时间片模拟进行多个计算任务。 OS下的内存分配、用户区与内核区 在32位的Linux操

2016-06-25 09:07:03 331

翻译 开源Java EE框架 JBoss Seam 详细介绍

摘要:JBoss Seam是“Java EE 5.0的一个轻量级的框架”。这是什么意思?难道Java EE(Enterprise Edition) 5.0本身不是一套“框架吗”?为什么在官方规范之外,还需要另外一个框架?好吧,我们就将seam看作是本应该被包括在Java EE 5.0中的一个“遗漏的框架”吧。它在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于

2016-06-25 08:24:09 6871

原创 求一个数组中满足2^N的个数

#include<stdio.h>#include<stdlib.h>#include<string.h>int func(int a[],int length){ int i; int count; count = 0; for(i = 0;i<length;i++) { if(0==(a[i]&(a[i] - 1)))

2016-06-24 20:47:49 402

原创 Java开源UML建模

ArgoUML 使用java编写的开源UML产品,功能比较全。最受欢迎的UML建模工具。 Alma Alma是一个软件建模分析的工作平台,它读取几种不同的源代码,帮你设计面向对像的模型,修改结构和源代码,输出新的源代码、文档和图表。UMLet UMLet是一个开放源代码轻量级UML建模工具。UMLet能够让你快速建模,并且能够导出各种格式SVG, JPG, PDF and LaTeX-frien

2016-06-24 17:58:18 4994

原创 连续字符统计(如AABBBCDD, A2B3C1D2)

#include<stdio.h>#include<stdlib.h>#include<string.h>void func(char *p,int length){ //char *s; //p = s; //q = s;//s = (char*)malloc(length*sizeof(char*));//memcpy(s,p,length*sizeof(char*

2016-06-24 15:46:22 875

翻译 JDBC介绍(详细版)

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数 据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易 的事。

2016-06-24 14:10:45 15186 2

原创 求一个二维数组中每列的最小值

#include<stdio.h>#include<stdlib.h>void fun(int a[3][4],int row,int column){ int i,j,k; int m[4]; for(i = 0;i<column;i++) { m[i] = a[0][i]; //int temp = 0; for(j = 0;j<r

2016-06-24 12:14:01 9101 2

翻译 Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

目前在Java中用于解析XML的技术很多,主流的有DOM、SAX、JDOM、DOM4j,下文主要介绍这4种解析XML文档技术的使用、优缺点及性能测试。一、【基础知识——扫盲】sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无法解析xml文档的;jaxp只是api,它进一步封装了sax、dom两种接口,并且提供了DomcumentBuilderFactory/D

2016-06-24 10:16:51 1401

翻译 Java解析XML

用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API (Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。 JAXP接口包含了三个

2016-06-24 10:13:05 405

翻译 Java开源xml操作类库

Xerces Xerces是由Apache组织所推动的一项XML文档解析开源项目,它目前有多种语言版本包括JAVA、C++、PERL、COM等。JDOM JDOM是一种面向Java的读、写和操作XML文档的API。JDOM 与现行的SAX 和DOM标准兼容,为Java 程序员提供了一个简单、轻量的XML文档操作方法。由于JDOM是专门为Java 程序员开发的,所以采用许多Java语言的优秀特性,比如

2016-06-24 10:08:19 1857

原创 将一个“1234”的字符串转化为1234整形

首先要介绍的就是字符’0’到‘9’转化为数字0~9就是字符去减‘0’得到的就是数字的值。 其区别就是在于ASCII值不同,计算机内部数值0的ASCII值是0,字符0的ASCII值是0x30(10进制是48)程序如下:#include<stdio.h>#include<stdlib.h>int func(char *s){ //int i = 0; int sum = 0; while(

2016-06-23 21:05:30 22360

原创 栈的链式存储表示

1 栈的链式表示 栈的链式存储结构称为链栈,是运算受限的单链表。其插入和删除操作只能在表头位置上进行。因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针。图3-4是栈的链式存储表示形式。链栈的结点类型说明如下:typedef struct Stack_Node{ ElemType data ;struct Stack_Node *next ;}

2016-06-23 17:34:16 735

原创 栈的动态顺序存储表示

采用动态一维数组来存储栈。所谓动态,指的是栈的大小可以根据需要增加。 ◆ 用bottom表示栈底指针,栈底固定不变的;栈顶则随着进栈和退栈操作而变化。用top(称为栈顶指针)指示当前栈顶位置。 ◆ 用top=bottom作为栈空的标记,每次top指向栈顶数组中的下一个存储位置。 ◆ 结点进栈:首先将数据元素保存到栈顶(top所指的当前位置),然后执行top加1,使top指向栈顶的下一个存储位置

2016-06-23 17:30:48 2375

原创 栈的静态顺序存储表示

采用静态一维数组来存储栈。 栈底固定不变的,而栈顶则随着进栈和退栈操作变化的, ◆ 栈底固定不变的;栈顶则随着进栈和退栈操作而变化,用一个整型变量top(称为栈顶指针)来指示当前栈顶位置。 ◆ 用top=0表示栈空的初始状态,每次top指向栈顶在数组中的存储位置。 ◆ 结点进栈:首先执行top加1,使top指向新的栈顶位置,然后将数据元素保存到栈顶(top所指的当前位置)。 ◆

2016-06-23 17:16:51 1043

原创 栈的应用之数制转换

十进制整数N向其它进制数d(二、八、十六)的转换是计算机实现计算的基本问题。转换法则:该转换法则对应于一个简单算法原理: n=(n div d)*d+n mod d 其中:div为整除运算,mod为求余运算 例如 (1348)10= (2504)8,其运算过程如下: n n div 8 n mod 8 1348

2016-06-23 17:09:20 1215

原创 判断手机号码是否合法(完整实现程序)

问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、 长度13位;2、 以86的国家码打头;3、 手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1) 如果手机号码合法,返回0;2) 如果手机号码长度不合法,返回13) 如果手机号码中包含非数字的字符,返回2;4) 如果手机号码不是以86打头的,返回3;【注】除成

2016-06-23 15:58:35 7675

原创 约瑟夫环(c语言程序完整版)

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct Node{

2016-06-23 12:16:49 49755 5

原创 线性表(顺序表)的逆置(完整程序)

#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status;typedef int ElemType;typedef struct sqlist{ ElemType Elem_array[MAX_SIZE]; int length;

2016-06-22 15:31:40 13964

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除