一、多维数组

 #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. dbeaver导出MySQL的架构提示"IO Error: Utility 'mysqldump.exe' not found in client home 'MySQL Connector/Net"解决方案

    今天想到用dbeaver的Dump dabase功能导出MySQL的架构脚本,到最后一步生成的时候提示以下错误信息: IO Error: Utility 'mysqldump.exe' not fou ...

  2. 谈一谈 MPU6050 姿态融合(转)

    姿态角(Euler角)pitch yaw roll飞行器的姿态角并不是指哪个角度,是三个角度的统称.它们是:俯仰.滚转.偏航.你可以想象是飞机围绕XYZ三个轴分别转动形成的夹角. 地面坐标系(eart ...

  3. hibernate validation内置注解及自定义注解

    Bean Validation 中内置的 constraint @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 ...

  4. thinkphp5中使用PHPExcel(转载)

    thinkphp5中可以使用composer来获取第三方类库,使用起来特别方便,例如:可是使用composer下载PHPMailer,think-captcha(验证码)等等…… 接下来说一下怎么使用 ...

  5. python3 中 Event.wait 多线程等待

    event.wait(time) 等待 time 时间后,执行下一步.或者在调用 event.set() 后立即执行下一步. event.clear()  清除信号 event.set() 设置信号 ...

  6. SHELL编程之产生随机数

    shell有一个环境变量RANDOM,范围是0-32767 如果想得到1-68范围内的数:$(($RANDOM%68+1)) 或者创建随机数函数: function rand() { min=$1 m ...

  7. mui 普通新闻文字列表 图文新闻列表

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  8. vue-cli+webpack+router+vuex---之vuex使用

    有信心的可以去看官方的文档 vue 的官方文档有个显著的特点---代码粘贴不全 Vue中文站:cn.vuejs.org vue-router官方教程:router.vuejs.org/zh-cn vu ...

  9. Logcat

    logcat -- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志; -- "-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参 ...

  10. java_Arrays.sort()方法

    这个方法位于util包里,可以传入任一类型数组,默认按照字典序升序排序 如果要按照降序排序,直接写一个循环来颠倒顺序就好了 源码如下 String[] name = {"1",&q ...