滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句

OneNote防丢失。
海哥牛逼。

目录

  • 一、ASCII编码
  • 二、GB2312-80编码
  • 三、全局变量和局部变量
  • 四、分支结构
  • 五、数组
  • 作业
    • 1
    • 2
    • 3
    • 4
    • 5

一、ASCII编码

1、ASCII 码使用指定的 7 位或 8 位二进制数组合来表示128或 256 种可能的字符。
2、标准 ASCII 码使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。
3、扩展 ASCII 码允许将每个字符的第 8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。
滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第1张图片

二、GB2312-80编码

将扩展的ASCII表去除,两个大于127的字符连接在一起,就表示为一个汉字(即一个汉字两个字节宽度),前一个字节为高字节,从0xA1到0xA7,后一个字节为低字节,从0xA1到0xFE。

三、全局变量和局部变量

1、全局变量的特点(全局变量就是所谓的基址):
• 在程序编译完以后就已经预留了空间,预留的大小由类型决定,且位置不会发生变化;
• 全局变量如果没有初始值,默认为0;
• 全局变量可以在任何其他函数里进行读写;
• 多个函数使用同一个全局变量,只要程序未停止,里面将一直存储最后一次修改的值。
• MOV 寄存器,byte/word/dword ptr ds:[0x12345678]
2、局部变量的特点:
• 只有当函数调用时才分配空间,且一定有初始值;
• 局部变量的作用范围仅限于当前函数自己,其他函数无法使用;
• 当函数执行完毕之后,局部变量成为垃圾数据,可以随时被其他数据或函数使用的数据覆盖。

四、分支结构

(略)

五、数组

(略)

作业

1

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第2张图片

void Max(){
	int max = 0;
	if(max < g_x){
		max = g_x;
	}
	if(max < g_y){
		max = g_y;
	}
	if(max < g_z){
		max = g_z;
	}
	g_r = max;
}

2

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第3张图片

void ArrMax(){
	int max = 0;
	if(max < arr[0]){
		max = arr[0];
	}
	if(max < arr[1]){
		max = arr[1];
	}
	if(max < arr[2]){
		max = arr[2];
	}
	if(max < arr[3]){
		max = arr[3];
	}
	g_r = max;
}

3

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第4张图片

void Max(){
	for(int i = 0; i < 10; i++){
		g_r += arr[i];
	}
}

4

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第5张图片

void Max(){
	for(int i = 0; i < 10-1; i++){
		if(arr[i] >= arr[i+1]){
			g_r = arr[i];
			arr[i] = arr[i+1];
			arr[i+1] = g_r;
		}
	}
}

5

滴水逆向三期笔记与作业——02C语言——03 数据类型_IF语句_第6张图片

第一个:
网上的:
#include 
#include 
 
void fun(int m){
    char a[100]="china中国verygood天朝nice";
    int len=strlen(a);
    int i=0;
    int n=0,j=0;
    int num[1000];
    for(i=0;i<len;i++){
        if(a[i]>>7&1){
            num[n++]=i+2;
            i++;
        }
        else{
            num[n++]=i+1;
        }
    }
    for(i=0;i<num[m-1];i++){
        a[j++]=a[i];
    }
    a[j]='\0';
    printf("%s\n",a);
}
int main(){
    fun(5);
    fun(6);
    fun(7);
    fun(8);
 
    return 0;
}

我自己写的:
#include 
 
#include 
 
void fun(int n){
	char str[128] = "china中国verygood天朝nice";
	char result[128] = {};
	int len = strlen(str);
	int i = 0;
	int j = 0;
	    while (j<n+1)
	    {
	        if(str[i]>>7&1){
	            result[j++] = str[i++];
	            result[j++] = str[i++];
	            n++;
	        
	}else{
		result[j++] = str[i++];
	}
}
 
    result[j] = '\0';
printf("%s\n", result);
}
int main()
{
    fun(5);
    fun(6);
    fun(7);
    fun(8);
    fun(9);
 
    return 0;
}
 

海哥牛逼。

你可能感兴趣的:(滴水逆向学习笔记,笔记,c语言,逆向)