当前位置:首页 > 技术 > 正文内容

实验报告

访客 技术 2026年5月25日 5

实验任务一

功能:实现分数到等级的转换 问题解答

  1. 函数 score_to_grade 的作用是将输入的分数转换为对应的等级(A/B/C/D/E)。
  • 输入参数类型:int
  • 返回值类型:char
  1. 编译错误:
  • 类型不匹配:ans 声明为 char 类型,但需要修改为 const char 类型以解决类型冲突。
  • 缺少 break 语句:导致在 score/10 为 10 或 9 时,程序会继续执行后续 case 分支的赋值操作。

实验任务二

功能:计算整数各位数字之和 实现方式

  1. 迭代方法:通过循环逐位提取数字并累加。
  2. 递归方法:通过函数自身调用分解问题,逐步计算各位数字之和。

实验任务三

功能:计算整数的幂次 代码实现

int power(int x, int n) {
    if (n == 0) return 1;
    return x * power(x, n - 1);
}

实验任务四

功能:查找100以内的孪生素数 代码实现

#include <stdio.h>
#include <math.h>

int is_prime(int n) {
    if (n <= 1) return 0;
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) return 0;
    }
    return 1;
}

int main() {
    int count = 0;
    printf("100以内的孪生素数:\n");
    for (int i = 3; i + 2 <= 100; i++) {
        if (is_prime(i) && is_prime(i + 2)) {
            printf("%d %d\n", i, i + 2);
            count++;
        }
    }
    printf("总数:%d\n", count);
    return 0;
}

实验任务五

功能:汉诺塔问题求解 代码实现

#include <stdio.h>

void move_plate(unsigned int n, char from, char to) {
    printf("%u: %c --> %c\n", n, from, to);
}

int hanoi(unsigned int n, char from, char temp, char to) {
    int count = 0;
    if (n == 1) {
        move_plate(n, from, to);
        count++;
    } else {
        count += hanoi(n - 1, from, to, temp);
        move_plate(n, from, to);
        count++;
        count += hanoi(n - 1, temp, from, to);
    }
    return count;
}

int main() {
    unsigned int n;
    while (scanf("%u", &n) != EOF) {
        int moves = hanoi(n, 'A', 'B', 'C');
        printf("移动次数:%d\n", moves);
    }
    return 0;
}

实验任务六

功能:计算组合数 递归实现

int func(int n, int m) {
    if (m == 0 || m == n) return 1;
    return func(n - 1, m) + func(n - 1, m - 1);
}

迭代实现

int func(int n, int m) {
    if (m > n) return 0;
    if (m == 0 || m == n) return 1;
    
    int result = 1;
    for (int i = 1; i <= m; i++) {
        result *= (n - i + 1) / i;
    }
    return result;
}

实验任务七

功能:计算三个整数的最大公约数 代码实现

#include <stdio.h>

int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int main() {
    int a, b, c, ans;
    while (scanf("%d%d%d", &a, &b, &c) != EOF) {
        ans = gcd(gcd(a, b), c);
        printf("最大公约数:%d\n", ans);
    }
    return 0;
}

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。