实验四 数组和函数

news2025/1/8 23:38:15
  • 实验名称

实验四 数组和函数

  • 实验目的

(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;

}

运行结果为:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Idea(中文版) 项目结构/基本设置/设计背景

目录 1. Idea 项目结构 1.1 新建项目 1.2 新建项目的模块 1.3 新建项目模块的包 1.4 新建项目模块包的类 2. 基本设置 2.1 设置主题 2.2 设置字体 2.3 设置注释 2.4 自动导包 2.5 忽略大小写 2.6 设置背景图片 3. 项目与模块操作 3.1 修改类名 3.2 关闭项目 1. I…

Android Audio基础(53)——PCM逻辑设备Write数据

1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在 ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间数据不能随便…

Android Audio基础(54)——数字音频接口 I2S、PCM(TDM) 、PDM

1. 概述 本文介绍的数字音频接口全部是硬件接口,是实际的物理连线方式,即同一个PCB板上IC芯片和IC芯片之间的通讯协议。 PCM、PDM也可以用于表示音频编码格式,。编码格式是指模拟信号数字化的方式。 I2S和PCM(TDM)接口传输的数据是PCM格式的音频数据。这两种协议是最为常见…

HDFS架构原理

一、HDFS架构整体概述 HDFS是Hadoop Distribute File System 的简称&#xff0c;意为&#xff1a;Hadoop分布式文件系统。HDFS是Hadoop核心组件之一&#xff0c;作为大数据生态圈最底层的分布式存储服务而存在。HDFS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件…

windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN

本文是我瞎搞时写的问题汇总及参考文献&#xff0c;记录了一些问题解决的进度及对问题的思考。 最近一次更新时间&#xff1a;2025年1月4日 一、安装或更新nvidia显卡驱动 首先&#xff0c;需要确保你的设备安装了最新的显卡驱动。 &#xff08;1&#xff09;centos7安装显…

2025-01-04 Unity插件 YodaSheet2 —— 基础用法

文章目录 环境配置1 创建 YadeSheetData2 读取方式2.1 表格读取2.2 列表读取 3 自定义设置3.1 修改代码生成位置3.2 添加列表支持3.2.1 修改 DataTypeMapper.cs3.2.2 修改 SheetDataExtensions.cs3.2.3 修改 CodeGeneratorEditor.cs3.2.4 测试 ​ 官方文档&#xff1a; Unity …

STM32 拓展 RTC(实时时钟)

RTC简介 RTC(Real Time Clock,实时时钟)。是一个掉电后仍然可以继续运行的独立定时器。 RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 RTC实质…

微信小程序实现登录注册

文章目录 1. 官方文档教程2. 注册实现3. 登录实现4. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/路由跳转的几种方式&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab…

[大模型开源]SecGPT 网络安全大模型

模型介绍 SecGPT的愿景是将人工智能技术引入网络安全领域&#xff0c;以提高网络防御的效率和效果。其使命是推动网络安全智能化&#xff0c;为社会提供更安全的数字生活环境。 ① SecGPT开源地址&#xff1a;https://github.com/Clouditera/secgpt② 模型地址&#xff1a;htt…

解决“KEIL5软件模拟仿真无法打印浮点数”之问题

在没有外部硬件支持时&#xff0c;我们会使用KEIL5软件模拟仿真&#xff0c;这是是仿真必须要掌握的技巧。 1、点击“Project”&#xff0c;然后点击“Options for target 项目名字”&#xff0c;点击“Device”,选择CPU型号。 2、点击“OK” 3、点击“Target”,勾选“Use Mi…

C语言 扫雷程序设计

目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语&#xff1a; 一个简单的扫雷游戏&#xff0c;通过宏定义可以修改行列的…

Excel 技巧03 - 如何对齐小数位数? (★)如何去掉小数点?如何不四舍五入去掉小数点?

这几个有点儿关联&#xff0c;我都给放到一起了&#xff0c;不影响大家分别使用。 目录 1&#xff0c;如何对齐小数位数&#xff1f; 2&#xff0c;如何去掉小数点&#xff1f; 3&#xff0c;如何不四舍五入去掉小数点&#xff1f; 1&#xff0c;如何对齐小数位数&#xff…

【大模型+本地自建知识图谱/GraphRAG/neo4j/ollama+Qwen千问(或llama3)】 python实战(中)

一、建立基本的知识图谱并导入neo4j 这里我举例用的属性表、关系表&#xff0c;大概格式如下 id名字颜色a1苹果红色 startrelenda1属于b1 启动neo4j&#xff08;关于neo4j的安装此处不再赘述&#xff09; import pandas as pd from py2neo import Graph, Node, Relationship…

量子计算遇上人工智能:突破算力瓶颈的关键?

引言&#xff1a;量子计算遇上人工智能——突破算力瓶颈的关键&#xff1f; 在数字化时代的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活&#xff0c;从语音助手到自动驾驶&#xff0c;从医学诊断到金融分析&#xff0c;无不彰显其…

jenkins入门12-- 权限管理

Jenkins的权限管理 由于jenkins默认的权限管理体系不支持用户组或角色的配置&#xff0c;因此需要安装第三发插件来支持角色的配置&#xff0c;我们使用Role-based Authorization Strategy 插件 只有项目读权限 只有某个项目执行权限

IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)

时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元) 目录 时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现IWOA-GRU和GRU时间序列预测…

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口&#xff1a;https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口&#xff1a;https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口&#xff1a;https://ai-to.cn/url/?ulihaimao

Personal APP

1、Matlab 2023b https://www.bilibili.com/opus/887246540317392920 https://blog.csdn.net/qq_25719943/article/details/138096918 https://www.jokerdown.com/22886.html 2、 3、

Vue2:el-table中的文字根据内容改变颜色

想要实现的效果如图,【级别】和【P】列的颜色根据文字内容变化 1、正常创建表格 <template><el-table:data="tableData"style="width: 100%"><el-table-column prop="id" label="ID"/> <el-table-column …

ArmSoM RK3588/RK3576核心板,开发板网络设置

ArmSoM系列产品都搭配了以太网口或WIFI模块&#xff0c;PCIE转以太网模块、 USB转以太网模块等&#xff0c;这样我们的网络需求就不止是上网这么简单了&#xff0c;可以衍生出多种不同的玩法。 1. 网络连接​ 连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip&a…