本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括题目和我亲自编写并在Visual Studio中运行成功的C语言代码。
仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨
100分题目相比都比较简单,最多30~45分钟就应该做完一道。
♦必须掌握的点♦
还有其他很基础的东西就不列出了,相关知识点,不再介绍,读者自行学习。
这里做一些示例:
示例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中运行时:
点击项目->项目属性,做如下设置:
【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 开心消消乐》——深度、广度搜索 |
祝你好运 |