当前位置: 首页 > news >正文

实验四 数组和函数

  • 实验名称

实验四 数组和函数

  • 实验目的

(1)掌握一维、二维数组以及字符数组的定义、元素引用和编程方法。

(2)掌握字符串常用程序的设计方法。

(3)掌握函数定义和调用的方法,以及函数参数传递的方式。

(4)理解变量的作用域及生存期。

  • 实验题目
  1. 编写程序计算Fibonacci数列的前40项。(要求每行输出4个数)
  2. 从键盘上输入一个3×4的整数矩阵,找出其中最大值和最小值,记录它们的行号和列号并输出。
  3. 编写程序将2个字符串连接起来(不使用strcat函数)并输出。
  4. 编程实现一个具有+,-,×,÷,%运算功能的简单计算器。(通过函数实现)
  5. 任意输入2个整数,编写2个函数分别求这2个整数的最大公约数和最小公倍数,结果在主函数中输出。
  • 实验环境

硬件:个人电脑;软件:Visual C++ 6.0

  • 实验代码及结果(程序运行结果请以截屏图给出)
  1. 源程序代码:

#include <stdio.h>

int main()

{

    int fibonacci[40];

    fibonacci[0] = 0;

    fibonacci[1] = 1;

    for (int i = 2; i < 40; i++)

        fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];

    for (int i = 0; i < 40; i++)

    {

        printf("%d ", fibonacci[i]);

        if ((i + 1) % 4 == 0) // 使用 (i + 1) % 4 来判断是否是每行的最后一个数字

            printf("\n");

    }

    return 0;

}

运行结果为:

  1. 源程序代码:

#include <stdio.h>

#include <limits.h>

int main()

{

    int matrix[3][4];

    int max_value = INT_MIN, min_value = INT_MAX;

    int max_row, max_col, min_row, min_col;

    printf("请输入一个3x4的整数矩阵:\n");

    for (int i = 0; i < 3; i++)

    {

        for (int j = 0; j < 4; j++)

        {

            scanf("%d", &matrix[i][j]);

            // 更新最大值和最小值及其位置

            if (matrix[i][j] > max_value)

            {

                max_value = matrix[i][j];

                max_row = i;

                max_col = j;

            }

            if (matrix[i][j] < min_value)

            {

                min_value = matrix[i][j];

                min_row = i;

                min_col = j;

            }

        }

    }

    printf("最大值:%d,位置:(%d, %d)\n", max_value, max_row, max_col);

    printf("最小值:%d,位置:(%d, %d)\n", min_value, min_row, min_col);

    return 0;

}

运行结果为:

  1. 源程序代码:

#include <stdio.h>

int main()

{

    char str1[100] = "Hello, ";

    char str2[] = "World!";

    int i = 0, j = 0;

    // 找到str1的末尾

    while (str1[i] != '\0')

        i++;

    // 将str2的字符逐个复制到str1的末尾

    while (str2[j] != '\0')

    {

        str1[i] = str2[j];

        i++;

        j++;

    }

    // 在str1的末尾添加字符串结束符'\0'

    str1[i] = '\0';

    // 输出连接后的字符串

    printf("%s\n", str1);

    return 0;

}

运行结果为:

  1. 源程序代码:

#include <stdio.h>

double add(double a, double b)

{

    return a + b;

}

double subtract(double a, double b)

{

    return a - b;

}

double multiply(double a, double b)

{

    return a * b;

}

double divide(double a, double b)

{

    return a / b;

}

int modulus(int a, int b)

{

    return a % b;

}

// 主函数

int main()

{

    char operator;

    double num1, num2;

    double result;

    printf("请输入一个算式:\n");

    scanf("%lf %c %lf", &num1, &operator, &num2);

    // 根据运算符执行相应的运算

    switch (operator)

    {

        case '+':

            result = add(num1, num2);

            break;

        case '-':

            result = subtract(num1, num2);

            break;

        case '*':

            result = multiply(num1, num2);

            break;

        case '/':

            result = divide(num1, num2);

            break;

        case '%':

            // 执行取模运算

            result = modulus(num1, num2);

            break;

        default:

            printf("错误:无效的运算符。\n");

            return 1; // 返回非零值表示程序异常终止

    }

        // 输出其他运算的结果

        printf("结果:%.2lf %c %.2lf = %.2lf\n", num1, operator, num2, result);

    return 0;

}

运行结果为:

  1. 源程序代码:

#include <stdio.h>

// 求最大公约数的递归函数(辗转相除法)

int gcd(int a, int b)

{

    if (b == 0)

        return a;

    else

        return gcd(b, a % b);

}

// 求最小公倍数的函数(利用GCD)

int lcm(int a, int b, int gcd_result)

{

    return (a * b) / gcd_result;

}

// 主函数

int main()

{

    int num1, num2;

    int gcd_result, lcm_result;

    // 输入两个整数

    printf("请输入两个整数:\n");

    scanf("%d %d", &num1, &num2);

    // 计算最大公约数(使用递归辗转相除法)

    gcd_result = gcd(num1, num2);

    // 计算最小公倍数

    lcm_result = lcm(num1, num2, gcd_result);

    printf("最大公约数:%d\n", gcd_result);

    printf("最小公倍数:%d\n", lcm_result);

    return 0;

}

运行结果为:

六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结)

相关文章:

实验四 数组和函数

实验名称 实验四 数组和函数 实验目的 &#xff08;1&#xff09;掌握一维、二维数组以及字符数组的定义、元素引用和编程方法。 &#xff08;2&#xff09;掌握字符串常用程序的设计方法。 &#xff08;3&#xff09;掌握函数定义和调用的方法&#xff0c;以及函数参数传…...

基于安卓14 的ANR dump信息原理

首先以 service 处理超时逻辑来分析 1&#xff09;service timeout调用到anr 的逻辑&#xff1a; /frameworks/base/services/core/java/com/android/server/am/ActiveServices.java 5827 void scheduleServiceTimeoutLocked(ProcessRecord proc) { 5828 if (…...

C++ volatile(八股总结)

答&#xff1a;跟编译器优化有关&#xff0c;告诉编译器每次操作该变量时一定要从内存中真正取出&#xff0c;而不是使用已经存在寄存器中的备份。 volatile是一个类型限定符&#xff0c;用来告诉编译器&#xff0c;某个变量的值可能在任何时刻发生变化&#xff0c;因此&#…...

SQL从入门到实战

学前须知 sqlzoo数据介绍 world nobel covid ge game、goal、eteam teacher、dept movie、casting、actor 基础语句 select&from SELECT from WORLD Tutorial - SQLZoo 基础查询select单列&多列&所有列&别名应用 例题一 SELECT name, continent, population …...

Redis源码阅读-源码阅读方式

Redis源码下载 首先通过地址&#xff08;https://github.com/redis/redis&#xff09;下载redis的源码。redis的源码版本&#xff0c;这里可以选择合适的查看&#xff0c;这里选择的是redis 5.x版本的源码。 Redis源码查看方式 这里可以选择合适的C开发工具&#xff0c;打开…...

若依框架简介

若依&#xff08;RuoYi&#xff09;框架是一个基于Java语言的后台管理系统快速开发框架&#xff0c;它结合了多种前端和后端技术&#xff0c;提供了高效的开发工具。以下是对若依框架的详细解析&#xff1a; 一、技术架构 后端&#xff1a;若依框架后端采用了Spring Boot、My…...

MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分

MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分 目录 MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分MOE划分不同专家的方法K-Means聚类算法来实现将神经元特征聚类划分成不同专家(行或者列聚类)举例说明怎么聚类,最后神经网络怎么保存M…...

为 CentOS7 虚拟机添加第二块网卡

为 CentOS7 虚拟机添加第二块网卡 目录 为 CentOS7 虚拟机添加第二块网卡一、在虚拟中添加网卡二、网卡配置1、查看新增的网卡信息2、创建网卡配置文件 一、在虚拟中添加网卡 1、右击虚拟机&#xff0c;在弹出的菜单中选择【设置】&#xff0c;弹出如下图所示的【虚拟机设置】…...

30天开发操作系统 第 12 天 -- 定时器

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单&#xff0c;只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器&#xff0c;CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…...

雷达的分类

雷达是一种利用电磁波进行探测和定位的设备&#xff0c;其分类方式多种多样&#xff0c;以下是按照不同标准对雷达进行的分类&#xff1a; 一、按功能分类 警戒雷达&#xff1a;用于搜索、监视和识别空中、海面或地面的目标&#xff0c;为防御系统提供早期预警。引导雷达&…...

Ubuntu桌面管理环境: GDM3,KDM,LightDM

介绍 Ubuntu是一个广受欢迎的Linux操作系统&#xff0c;拥有强大而多样化的桌面管理环境。其中三个常用的桌面管理环境是GDM3&#xff0c;KDM和LightDM。本篇博客将介绍这三个桌面管理环境的特点和功能。 GDM3 (GNOME Display Manager) GDM3是默认的桌面管理环境&#xff0c…...

使用Llama 3.1创建合成数据集以调优你的大型语言模型

使用Llama 3.1创建合成数据集以调优你的大型语言模型 在数据驱动的人工智能领域&#xff0c;数据是核心资产。开发高质量数据集既复杂又昂贵&#xff0c;因此很多实验室和开发者选择使用合成数据集。本文将介绍如何利用大型语言模型Llama 3.1 405B创建合成数据集&#xff0c;并…...

js可不使用document直接根据id获取id元素

今天在用原生js写demo的时候发现一个有意思的小现象&#xff0c;那就是可以直接根据元素的id去获取对应的元素。 起先是我定义了四个btn&#xff0c;每个btn都是根据getElementById来获取元素&#xff0c;然后给元素绑定事件&#xff0c;在调试的时候都挺好&#xff0c;到了后…...

【竞技宝】CS2:HLTV2024职业选手排名TOP8-broky

北京时间2025年1月7日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP8为FAZE战队的broky。 选手简介 broky是一位来自拉脱维亚的职业CS选手,现年23岁。2018年7月,broky获得了FPL资格,连续几季在榜上前5。他的首次赛场留名是跟随拉脱维亚本土战队Wolsung出征BES…...

Apache Paimon-实时数据湖

一、Apache Paimon是什么? Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合&#xff0c;推出新一代的 Streaming Lakehouse 技术&#xff0c;促进数据在数据湖上真正实时流动起来&#xff0c;并为用户提供实时离线一体化的开发体验。 …...

hpm使用笔记————使用usb作为从机接收来自上位机的数据然后通过spi主机发送给spi从机

历程整合 环境要求任务需求任务实现代码实现任务测试功能测试 结束 环境 hpm_sdk v 1.7.0ses v8.10 要求 例程demo USB-CDC 作为从机接收&#xff0c;然后把接收到的数据转发给SPI&#xff0c;SPI传输出去 任务需求 USB使用cherry协议栈进行开发 作为device设备&#xff08;…...

数据结构(查找算法)

1. 查找的概念 在一堆数据中&#xff0c;找到我们想要的那个数据&#xff0c;就是查找&#xff0c;也称为搜索&#xff0c;很容易想到&#xff0c;查找算法的优劣&#xff0c;取决于两个因素&#xff1a; 数据本身存储的特点查找算法本身的特点 比如&#xff0c;如果数据存储…...

private前端常见算法

1.数组 合并两个有序数组&#xff08;简单-5&#xff09; https://leetcode.cn/problems/merge-sorted-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 移除元素&#xff08;简单-4&#xff09; https://leetcode.cn/problems/remove-element/descr…...

Go语言之十条命令(The Ten Commands of Go Language)

Go语言之十条命令 Go语言简介 Go语言&#xff08;又称Golang&#xff09;‌是由Google开发的一种开源编程语言&#xff0c;首次公开发布于2009年。Go语言旨在提供简洁、高效、可靠的软件开发解决方案&#xff0c;特别强调并发编程和系统编程‌。 Go语言的基本特征 ‌静态强类…...

Residency 与 Internship 的区别及用法解析

Residency 与 Internship 的区别及用法解析 在英文中&#xff0c;“residency” 和 “internship” 都与职业培训相关&#xff0c;但它们的使用场景和具体含义存在显著差异。本文将详细解析这两个词的区别&#xff0c;以及它们在不同语境下的应用。 Residency 的定义及使用场景…...

Rust 智能指针的使用误区

Rust 智能指针是管理内存和所有权的强大工具&#xff0c;但使用不当可能导致性能问题或运行时错误。许多开发者误以为智能指针可以完全替代普通引用&#xff0c;或者忽视其内部机制&#xff0c;最终陷入陷阱。本文将揭示几个常见误区&#xff0c;帮助开发者更高效地利用智能指针…...

OBS多路推流插件:一键实现多平台同步直播的终极指南

OBS多路推流插件&#xff1a;一键实现多平台同步直播的终极指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经为需要在多个直播平台同时推流而烦恼&#xff1f;手动切换平台…...

Display Driver Uninstaller (DDU) 终极指南:彻底解决显卡驱动残留问题的专业工具

Display Driver Uninstaller (DDU) 终极指南&#xff1a;彻底解决显卡驱动残留问题的专业工具 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/di…...

AI编程新范式:使用Claude Code辅助开发cv_resnet101_face-detection应用

AI编程新范式&#xff1a;使用Claude Code辅助开发cv_resnet101_face-detection应用 1. 引言 如果你做过计算机视觉项目&#xff0c;肯定有过这样的体验&#xff1a;好不容易找到一个合适的预训练模型&#xff0c;比如人脸检测的cv_resnet101_face-detection&#xff0c;但真…...

手机号查询QQ号终极指南:3步快速找回遗忘账号

手机号查询QQ号终极指南&#xff1a;3步快速找回遗忘账号 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经更换手机后忘记了绑定的QQ号&#xff1f;或者需要验证家人朋友的QQ账号关联情况&#xff1f;phone2qq项目提供了一…...

WeKnora在教育培训场景的应用:构建智能学习助手

WeKnora在教育培训场景的应用&#xff1a;构建智能学习助手 1. 引言 想象一下这样的场景&#xff1a;一位编程老师每天需要回答学生提出的上百个问题&#xff0c;从基础语法到复杂算法&#xff0c;每个问题都需要查阅不同的教材和讲义。或者一位语言学习者&#xff0c;面对厚…...

5分钟快速上手:智慧树自动刷课插件的终极解决方案

5分钟快速上手&#xff1a;智慧树自动刷课插件的终极解决方案 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的网课学习而烦恼吗&#xff1f;智慧…...

避开这3个坑,你的SIMP拓扑优化仿真结果才靠谱(MATLAB案例详解)

避开这3个坑&#xff0c;你的SIMP拓扑优化仿真结果才靠谱&#xff08;MATLAB案例详解&#xff09; 第一次用SIMP算法做拓扑优化时&#xff0c;看着屏幕上扭曲的网格和模糊的材料分布&#xff0c;我差点以为MATLAB出了bug。直到导师指着我的参数设置说"这三个关键点你全踩雷…...

NAS+Docker+PostgreSQL:打造全平台同步的私有Joplin笔记服务器

1. 为什么选择私有化部署Joplin笔记服务 每次打开印象笔记时弹出的会员订阅弹窗&#xff0c;或是发现OneDrive同步又卡在某个小文件时&#xff0c;相信很多朋友都动过自建笔记服务的念头。三年前我也被这些问题困扰&#xff0c;直到在GitHub上发现了这个宝藏项目——Joplin&…...

基于DSP28335主控的直流有刷电机闭环控制系统:转速PID调控与上位机操作体验

直流有刷电机闭环控制 主控dsp28335&#xff0c;直流有刷电机&#xff0c;采用ab编码器&#xff0c;进行速度闭环。 有转速指令规划处理&#xff0c;速度环pid控制&#xff0c;eqep位置解算、转速解算&#xff0c;可以通过上位机控制电机正反转&#xff0c;发送指令等。 可以直…...