- 博客(123)
- 收藏
- 关注
原创 新字体的永久注册
CString GetCurrentModuleDir(){ TCHAR szPath[MAX_PATH + 1] = { 0 }; if (0 == ::GetModuleFileName((HMODULE)&__ImageBase, szPath, MAX_PATH)) return L""; ::PathRemoveFileSpec(szPath); CString...
2018-12-10 16:53:19 1452
原创 简易解包程序
对压缩包进行解压。简易压缩程序请参考博客的另外一篇文章: http://blog.csdn.net/yi_ming_he/article/details/77689405解包方式: 根据打包建立的索引表,找到对应的文件信息,逐个释放出来即可。使用方法: 1.可以直接运行UnpacketFiles.exe进行解包,只需要把files.pak文件放入和UnpacketFiles.exe同一级目录即
2017-08-29 23:07:01 6045
原创 简易文件打包程序
对指定目录下面的文件进行打包。打包方式: 把目录下面的文件名,文件大小,偏移位置,文件内容,以索引形式保存在打包文件中使用方法:1.packetfiles.exe为打包程序 2.运行时使用管理员权限 3.可以直接运行packetfiles.exe进行打包,只需要把需要打包的文件放在与packetfiles.exe同一级的input目录即可(如果没有该目录需要手动创建在把文件扔进去),生成的打包
2017-08-29 23:01:16 1346
原创 内部函数和外部函数
内部函数:如果一个函数只能被本文件中其它函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。内部函数又称静态函数。使用内部函数,可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其它文件中函数同名。外部函数:在定义函数时,如果在函数首部的最左端冠以关键字extern, 则表
2017-07-11 23:46:25 18572
原创 自定义CString类
问题描述:自定义一个CString类,包括获取字符串长度,字符串查找,字符串比较,字符串取子串等都自己来实现。参考代码:MyString.h文件#pragma once#include <iostream>#include <assert.h>#include <stdarg.h>class CMyString{ friend std::ostream& operator<< (std
2017-07-11 23:29:04 15843
原创 自己实现strcat函数
问题描述:自己实现一个MyStrcat函数,要和C语言库函数的strcat函数完成同样的功能。问题分析: 首先我们要了解一下strcat函数它到底做了什么事情(1) 函数原型 char *strcat(char *dest, const char *src);(2) 函数说明dest 为目的字符串指针,src 为源字符串指针。strcat() 会将参数 src 字符串复制到参数 dest 所
2017-07-06 21:41:55 38669 4
原创 根据进程名判断进程是否运行
问题描述:给定进程名,判断该进程是否正在运行。参考代码:#include <TlHelp32.h>BOOL IsProcessRunning(LPCTSTR lpProcessName){ if (NULL == lpProcessName) return FALSE; HANDLE hProcess = NULL; HANDLE hProcessSn
2017-06-30 22:55:45 15901
原创 根据目录路径递归创建目录
问题描述:给定一个目录路径,如果该路径不存在则创建出来。参考代码:void CorrectPath(CString& strPath){ strPath.Replace(_T('/'), _T('\\')); do { if (strPath.Find(_T("\\\\")) == -1) break; strPath.
2017-06-30 22:18:06 16880
原创 排序算法之堆排序
问题描述:输入一个原始数列,把它进行升序排序,从小到大输出。例如:给定数列如下: 5 15 99 45 12 1 90 19 33 41排序后的结果为: 1 5 12 15 19 33 41 45 90 99堆排序的基本思想是,建立一棵完全二叉树,不断调整这棵二叉树,保持这棵二叉树一直是一个大顶堆。参考代码:#include <stdio.h>int arr[100], n;void Adj
2017-06-07 22:58:54 10592
原创 结构体内存对齐问题
问题描述:结构体内存对齐问题值直接的体现就是计算结构体的sizeof占用的字节数。结构体内存对齐的几个原则,有了这几个原则,不管结构体里面是什么元素,我们都能够正确算出sizeof值(以VS2013为例)原则1: 结构体中每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。原则2: 在原则1的基础上,检
2017-06-06 23:02:11 11269
原创 空瓶换汽水问题(难度:1颗星)
问题描述:超市规定每n个空汽水瓶可以换一瓶汽水,小李有m个空汽水瓶,最多可以换几瓶汽水(提示:可以先喝汽水,再还超市空瓶,但是一定要还哦)输入输出描述:n和m由外部输入的正整数,并且保证n的范围是【2,10000000】,m的范围是【1,10000000】,输出最多喝了多少汽水。问题分析:要求出最多喝了多少汽水,其实就是需要我们想到一种策略,能够尽可能的用完手中的空瓶,例如,如果我们手中有n-1个空
2017-06-04 17:21:33 12499
原创 约瑟夫环问题(二):(难度:2颗星)
问题描述:编号为1,2,…,n的n个人按顺时针方向围坐一圈,任选一个正整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报道m时停止报数.报m的人出列,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止,输出最后一个出列的人的编号。输入输出描述:m和n由用户输入,并且保证m和n的范围是【1,10000000】,输出最后出列的编号。问题分析:为了方便说明,我
2017-06-04 17:02:09 15888
原创 约瑟夫环问题(一)(难度:1颗星)
问题描述:编号为1,2,…,n的n个人按顺时针方向围坐一圈,任选一个正整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报道m时停止报数.报m的人出列,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序.PS:m和n由用户输入,并且保证m和n的范围是【1,1000】,输出出列序列。问题分析:因为这个是要求出所有的出列序列,所以目前
2017-06-04 16:14:26 12768 2
原创 文件内容合并
问题描述:把file1和file2的文件内容合并到file3。PS: 主要用到3个函数:fopen,fgetc,fputc。参考代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#define FILEPATH1 "C:\\1.txt"#define FILEPATH2 "C:\\2.txt"#define FILEPATH3 "C:\\
2017-06-03 18:58:59 10909
原创 括号匹配检测(难度:半颗星)
问题描述:输入一个字符串,字符串中只包含两种字符:’(‘和’)’,判断字符串的括号是否匹配,如果匹配输出YES,否则输出NO。例如: (())是匹配的 ()))是不匹配的参考代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stack>std::stack<char>st;int
2017-06-03 18:13:07 14013
原创 单链表排序(函数指针)
问题描述:用户输入数据,构成单链表,然后对单链表进行排序,能够随意切换排序的方法(列入升序降序)。PS:要随意切换排序的方法,那么使用函数指针作为参数传入到排序函数中,那么函数指针指向的函数就可以方便的制定排序规则了。参考代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <malloc
2017-06-03 17:54:33 14064
原创 虚拟按键的判断方法
问题描述:判断CapsLock,Alt,Ctrl,Shift是否被按下参考代码:#include <stdio.h>#include <windows.h>int main(){ while (1) { short sValue = GetKeyState(VK_CAPITAL); if (sValue & 0x1)//该值低位位1,则表示Caps
2017-06-03 17:22:28 13874
原创 可逆素数(难度:半颗星)
问题描述:可逆素数是指该数本身是一个素数,并且把该数倒过来也是一个素数。例如:1091是一个素数,把它倒过来1901也是一个素数,所以我们就说1091是一个可逆素数(同理1901也是一个可逆素数)输出所有范围在【1000,9999】并且各位数之和是11的整数倍的可逆素数。参考代码:#include <stdio.h>int IsPrime(int n){//判断n是否为质数,如果是返回1,否则返回
2017-06-03 16:00:53 19370 2
原创 学生管理系统(控制台版本)
问题描述:设计开发一个基于控制台版本的学生管理系统,该系统支持以下功能:打印数据库中的所有信息录入信息到数据库根据输入关键字,删除数据库中的某个同学的信息清空数据库根据输入关键字,查询数据库中某个同学的信息根据输入关键字,修改数据库中某个同学的信息对学生信息进行排序系统说明:本系统暂时不用STL库中的vector或者list,而是自己用结构体实现链表本系统暂时不用已经成熟的数据库
2017-06-03 13:42:24 16250
原创 求解同余方程组(难度:2颗星)
问题描述:有一个同余方程组,有N个同余方程组成(N由用户输入),另外每个同余方程的a[i]和m[i]也又用户指定,如下所示:x≡a[1](mod m[1]) x≡a[2](mod m[2]) x≡a[3](mod m[3]) x≡a[4](mod m[4]) … x≡a[n](mod m[n])求x的最小正整数解。问题分析:参考我的另外一篇文章“中国剩余定理” http://b
2017-06-02 22:43:09 14856 1
原创 中国剩余定理
问题描述:有如下同余方程组:x≡a[1](mod m[1]) x≡a[2](mod m[2]) x≡a[3](mod m[3]) x≡a[4](mod m[4]) … x≡a[n](mod m[n])根据同余方程组求出x的值。(其中m[1],m[2],m[3],m[4]…m[n]两两互素)问题分析:中国剩余定理就是专门用来解同余方程组的,但是必须要满足前提条件所有的模都是两两互素的。首先计
2017-06-02 22:28:42 13539
原创 求解二元一次方程(难度:2颗星)
问题描述:用户输入a,b,c三个整数,求解二元一次方程ax+by=c,如果(x,y)不存在整数解,则输出“No Solution”,否则输出一个整数解(x,y)使得x是最小正整数。解题思路:参考我的另外一篇文章“扩展欧几里得算法”http://blog.csdn.net/yi_ming_he/article/details/72819713参考代码:#include <stdio.h>typedef
2017-05-31 18:29:59 15266
原创 扩展欧几里得算法
问题描述:求解二元一次方程ax+by=c。问题分析:上述的二元一次方程可以用同余方程来进行描述:ax≡cmod(b)两个问题可以进行转换,但是都可以用扩展的欧几里得算计来解决。首先关于欧几里得算法(也叫做辗转相除法),可以查看我的另外一篇文章: http://blog.csdn.net/yi_ming_he/article/details/72084826下面就来说说如何用扩展欧几里得算法求解二元
2017-05-31 13:52:44 13327
原创 自守数(难度:半颗星)
问题描述:如果一个数n是一个自守数,它必须满足如下条件: 1. 如果n有k位数构成,那么n的平方的末尾k位数必须和n相等例如: 25是一个自守数,因为 25 * 25 = 625,并且25等于625后面两位25输出【1,10000】范围内的自守数。参考代码:#include <stdio.h>int main(){ int i, num, temp, factor; for
2017-05-30 18:56:49 13686
原创 亲密数对(难度:半颗星)
问题描述:输出【1,100000】范围内的错有亲密数对。如果说n和m是一个亲密数对,那么它们必须满足以下条件 1. n的全部因子之和(不包括n)必须等于m 2. m的全部因子之和(不包括m)必须等于n例如: 220的全部因子之和为: 1+2+4+5+10+11+20+22+44+55+110=284284的全部因子之和为: 1+2+4+71+142=220所以220和284是一对个亲密数对
2017-05-30 18:45:45 24574 4
原创 等差数列(难度:半颗星)
问题描述:一个等差数列的前4个数之和是26,前4个数之积是880,输出这个等差数列的前10项。问题分析:设等差数列的首项为i,公差为j,那么等差数列的和与积分别可以表示为: sum=4 * i + 6 * j product = i * (i + j ) * (i + 2 * j) * (i + 3 * j)参考代码:#include <stdio.h>#include <math.h>int
2017-05-30 18:19:23 12037
原创 一数三平方(难度:半颗星)
问题描述:在【100000,999999】范围内找出符合以下条件的数并输出: 1. 该数本身是一个平方数 2. 该数的前3位也是一个平方数 3. 该数的后3位也是一个平方数参考代码:#include <stdio.h>#include <math.h>int main(){ int i, num0, num1, num2; for (i = 100000; i < 99
2017-05-30 17:59:11 12066
原创 特殊完全平方数(难度:半颗星)
问题描述:在【100,10000】的范围内找出所以满足以下条件的数并输出 1. 这个数是一个完全平方数 2. 这个数中某个数字出现的次数大于1次参考代码:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int i, n, temp; int IsExist[10] = { 0 }, Is
2017-05-30 17:39:43 11934
原创 二进制转IP地址(难度:半颗星)
问题描述:任意数组32位的二进制数,转换成IP地址的形式输出。输入样例: 11111111000000001111111100000001输出样例: 255.0.255.1参考代码:#include <stdio.h>#include <stdlib.h>#include <time.h>int GetExponential(int a, int n)//求a的n次幂{ if (n
2017-05-30 17:23:44 11768
原创 分糖果问题(难度:1颗星)
问题描述:有n颗糖果,平均分给班上m个同学(m保证大于1),学生们按照任意顺序领取(反正大家数目都一样),第一个领取的是1颗加上剩余糖果数目的1/10,第二个领取的是2颗加上剩余数目的1/10,第三个领取的是3颗加上剩余数目的1/10,第四个领取的是4颗加上剩余数目的1/10,以此类推,求总共有多少糖果,班上有多少同学(如果有多个满足条件的答案,去n最小的那个)。问题分析:第一个同学取得的数目为:1
2017-05-30 16:54:37 12388
原创 自己实现strcpy函数
问题描述:自己实现一个MyStrcpy函数,要和C语言库函数的strcpy函数完成同样的功能。问题分析: 首先我们要了解一下atoi函数它到底做了什么事情(1) 函数原型 char *strcpy(char *dest, const char *src);(2) 函数说明dest 为目标字符串指针,src 为源字符串指针,该函数把src所指的由NULL结束的字符串复制到dest 所指的数组中
2017-05-30 14:40:32 13076
原创 生成连连看地图(难度:1颗星)
问题描述:输入m和n(保证m*n是偶数),生成一个m*n的二维矩阵,其中用数字1-5来表示不同的图案,需要满足每一个数字在矩阵中出现的次数为偶数,并且是随机的。问题分析:为了要保证每个数字都是随机的,肯定要用到srand函数为了要每个数字在矩阵中出现的次数是偶数,并且要控制进行的次数,最后是先产生矩阵个数的一半,然后另外一个复制前面一半的值,这样就可以保证偶数的条件在做完第二步之后,我们需要进
2017-05-30 14:29:40 12759
原创 尼克切斯定理(难度:2颗星)
问题描述:根据尼克切斯定理的描述,任何一个正整数N的立方都可以写成一串连续奇数的和,根据该定理,我们输入一个N(N的范围是【2,1000】),输出N的立方所有能够满足的等式(连续奇数序列的长度必须大于1才输出)。输入样例: 5输出样例: 5 * 5 * 5 = 125 = 21 + 23 + 25 + 27 + 29首先我们先分析一下这个问题: 1. 假设n 的立方等于cube,并且cube
2017-05-27 18:52:16 13895 1
原创 哥德巴赫猜想(难度:1颗星)
问题描述:哥德巴赫猜想的一种描述是,大于4的正偶数(我们假定1不是质数)都能分解成两个质数之和,我们假设这个猜想成立,我们现在输入一个大于4的正偶数N,输出所有能够满足哥德巴赫猜想的等式。(其中N的范围是【4,100000000】)输入样例: 100输出样例: 100 = 3 + 97 100 = 11 + 89 100 = 17 + 83 100 = 29 + 71 100 = 41
2017-05-27 18:09:18 11522
原创 输出三角形面积和类型(难度:半颗星)
问题描述:输入三条边的边长,如果这三条边可以构成三角形,输出三角形的面积(保留到小数点后6位)和类型,否则输出“不能构成三角形”PS:从上到下依次检测三角形的类型,只要有一个满足后面不用再检测了,直接输出即可:等边三角形 等腰三角形 直角三角形 普通三角形参考代码#include <stdio.h>#include <math.h>int main(){ double a, b,
2017-05-27 17:27:44 11277
原创 求a的b次幂的最后3位(难度:1颗星)
问题描述:输入a,b,其中a和b的范围是【2,999999999】,求出a的b次幂的最后3位。PS: 如果最后三位是001,那么输出1就可以了。问题分析:这个问题的实际上是求a的b次幂mod 1000的结果,把这个问题一般化,实际上是a的b次幂mod n的结果。(X*Y)%Z=((X%Z)*(Y%Z))%Z 根据蒙格马利快速幂模算法,我们可以方便求解,下面举个例子。2^7:2*2*2*2*2*2
2017-05-27 17:05:11 15970
原创 打渔晒网问题(难度:1颗星)
问题描述:如果1个渔夫从2011年1月1日开始每3天打一次渔,两天晒一次网,编程实现当输入2011年1月1日之后的任意1天,输出该渔夫是在打渔还是在晒网。输入样例 2011 5 5输出样例 晒网参考代码:#include <stdio.h>int arr[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int IsLeapYea
2017-05-27 15:56:23 11256
原创 这一天是星期几(难度:1颗星)
问题描述:输入1个日期,日期的格式由3个正整数组成(正整数之间用空格分开),输出这一天是星期几,如果日期不合法,比如:2008 1 32(这个就不合法,因为天数超过了1月的最大天数31),直接输出“输入日期无效”,否则输出这一天是星期几。输入举例:2017 1 1输出结果: 星期天参考代码:#include <stdio.h>int arr[] = { 0, 31, 28, 31, 30, 31,
2017-05-27 15:42:16 10755
原创 自己实现fmod函数
问题描述:自己实现一个MyFmod函数,要和C语言库函数的fmod函数完成同样的功能。问题分析: 首先我们要了解一下fmod函数它到底做了什么事情(1) 函数原型 double fmod (double x, double y);(2) 函数说明fmod() 用来对浮点数进行取模(求余)(3) 返回值 返回取模后的结果res,res的绝对值一定会小于y的绝对值根据以上的描述,我们可以来实
2017-05-27 09:57:59 16995
原创 自己实现atoi函数
问题描述:自己实现一个MyAtoi函数,要和C语言库函数的atoi函数完成同样的功能。问题分析: 首先我们要了解一下atoi函数它到底做了什么事情(1) 函数原型 int atoi (const char * str);(2) 函数说明atoi函数会扫描参数 str 字符串,跳过前面的空白字符(下面会解释空白字符),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0’
2017-05-27 09:40:11 15029
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人