【2023华为OD笔试必会25题--C语言版】目录

本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括题目和我亲自编写并在Visual Studio中运行成功的C语言代码。

仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨

100分题目相比都比较简单,最多30~45分钟就应该做完一道。

文章目录

  • 知识点梳理
  • 知识点举例
  • 使用说明
  • 文章目录

知识点梳理

♦必须掌握的点♦

  1. 正确读取输入:这是最基本的,输入一般是多行字符串。最常用到scanf和fgets函数;
  2. 对输入字符串处理:至关重要的一步,比如将以多行字符形式串输入的数字保存到数组中,常用函数有:strtok()、atoi();
  3. 排序:通常需要对数字、或者字符、字符串进行各种排序,推荐使用qsort()函数,当然也可以自己编写排序函数;
  4. 单词、字符、数组的数量统计,常用结构体数组来完成(不唯一);
  5. 指针概念、操作必须熟练;
  6. 字符串处理函数:字符串处理是重点,常用函数:strtok()、strlen()、strcpy()、strncpy()、strcmp()、strncmp()、atoi()、strcat()、strchr()、strrchr()等等;
  7. 内存管理相关:VS不支持变长数组VLA(考试系统一般都支持),要会使用:malloc()、calloc()、free()、memset()、mencpy()等。
  8. 简单的算法、思想、概念:如递归、回溯、深度/广度优先搜索、动态规划等等。

还有其他很基础的东西就不列出了,相关知识点,不再介绍,读者自行学习。

知识点举例

这里做一些示例:

示例1: 使用malloc()函数创建数组(申请内存)

char* arr = (char*)malloc(MAX_LEN*sizeof(char));

如果MAX_LEN的值是100,在VS中等价于:

char arr[100];

示例2: 使用fgets()函数读取一行输入

这里的输入是一行用空格隔开的数字

fgets(arr,MAX_LEN-2,stdin);

示例3: 使用strtok()函数处理输入

将上面的一行输入中的数字提取出来放在数组中,多行输入类似,含多种分隔符也可以。

	char* arr = (char*)malloc(MAX_LEN*sizeof(char));
	fgets(arr,MAX_LEN-2,stdin);

	int* poke = (int*)calloc(MAX_LEN, sizeof(int));
	char* p = strtok(arr," \n");
	int count = 0;
	while (p != NULL) {
		poke[count++] = atoi(p);
		p = strtok(NULL," \n");
	}
	free(arr);

现在,数组poke中就存放了输入的数字,count为数字的个数。

示例4: 使用结构体数组统计每个数字出现的次数

结构体:

typedef struct {
	int value; //数值
	int count; //出现的次数
}Poke;

次数统计:

	Poke* poke = (Poke*)calloc(count,sizeof(Poke)); //记录每种牌的张数

	int index = 0;
	poke[0].value = arr[0]; //统计每张牌出现的次数
	poke[0].count = 1;
	for (int i = 1; i < count; i++) {
		int flag = 0;
		for (int j = 0; j < index+1; j++) {
			if (arr[i] == poke[j].value) {
				poke[j].count++;
				flag = 0;
				break; 
			}
			else {
				flag = 1;
			}
		}	
		if (flag == 1) {
			poke[++index].value = arr[i];
			poke[index].count++;
		}
	}

示例5: 使用qsort函数排序

根据牌出现的次数降序:

int qk_s(const void* a, const void* b) {
	Poke* x = (Poke *)b; 
	Poke* y = (Poke *)a;
	return x->count - y->count;
}

qsort(poke,index+1,sizeof(Poke),qk_s);

使用说明

在Visual Studio中运行时:

点击项目->项目属性,做如下设置:

  1. 配置属性->常规->C语言标准:c11
  2. c/c++ ->常规->SDL检查:否

文章目录

【2023华为OD笔试必会20题–C语言版】《01 预定酒店》——排序、二分查找
【2023华为OD笔试必会20题–C语言版】《02 整理扑克牌》——排序、贪心
【2023华为OD笔试必会20题–C语言版】《03 单入口空闲区域》——递归、数组、DFS
【2023华为OD笔试必会20题–C语言版】《04 日志采集系统》——数组
【2023华为OD笔试必会20题–C语言版】《05 异常打卡记录》——数组、字符串
【2023华为OD笔试必会20题–C语言版】《06 简单的自动曝光》——数组
【2023华为OD笔试必会20题–C语言版】《07 数组的中心位置》——数组、前缀和
【2023华为OD笔试必会20题–C语言版】《08 找数字、找等值元素》——数组
【2023华为OD笔试必会20题–C语言版】《09 新员工座位安排系统》——数组、滑窗
【2023华为OD笔试必会20题–C语言版】《10 相同数字的积木游戏》——数组
【2023华为OD笔试必会20题–C语言版】《11 找出通过车辆最多颜色》——数组
【2023华为OD笔试必会20题–C语言版】《12 光伏场地建设规划》——数组、动态规划
【2023华为OD笔试必会20题–C语言版】《13 获得完美走位》——字符串、滑窗
【2023华为OD笔试必会20题–C语言版】《14 通信误码》——字符串、数组
【2023华为OD笔试必会20题–C语言版】《15 获得最大软件版本号》——字符串、排序
【2023华为OD笔试必会20题–C语言版】《16 查找重复代码》——字符串、动态规划
【2023华为OD笔试必会20题–C语言版】《17 猜字谜》——字符串
【2023华为OD笔试必会20题–C语言版】《18 最短木板长度》——数组
【2023华为OD笔试必会25题–C语言版】《19 单词倒序》——字符串
【2023华为OD笔试必会25题–C语言版】《20 打印文件》——优先级队列
【2023华为OD笔试必会25题–C语言版】《21 对称美学》——字符串、递归
【2023华为OD笔试必会25题–C语言版】《22 分界线》——字符串、排序
【2023华为OD笔试必会25题–C语言版】《23 端口合并》——字符串
【2023华为OD笔试必会25题–C语言版】《24 货币单位换算》——字符串
【2023华为OD笔试必会25题–C语言版】《25 开心消消乐》——深度、广度搜索
祝你好运

你可能感兴趣的:(华为,c语言,算法)