C语言堆栈区别, 定时器预装载值计算, 字符串压缩算法 - 编程面试题解析

简答题:

  1. 堆和栈的区别:
  • 分配方式: 堆是由程序员手动分配和释放的,而栈是自动分配和释放的。
  • 内存空间: 堆的空间通常较大,而栈的空间通常较小。
  • 分配效率: 堆的分配效率较低,因为需要搜索可用的空间,而栈的分配效率较高。
  • 内存管理: 堆需要手动管理内存,包括分配和释放,而栈由编译器自动管理内存。
  • 存储内容: 堆可以存储动态分配的数据,而栈只能存储局部变量和函数调用信息。
  1. 时钟频率为72MHz的定时器预装载值计算:

根据题目给出的时钟频率为72MHz,我们可以通过以下步骤计算定时器的预装载值:

  • 确定所需的定时器周期,例如100ms。
  • 计算定时器的计数周期:周期 = 1 / 频率,即计数周期 = 1 / 72000000。
  • 计算所需的定时器计数数值:计数数值 = 所需周期 / 计数周期。
  • 将计数数值转换为整数,并将其作为预装载值。

例如,如果所需定时器周期为100ms:

计数周期 = 1 / 72000000 ≈ 0.0000000138888889 计数数值 = 0.1 / 0.0000000138888889 ≈ 7200000

因此,定时器的预装载值为7200000。

编程题:

  1. 将用户输入的字符串进行处理, 处理形式如下:'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

C语言堆栈区别, 定时器预装载值计算, 字符串压缩算法 - 编程面试题解析

原文地址: https://www.cveoy.top/t/topic/qasT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录