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

【送给在路上的程序员】

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

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

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

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

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

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

版权声明:欢迎转载,希望在您转载的同时,添加原文地址,谢谢配合!

时间: 2024-12-15 06:53:20

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

查看系统版本、32位与64位生产场景中的使用及对比

一.查看系统版本 [[email protected] ~]# uname -a #系统版本详细信息 Linux ysolin 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# uname -r   #内核版本 2.6.32-431.el6.x86_64 [[email protected] ~]# uname -m   #

32位与64位

1.我们所说的64位CPU架构指的是64位内存扩展技术,它是32CPU架构的一个扩展,且兼容原来的架构.它通过增加CPU的运算位宽扩展增加CPU和内存之间的位宽,从而让系统支持更大容量的内存,64位最大支持64G. 2.处理器模式:传统32位模式:安装32位操作系统,安装32位硬件驱动程序,安装32位应用程序.目前大多数人的处理器是Intel 64,安装了32位操作系统,程序运行良好,包括16bit和32bit程序. 兼容模式:操作系统和硬件驱动程序都是64bit,计算机允许64bit操作系统下

32位与64位系统的不同点

设计的初衷不同 64位操作系统的设计初衷是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求,简单说就是64位操作系统是为专业用户专业软件而设计的,而32位系统是为普通用户设计的. 要求配置不同 64位操作系统只能安装在64位电脑上,即CPU必须是64位的,同时需要安装64位常用软件以发挥最佳性能.32位操作系统可以安装在32位或64位电脑上,但是32位操作系统安装在64位电脑上显然不能充分发挥64位硬件的性能. 运算速度不同

@清晰掉 各种类型32位与64位下各类型长度对比

64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂):可以访问大型数据库.本文介绍的是64位下C语言开发程序注意事项. 1. 32 位和 64 位C数据类型 32和64位C语言内置数据类型,如下表所示: 上表中第一行的大写字母和数字含义如下所示:I表示:int类型L表示:long类型P表示:pointer指针类型32表示:32位系统64表示64位系统如:LP64表示,在64位系统下的long类型和pointer类型长度为64位.64位Li

机器字长 32位与64位的区别

1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍.但这是建立在64bit操作系统,64bit软件的基础上的 3. 32位/64位处理器指的是CPU在同一时间内能处理的数据位数(8位=1B),机器字长一般是指参加运算的寄存器所含有的二进制数的位数,它代表了机器的精度. 如 某计算机字长32位,存储容量8MB.按字编址,其寻址范围为 8MB字节=8*1024*1024*8位.所

[转] 关于VS中区分debug与release,32位与64位编译的宏定义

在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断 是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google. 1.判断是debug编译还是release编译. 如果_DEBUG定义了表示是debug编译,否则是release编译. 2.判断是32位编译还是64位编译. 在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义.在 x64 配置下,两者都有定义.即在 VC 下,_WIN3

values of type NSInteger should not be used as format arguments; 关于Xcode中烦人的32位与64位警告处理方法.

http://stackoverflow.com/questions/16075559/why-does-an-nsinteger-variable-have-to-be-casted-to-long-when-used-as-a-format-a 老老实实按Xcode的提示来处理 添加ld%, 添加(long) 这样才能保证在32位和64位上都不会出现警告. [NSString stringWithFormat:@"%ld", (long)_filterIndex]

32位与64位编译器的长度对比

可用如sizeof(char),sizeof(char*)等得出32位编译器:char :1个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节.同理64位编译器)short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 4个字节long long: 8个字节unsigned long: 4个字节64位编译器:char :1个字节char*(即指针变量):

32位与64位基础

C语言编程需要注意的64位和32机器的区别   一.数据类型特别是int相关的类型在不同位数机器的平台下长度不同.C99标准并不规定具体数据类型的长度大小,只规定级别.作下比较: 16位平台 char         1个字节8位 short        2个字节16位 int            2个字节16位 long         4个字节32位 指针         2个字节 32位平台 char         1个字节8位 short        2个字节16位 int