[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

时间:2023-03-08 15:43:54

一、多维数组

 #include<stdio.h>
#include<stdlib.h> void main(){
int num[][];
int i,j;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
num[i][j]=*i+j+;
printf("%-3d",num[i][j]);
}
printf("\n");
}
system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

一次循环赋值二维数组

 #include<stdio.h>
#include<stdlib.h> void main(){
int a[][];
int i;
printf("%x\n",a);
//一个循环赋值二维数组
for (i = ; i < ; i++)
{
a[i/][i%]=i;//以第二个下标为准,如a【2】【6】,则a【i/6】【i%6】
printf("%-3d",a[i/][i%]);
} system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

二维数组初始化的形式

 #include<stdio.h>
#include<stdlib.h> void main(){
//赋值为0.二维数组全部为0
//int a[3][4] = { 0 }; //二维数组可以当作,一个一维数组每一个元素又是一个一维数组
//int a[3][4] = { { 1, 2 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; //int a[][4] = { {1,2,3,4} };
//大括号初始化了以后,行数可以省略
//列坐标不可以省略,
//int a[3][] = { { 0 }, { 0 }, { 0 } }; 错误!!! //当声明语句中提供有全部元素的初始值时,第1维的大小可以缺省
//N维数组,有大括号初始化有确定的因素,只有第一个可以省略 //int num[2][3]={{1},{2}}; 等价于
int a[][]={{,,},{,,}}; printf("%d", sizeof(a));
printf("\n%x", &a); system("pause");
}
 #include<stdio.h>
#include<stdlib.h> void main(){
int a[][] = { , , , , , , , , , , , };
int i,j;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
//a[i]+j==&a[i][j],*(&a[i][j])==*(a[i]+j)==a[i][j]
printf("%d,%d,%x,%x ",a[i][j],*(&a[i][j]),&a[i][j],a[i]+j);
}
printf("\n");
}
//a[x]代表第x行第一个元素首地址 ,某一行这个数组的首地址
printf("\na[0]=%x,a[1]=%x,a[2]=%x",a[],a[],a[]); system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

二维数组案例

 #include<stdio.h>
#include<stdlib.h> void main(){
int i,j,n,sum=;
int a[][];
printf("请输入一个正整数n(1<n<=10):");
scanf("%d",&n); for (i = ; i < n; i++)
{
for (j = ; j < n; j++)
{
a[i][j]=i*n+j+;
printf("%-3d",a[i][j]);
}
printf("\n");
}
for (i = ; i < n; i++)
{
sum+=a[i][i];
}
printf("%d\n",sum);
system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

数组转置

 #include<stdio.h>
#include<stdlib.h> void main(){
int a[][] = { , , , , , , , , , , , };
int i,j,b[][];
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
printf("%-3d", a[i][j]);
}
printf("\n");
}
printf("转置\n");
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
b[i][j]=a[j][i];
printf("%-3d",b[i][j]);
}
printf("\n");
}
system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

三维数组初始化

三次循环完成三维数组初始化

 #include<stdio.h>
#include<stdlib.h> void main(){
int a[][][];
int i,j,k,num=;
printf("%d\n", sizeof(a));
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
for (k = ; k < ; k++)
{
a[i][j][k] = ++num;
printf("%-5d", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
printf("%x", a);
getchar();
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

一次循环完成三维数组初始化

 #include<stdio.h>
#include<stdlib.h> void main(){
int a[][][];
int i;
for (i = ; i < **; i++)
{
a[i/(*)][i/%][i%]=i+;
if(i%==) printf("\n");
if(i%(*)==) printf("\n");
printf("%-3d",a[i/(*)][i/%][i%]);
}
getchar();
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

二、二分查找法

 #include<stdio.h>
#include<stdlib.h> #define N 100
int i;//VS2012的麻烦之处 //数组初始化
void operate(int a[]){
for (i = ; i < N; i++)
{
a[i]=i+;
printf("%d\t",a[i]);
}
} //进行遍历查找
int search(int a[],int num){//数组,所求数字
for (i = ; i < N; i++)
{
if(a[i]==num) return i;
}
return -;
} //进行二分查找
int search2(int a[],int num){
int start=,end=N-,middle=(start+end)/;
while (a[start]<=a[end])
{
printf("查找:%d,%d,%d\n",a[start],a[end],a[middle]);
if(a[middle]==num) return middle;
else if(a[middle]>num){
end=middle-;
middle=(start+end)/;
}else
{
start=middle+;
middle=(start+end)/;
}
}
return -;
} //for循环实现二分查找
int search3(int a[],int num){
int start,end,middle;
for(start=,end=N-,middle=(N-)/;a[start]<=a[end];middle=(start+end)/){
printf("查找:%d,%d,%d\n",a[start],a[end],a[middle]);
if(a[middle]==num) return middle;
else if(a[middle]>num) end=middle-;
else start=middle+;
}
} void main(){
int a[N],num,x;
operate(a);//数组初始化
printf("请输入要查找的数字:");
scanf("%d",&num);
x=search3(a,num);
if(x==-) printf("该数组无此数!");
else printf("找到%d\n",a[x]);
system("pause");
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

三、小外挂

 #include<stdio.h>
#include<stdlib.h>
#include<Windows.h> void msg(){
while(){
MessageBoxA(,"阿飞的目标:108个媳妇","阿飞的爱情游戏",);
Sleep();
}
} void main(){
int num=;
printf("%x,%x\n",&num,msg);//函数的本质是一个内存地址
while(){
Sleep();
printf("把妹%d\n",num);
}
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

dll文件

 _declspec(dllexport) void go(){
int *p=(int *)0x22fe48;
*p=-;//改值 void(*p1)()=(void(*)())0x12a111d;
p1();//调用函数
}

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

指针的一些小知识

 #include<stdio.h>
#include<stdlib.h> int add(int a,int b){
return a+b;
} void main(){
int num=;
int *p=&num;//p是一个指针变量,存储的是num地址
int(*pp)(int a,int b);
*p=;//通过地址修改变量,*p根据地址取出内容
//*(&num)=18;等价于上面一句
printf("%d\n",num); //printf("%d\n",add(1,5));
pp=add;
printf("%d\n",pp(,)); getchar();
}