巩固C语言(四)-----冒泡排序 & 二分查找 & 单次循环对二维数组赋初值
来源:互联网 发布:数据库日常维护 编辑:程序博客网 时间:2024/06/05 23:07
一 数组初始化
怎样用一次for或while循环对二维数组进行初始化和打印二维数组?
#include<stdio.h>#include<stdlib.h>void main(){int a[3][4] = { 0 };//赋初值for (int i = 0; i < 12; i++)a[i / 4][i % 4] = i;//输出for (int i = 0; i < 12; i++){printf("%-4d", a[i / 4][i % 4]);if ((i+1) % 4 == 0)printf("\n");}system("pause"); }
0 1 2 34 5 6 78 9 10 11请按任意键继续. . .
二 冒泡排序方法和二分查找算法
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#define SIZE 48#define MAX_NUM 48;#define TRUE 1#define FALSE 0//冒泡排序算法void BubbleSort(int a[], int sz){for (int i = 0; i < sz - 1; i++){for (int j = 0; j < sz - 1 - i; j++){if (a[j]>a[j + 1]){int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}//二分查找算法int BinarySearch(int arr[], int sz, int num){int beg = 0, end = sz - 1, mid = (beg + end) / 2;while (beg <= end){printf("要查找的头%2d, 尾%2d, 中间变量%2d\n", beg, end, mid);if (arr[mid] == num)return mid;else if (arr[mid] < num){beg = mid + 1;mid = (beg + end) / 2;}else{end = mid - 1;mid = (end + mid) / 2;}}return -1;}//二分查找,中间用for循环int BinarySearch2(int arr[], int sz, int num){for (int beg = 0, end = sz - 1, mid = (beg + end) / 2; beg <= end; mid = (beg + end) / 2){if (arr[mid] == num)return mid;else if (arr[mid > num])end = mid - 1;elsebeg = mid + 1;}return -1}void main(){int arr[SIZE] = { 0 };time_t time;int pos;//返回的位置int num;//要查找的数据srand((unsigned int)(&time));for (int i = 0; i < SIZE; i++)arr[i] = rand() % MAX_NUM;printf("排序之前:\n");for (int i = 0; i < SIZE; i++){printf("%-6d", arr[i]);if ((i + 1) % 8 == 0)printf("\n");}printf("\n排序之后:\n");//冒泡排序BubbleSort(arr, SIZE);for (int i = 0; i < SIZE; i++){printf("%-6d", arr[i]);if ((i + 1) % 8 == 0)printf("\n");}//输入要查找的数据printf("\n请输入要查找的数据:");scanf("%d", &num);//二分查找方法pos = BinarySearch(arr, SIZE, num);if (pos != -1)printf("位置下标为:%d\n", pos);elseprintf("没有找到!\n");system("pause");}
运行结果:
排序之前:28 12 10 5 3 11 11 538 8 46 41 33 16 15 1222 11 4 14 17 36 12 2845 41 27 2 24 21 37 144 44 40 39 0 39 16 147 17 21 35 23 32 39 27排序之后:0 2 3 4 4 5 5 78 10 11 11 11 12 12 1214 14 14 15 16 16 17 1721 21 22 23 24 27 27 2828 32 33 35 36 37 38 3939 39 40 41 41 44 45 46请输入要查找的数据:36要查找的头 0, 尾47, 中间变量23要查找的头24, 尾47, 中间变量35要查找的头36, 尾47, 中间变量41要查找的头36, 尾40, 中间变量40要查找的头36, 尾39, 中间变量39要查找的头36, 尾38, 中间变量38要查找的头36, 尾37, 中间变量37没有找到!请按任意键继续. . .
三 针对目标程序写外挂以改变其内存值
源程序:
#include<stdio.h>#include<stdlib.h>#include<windows.h>void msg(){while (1){MessageBoxA(0, "Good good study, day day up!", "C++", 0);Sleep(2000);}}void main(){int num = 108;printf("%x, %x\n", &num, msg);while (1){printf("Good Good Study! %d\n", num);Sleep(2000);}}
运行结果:
针对该程序的外挂:
_declspec(dllexport) void go(){int * my_num = (int *)0x23ff0c;//针对int类型*my_num = -1080;void(* my_msg) () = (void (*)())0xf11118;//针对函数my_msg();}
注意:别忘了在属性里将配置类型修改为动态库.dll,用注射软件将该dll文件注射到上一个程序中。
0 0
- 巩固C语言(四)-----冒泡排序 & 二分查找 & 单次循环对二维数组赋初值
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- C语言中不对数组赋初值
- C语言字符数组赋初值
- C语言 冒泡排序和二分查找
- C语言中对结构体赋初值
- 二分查找(折半查找)与冒泡排序(C语言)
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数
- memset对数组赋初值探讨
- C#语言中的字符串数组赋初值
- L4:二维数组、数组类、数组值复制、冒泡排序、二分查找
- 【C++】随机生成数组->冒泡排序->二分查找
- C二维数组冒泡排序
- C语言:冒泡排序和二分查找混合
- C语言:顺序,二分查找,冒泡排序实践项目
- 用两个for循环和一个for循环方式为二维数组赋初值并求出正对角线元素之和
- C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法)
- 动态二维数组的申请、赋初值、使用、释放空间
- 通道和文件通道
- SpringMVC 基础教程 helloworld
- VC6.0 OCX模拟http/post上传文本文件
- Maven的安装与配置
- drupal中hook_menu()使用
- 巩固C语言(四)-----冒泡排序 & 二分查找 & 单次循环对二维数组赋初值
- 计算机图形学(二)输出图元_3_画线算法_2_DDA算法
- 识别独立安卓设备
- 堆和栈的区别(转过无数次的文章)
- 多线程
- Android API Guides---Menu Resource
- java反射调用private方法,获取修改private属性值
- 用VBA,MATLAB,C 从小到大生成质数表(源代码)
- spring配置datasource三种方式