[c/c++] programming之路(15)、多维数组和二分查找法,小外挂
一、多维数组
#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=#//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)、多维数组和二分查找法,小外挂的更多相关文章
- PHP-----二维数组和二分查找
二维数组由行和列组成.由arr[$i][$j]表示,先后表示行和列,类似于坐标点. 打印二维数组-----通过两次遍历,第一次遍历每一行,第二次遍历每一行的具体元素,并且通过使用count($arr[ ...
- [算法][LeetCode]Search a 2D Matrix——二维数组的二分查找
题目要求 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the ...
- [19/03/13-星期三] 数组_二维数组&冒泡排序&二分查找
一.二维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(我们一般使用容器代替,二维数组用的都很少). [代码示例] import ...
- 剑指offer65:矩阵中的路径(二维数组,二分查找)
1 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...
- 剑指Offer面试题:2.二维数组中的查找
一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 【面试题003】c数组做为参数退化的问题,二维数组中的查找
[面试题003]c数组做为参数退化的问题,二维数组中的查找 一,c数组做为参数退化的问题 1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界, 通过下面 ...
- 《剑指Offer》面试题-二维数组中的查找
题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...
- 剑指offfer:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 例如: 1 2 ...
- C#版 - 小红书后台开发面试题: 二维数组中的查找
二维数组中的查找 热度指数:24274 时间限制:1秒 空间限制:32768K 本题知识点: 查找 在线提交网址: http://www.nowcoder.com/practice/abc3fe2 ...
随机推荐
- Golang 的 协程调度机制 与 GOMAXPROCS 性能调优
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- [git] 能在关键时刻救命的git指令
* 查看所有分支的所有操作记录(关键时刻能救命) git reflog
- Go VSCode配置编译task
菜单栏Tasks->Configure Tasks { "version": "2.0.0", "tasks": [ { " ...
- geotrellis使用(四十二)将 Shp 文件转为 GeoJson
前言 一个多月没有写博客了,今天尝试着动笔写点. 原因很多,最重要的原因是我转行了.是的,我离开了开发岗位,走向了开发的天敌-产品经理.虽然名义上是产品经理,但是干的事情也很杂,除了不写代码,其他的都 ...
- Python读取一个目录下的所有文件
#!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global ...
- python基础类型—列表
列表 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = [‘alex’ ...
- js中 函数声明/函数表达式/匿名函数/箭头函数/立即执行函数
函数声明: function add(a, b) { // ... } 1.顾名思义,声明一个函数, 用关键字 “function” 来告诉,这是一个函数. 2.任何地方,想用就可以拿过来使用 函数表 ...
- archlinux 下使用 aria2+uget 作为下载工具
1.创建配置文件 sudo vim /etc/aria2/aria2.conf ## /etc/aria2/aria2.conf### '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ...
- Navicat导入sql server数据库
1.新建连接 2. EXEC sp_attach_db @dbname = 'demo', (数据库的名字) @filename1 = 'G:\C#\超市管理系统\DB\CSGL.mdf', @f ...
- MOT上海站 | 卓越研发之路:微服务之路
微服务架构在带来灵活性.扩展性.可用性等优点的同时,其复杂性也给架构师们带来了很大的挑战.当你面对这些挑战一筹莫展时,不妨来参加由msup和微软联合推出的MOT线下沙龙活动吧,我们将给您答疑解惑. M ...