开发者社区> 吴英强> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【C/C++学院】0723-32位与64位/调戏窗口程序/数据分离算法/内存检索/二分查找法/myVC

简介: <div> <h2> <span style="border-collapse:separate; font-family:'Times New Roman'; border-spacing:0px; font-size:14px"><span style="color:rgb(51,51,51); font-family:Helvetica,arial,freesans,clean,s
+关注继续查看

【送给在路上的程序员】

对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。

对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。

对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。

每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。

32位与64位

地址与内存的关系
4G = 4*1024M = 4*1024*1024k = 4*1024*1024*1024 Byte字节 = 2^32
32位,指针就是4个字节
#include <stdio.h>
void main()
{
       int num = 10;     
       printf("%p\n", &num);
       int *p = #
       printf("p=%d\n", sizeof(p));
       getchar();
}

调戏窗口程序

使用黑客工具, spy,找到//FindWindowA参数:窗口类名,标题

#include <stdio.h>
#include<stdlib.h>
#include<Windows.h>
 
/*
窗口隐藏的时候, 可以从任务管理器中,看到此进程已经运行,使用cmd命令中的命令,把进程结束掉
C:\Users\wuyingqiang>taskkill /f /im notepad.exe
成功: 已终止进程 "notepad.exe",其 PID 为 7556。
成功: 已终止进程 "notepad.exe",其 PID 为 1384。
成功: 已终止进程 "notepad.exe",其 PID 为 3572。
成功: 已终止进程 "notepad.exe",其 PID 为 5272。
成功: 已终止进程 "notepad.exe",其 PID 为 6212。
*/
void openCalc()
{     
       //int i=0;
       //for(i; i<5; i++)
       //{
       //    //system("calc");
       //    ShellExecuteA(0, "open", "calc", 0, 0, 1);
       //    //第一个参数是代表系统弹出
       //    //第二个参数是代表执行
       //    //第三个参数执行命令行
       //    //第四个,第五个默认0,
       //    //第六个参数,0代表窗口隐藏,1代表正常,3最大化,6最小化
       //    Sleep(2000);
       //}
       ShellExecuteA(0, "open", "calc", 0, 0, 1);
       Sleep(2000);
}
 
void closeCalc()
{
       system("taskkill /f /im calc.exe");//结束进程
}
 
void  moveCalc()
{
       int i=0;
       HWND  win;//指针,返回窗口的编号
       //FindWindowA参数:窗口类名,标题
       win = FindWindowA("CalcFrame", "计算器");//寻找计算器
       if (win == NULL) //空指针避免野指针
       {
              printf("计算器玩失踪");
       }
       else
       {
              printf("计算器找到");
       }
       //控制隐藏域显示
       //while (1)
       //{
       //    ShowWindow(win, SW_HIDE);//隐藏;
       //    Sleep(2000);
       //    ShowWindow(win, SW_SHOW);//显示;
       //    Sleep(2000);
       //}
      
       //for ( i = 0; i <= 1500; i += 10)
       //{
       //    SetWindowPos(win, NULL, i, 0, 300, 400, 1);//移动窗口
       //    Sleep(30);
       //}
       //for对角线移动
       for ( i = 0; i < 1500; i++)
       {
              SetWindowPos(win, NULL, i, i*9/16, 300, 400, 1);//移动窗口
              Sleep(50);
       }
}
 
void main()
{
       openCalc();
 
       moveCalc();
 
       Sleep(5000);
 
       closeCalc();
       system("pause");
}

数据分离算法

水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153

#include <stdio.h>
#include <stdlib.h>
void main()
{
       int i;
    for ( i = 100; i <= 999; i++)//遍历所有数据
       {
              int ge = i % 10;//取出个位
              int shi = i / 10 % 10;//取出10位
              int bai = i / 10/10;//取出百位
              //筛选
              if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i)//判断条件
              {
                     printf("%d^3+%d^3+%d^3=%d\n", ge, shi, bai, i);//打印
              }
       }
    printf("\n");
       getchar();
}

内存检索

植物大战僵尸游戏中,自动增加阳光。找到内存地址,编写dll,使用DllInject.exe工具进行注射。

二分查找法

保证查找之前,数据是排序的。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
  
void ShowArray(int a[], int n)
{
       for (int i = 0; i < n; i++)
       {
              printf("%d,", a[i]);
       }
       printf("\n");
}
 
void PaiXu(int a[], int n)
{
       for (int i = 0; i < n - 1; i++)
       {
              for (int j = 0; j < n - 1 - i; j++)
              {
                     if (a[j]>a[j+1])
                     {
                            int temp = a[j];
                            a[j] = a[j + 1];
                            a[j + 1] = temp;
                     }
              }
       }
}
//num为所要查找的数据,返回数组下标
int SearchFor(int a[], int n, int num)
{
       for (int tou = 0, wei = n - 1, zhong = (tou + wei) / 2; tou <= wei; zhong=(tou+wei)/2)
       {
              printf("\n开始查找%d,%d,%d", tou, wei, zhong);
              if (a[zhong] == num)
              {
                     return zhong;
              }
              else   if (a[zhong]>num)
              {
                     wei = zhong - 1;
              }
              else
              {
                     tou = zhong + 1;
              }
       }
}
 
int SearchWhile(int a[], int n, int num)
{
       int tou = 0;
       int wei = n - 1;
       int zhong = (tou + wei) / 2;
       while (tou <= wei)
       {
              printf("\n开始查找%d,%d,%d", tou, wei, zhong);
              if (a[zhong] == num)
              {
                     return zhong;
              }
              else   if (a[zhong]>num)
              {
                     wei = zhong - 1;
                     zhong = (tou + wei) / 2;
              }
              else
              {
                     tou = zhong + 1;
                     zhong = (tou + wei) / 2;
              }
       }
}
 
void main()
{
       int a[50] = { 0 };
       time_t ts;
       srand((unsigned int)time(&ts));//随机数种子
       for (int i = 0; i < 50; i++)
       {
              a[i] = rand() % 100;
              //printf("%d,", a[i]);
       }
      
       PaiXu(a, 50);
       ShowArray(a, 50);
 
       int num;
       printf("plesae input your find num:");
       scanf("%d", &num);  //扫描数据接收输入
       //int ret = SearchFor(a, 50, num);
       int ret = SearchWhile(a, 50, num);
       if (ret == -1)
       {
              printf("not find\n");
       }
       else
       {
              printf("find [%d]\n", a[ret]);
       }
       system("pause");
}


myVC

使用mfc打造自己的ide, 找到vs和codeblocks的路径中的bat批处理文件,通过单击按钮,使用system指令去调用这个bat批处理文件。

如D:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\ VsDevCmd.bat


|=========== 吴英强CSDN博客专栏==============|

|== C/C++学院 专栏文章的内容(不定期更新)===|

|== linux驱动开发 探索linux底层的奥秘 ==========|

|== Java基础学习篇 掌握java语言的基础知识=====|

|====== 每天进步一点点,健康快乐每一天 ========|



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
队列的存储结构的实现(C/C++实现)
存档 1 #include "iostream.h" 2 #include "stdlib.h" 3 #define max 20 4 typedef char elemtype; 5 #include "queue.
923 0
《测试驱动的嵌入式C语言开发》——2.3节CppUTest:一个用C++实现的自动化单元测试框架
本节书摘来自华章社区《测试驱动的嵌入式C语言开发》一书中的第2章,第2.3节CppUTest:一个用C++实现的自动化单元测试框架,作者:(美)James W. Grenning,更多章节内容可以访问云栖社区“华章社区”公众号查看
1452 0
C++函数模版实现
若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,那么就可以把这个程序改写成为模版,模版可以让程序对任何其他数据类型进行同样方式的处理。 本节主要是说一下C++的函数模版,函数模版的定义一般形式是: template  返回类型    函数名(形参) {     ...
1031 0
C++抽象类的实现
1、什么是抽象类? 答:简单的说,抽象类就是至少有一个纯虚函数的类。 2、抽象类的作用? 答:抽象类的主要作用就是为它所组织的继承层次结构提供一个公共的基类,这样它就具有公有行为的特征,其它派生的类可以从这个公共的基类中继承和实现接口,通过抽象类多态的使用其中的成员函数。
1018 0
C++纯虚函数实现
纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了“=0”,虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性,虚函数是可以有具体实现代码的。
843 0
C++友元类实现
C++中的友元既可以实现友元函数,也可以实现友元类,也就是说一个类也可以作为另外一个类的友元。当作为一个类的友元时,它的所有成员函数都是另一个类的友元函数,都可以访问另一个类的私有或者公有成员。 请看实例: #include #include using namespace std ; /...
913 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载