C语言堆栈区别, 定时器预装载值计算, 字符串压缩算法 - 编程面试题解析
C语言堆栈区别, 定时器预装载值计算, 字符串压缩算法 - 编程面试题解析
简答题:
- 堆和栈的区别:
- 分配方式: 堆是由程序员手动分配和释放的,而栈是自动分配和释放的。
- 内存空间: 堆的空间通常较大,而栈的空间通常较小。
- 分配效率: 堆的分配效率较低,因为需要搜索可用的空间,而栈的分配效率较高。
- 内存管理: 堆需要手动管理内存,包括分配和释放,而栈由编译器自动管理内存。
- 存储内容: 堆可以存储动态分配的数据,而栈只能存储局部变量和函数调用信息。
- 时钟频率为72MHz的定时器预装载值计算:
根据题目给出的时钟频率为72MHz,我们可以通过以下步骤计算定时器的预装载值:
- 确定所需的定时器周期,例如100ms。
- 计算定时器的计数周期:周期 = 1 / 频率,即计数周期 = 1 / 72000000。
- 计算所需的定时器计数数值:计数数值 = 所需周期 / 计数周期。
- 将计数数值转换为整数,并将其作为预装载值。
例如,如果所需定时器周期为100ms:
计数周期 = 1 / 72000000 ≈ 0.0000000138888889 计数数值 = 0.1 / 0.0000000138888889 ≈ 7200000
因此,定时器的预装载值为7200000。
编程题:
- 将用户输入的字符串进行处理, 处理形式如下:'dddeeefff'处理为'd3e3f4'
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf('请输入字符串: ');
scanf('%s', str);
int len = strlen(str);
char result[100];
int j = 0;
for (int i = 0; i < len; i++) {
int count = 1;
while (str[i] == str[i + 1]) {
count++;
i++;
}
result[j++] = str[i];
if (count > 1) {
result[j++] = count + '0';
}
}
result[j] = '\0';
printf('处理后的字符串: %s\n', result);
return 0;
}
作者: 轹子
链接: https://www.nowcoder.com/feed/main/detail/9c5e92b0b8a0467b
原文地址: https://www.cveoy.top/t/topic/qasT 著作权归作者所有。请勿转载和采集!