【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语言的基础知识=====|

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



目录
相关文章
|
9天前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
38 15
|
9天前
|
存储 算法 数据处理
公司局域网管理中的哈希表查找优化 C++ 算法探究
在数字化办公环境中,公司局域网管理至关重要。哈希表作为一种高效的数据结构,通过哈希函数将关键值(如IP地址、账号)映射到数组索引,实现快速的插入、删除与查找操作。例如,在员工登录验证和设备信息管理中,哈希表能显著提升效率,避免传统线性查找的低效问题。本文以C++为例,展示了哈希表在局域网管理中的具体应用,包括设备MAC地址与IP分配的存储与查询,并探讨了优化哈希函数和扩容策略,确保网络管理高效准确。
|
27天前
|
机器学习/深度学习 算法 搜索推荐
联邦学习的未来:深入剖析FedAvg算法与数据不均衡的解决之道
随着数据隐私和数据安全法规的不断加强,传统的集中式机器学习方法受到越来越多的限制。为了在分布式数据场景中高效训练模型,同时保护用户数据隐私,联邦学习(Federated Learning, FL)应运而生。它允许多个参与方在本地数据上训练模型,并通过共享模型参数而非原始数据,实现协同建模。
|
27天前
|
存储 程序员 编译器
玩转C++内存管理:从新手到高手的必备指南
C++中的内存管理是编写高效、可靠程序的关键所在。C++不仅继承了C语言的内存管理方式,还增加了面向对象的内存分配机制,使得内存管理既有灵活性,也更加复杂。学习内存管理不仅有助于提升程序效率,还有助于理解计算机的工作原理和资源分配策略。
|
7天前
|
资源调度 算法 数据可视化
基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF
本项目基于MATLAB2022A实现IEKF迭代扩展卡尔曼滤波算法的数据跟踪仿真,对比EKF和UKF的性能。通过仿真输出误差收敛曲线和误差协方差收敛曲线,展示三种滤波器的精度差异。核心程序包括数据处理、误差计算及可视化展示。IEKF通过多次迭代线性化过程,增强非线性处理能力;UKF避免线性化,使用sigma点直接处理非线性问题;EKF则通过一次线性化简化处理。
|
20天前
|
算法 图形学 数据安全/隐私保护
基于NURBS曲线的数据拟合算法matlab仿真
本程序基于NURBS曲线实现数据拟合,适用于计算机图形学、CAD/CAM等领域。通过控制顶点和权重,精确表示复杂形状,特别适合真实对象建模和数据点光滑拟合。程序在MATLAB2022A上运行,展示了T1至T7的测试结果,无水印输出。核心算法采用梯度下降等优化技术调整参数,最小化误差函数E,确保迭代收敛,提供高质量的拟合效果。
|
18天前
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
21 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
25天前
|
存储 移动开发 算法
【狂热算法篇】解锁数据潜能:探秘前沿 LIS 算法
【狂热算法篇】解锁数据潜能:探秘前沿 LIS 算法
|
25天前
|
安全 C语言 C++
彻底摘明白 C++ 的动态内存分配原理
大家好,我是V哥。C++的动态内存分配允许程序在运行时请求和释放内存,主要通过`new`/`delete`(用于对象)及`malloc`/`calloc`/`realloc`/`free`(继承自C语言)实现。`new`分配并初始化对象内存,`delete`释放并调用析构函数;而`malloc`等函数仅处理裸内存,不涉及构造与析构。掌握这些可有效管理内存,避免泄漏和悬空指针问题。智能指针如`std::unique_ptr`和`std::shared_ptr`能自动管理内存,确保异常安全。关注威哥爱编程,了解更多全栈开发技巧。 先赞再看后评论,腰缠万贯财进门。
107 0
|
6天前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
JVM简介—1.Java内存区域