一、多维数组

 #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");
}

一次循环赋值二维数组

 #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");
}

二维数组初始化的形式

 #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");
}

二维数组案例

 #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");
}

数组转置

 #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");
}

三维数组初始化

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

 #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();
}

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

 #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();
}

二、二分查找法

 #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");
}

三、小外挂

 #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);
}
}

dll文件

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

指针的一些小知识

 #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();
}

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

  1. PHP-----二维数组和二分查找

    二维数组由行和列组成.由arr[$i][$j]表示,先后表示行和列,类似于坐标点. 打印二维数组-----通过两次遍历,第一次遍历每一行,第二次遍历每一行的具体元素,并且通过使用count($arr[ ...

  2. [算法][LeetCode]Search a 2D Matrix——二维数组的二分查找

    题目要求 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the ...

  3. [19/03/13-星期三] 数组_二维数组&冒泡排序&二分查找

    一.二维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(我们一般使用容器代替,二维数组用的都很少). [代码示例] import ...

  4. 剑指offer65:矩阵中的路径(二维数组,二分查找)

    1 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...

  5. 剑指Offer面试题:2.二维数组中的查找

    一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  6. 【面试题003】c数组做为参数退化的问题,二维数组中的查找

    [面试题003]c数组做为参数退化的问题,二维数组中的查找  一,c数组做为参数退化的问题 1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界, 通过下面 ...

  7. 《剑指Offer》面试题-二维数组中的查找

    题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...

  8. 剑指offfer:二维数组中的查找

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 例如: 1    2  ...

  9. C#版 - 小红书后台开发面试题: 二维数组中的查找

    二维数组中的查找 热度指数:24274 时间限制:1秒 空间限制:32768K 本题知识点: 查找 ​ 在线提交网址: http://www.nowcoder.com/practice/abc3fe2 ...

随机推荐

  1. Spring MVC 知识点整理

    extend:http://www.jianshu.com/p/bef0e52067d2 1. Redis 存储方式 Redis存储机制分成两种Snapshot 和 AOF.无论是那种机制,Redis ...

  2. springboot的工作原理之配置文件的加载

    有一个非常底层的类SpringFactoriesLoader,顾名思义,就是加载工厂的类,没有办法,spring中工厂太多了,加载工厂类也需要一个类,参考博文: https://blog.csdn.n ...

  3. F - Currency Exchange

    来源poj1860 everal currency exchange points are working in our city. Let us suppose that each point sp ...

  4. template.js artTemplate 简洁语法官网下载不了 template.js artTemplate 新下载地址

    参考:https://blog.csdn.net/tavatimsa/article/details/82019792

  5. zepto.js的touch模块

     touch库实现了什么和引入背景 touch模块是基于zepto.js的. click事件在移动端上会有 300ms 的延迟,同时因为需要 长按 , 双触击 等富交互,所以我们通常都会引入类似 ze ...

  6. IsWindowVisible

    IsWindowVisible通过该函数可以获得指定窗口的可视状态,即显示或者隐藏. BOOL IsWindowVisible( HWND hWnd ); hWnd:被测试窗口的句柄. 返回值:如果指 ...

  7. python学习之旅(三)

    Python基础知识(2):运算符 一.算术运算符 加 +,减 -,乘 *,除 /,幂 **,求余 %,取整 // 二.成员运算符 in,not in 判断一个字符是否在字符串中 name = &qu ...

  8. 存储开头结尾使用begin tran,rollback tran作用?

    BEGIN TRAN你就把它看成一个还原点,一般用在INSERT.UPDATE.DELETE等能改变数据操作前设置,如果操作后发现执行的结果和预期的不一样,就ROLLBACK,反之就COMMIT提交

  9. Linux:使用rpcgen实现64位程序调用32位库函数

    摘要:本文介绍使用rpcgent实现64位程序调用32位库函数的方法,并给出样例代码. 我的问题 我的程序运行在64位Linux系统上,需要使用一个从外部获得的共享库中的函数,这个共享库是32位的,无 ...

  10. linux 下的clock_gettime() 获取时间函数

    #include <time.h> int clock_gettime(clockid_t clk_id, struct timespec* tp); 可以根据需要,获取不同要求的精确时间 ...