一、多维数组

 #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. ubuntu apt 软件源的更改

    在ubuntu上面安装软件一般都使用 apt安装 在ubuntu下面有一个源列表,源列表里面都是一些网站信息,每条网址就是一个源,这个地址指向的数据标识着这台服务器上有哪些软件可以用 编辑源命令: s ...

  2. 15 VScode 使用相关

    1.生成html头文件 ①:按下!键 ②:连按两下tab键  即可

  3. BASE64和图片之间的互相转换

    package com.test.demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java. ...

  4. oracle 数据库、实例、服务名、SID

    参考:http://www.zhetao.com/content240 在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个Instance,启动一个Instance之类 ...

  5. java线程和多线程同步

    java的线程之间资源共享,所以会出现线程同步问题(即,线程安全) 一.线程创建: 方式①:extends java.lang.Thread,重写run(),run方法里是开启线程后要做的事..sta ...

  6. sql中join与left-join图解区别

      select a.* from YG_BRSYK a left join(SELECT DISTINCT SYXH, STUFF((SELECT '.'+MS FROM #lsb where SY ...

  7. Centos Linux 下Pycharm 安装

    原文链接 :https://www.cnblogs.com/shaosks/p/9173806.html 可以通过浏览器访问http://www.jetbrains.com/pycharm/,选择需要 ...

  8. centos6 安装python2.7 并做软件兼容处理 及 MySQLdb模块安装

    相关软件准备 https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz https://pypi.org/project/setuptool ...

  9. U盘出现很多.exe的文件处理方案

    1.原来优盘显示隐藏系统文件后,会有MyDocument文件夹和MyDocument.exe文件两个. 2.在MyDocument文件夹下新建文件夹名为“安全区”的空文件夹. 3.在U盘的根目录下新建 ...

  10. git 不能创建分支

    git 不能创建分支,如下 fatal: cannot lock ref 'refs/heads/hotfix/aa': 'refs/heads/hotfix' exists; cannot crea ...