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

实验四 数组和函数

  • 实验名称

实验四 数组和函数

  • 实验目的

(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.kler.cn/a/472830.html

相关文章:

  • Agent | Dify中的两种可选模式
  • [Git] git pull --rebase / git rebase origin/master
  • SpringBoot插件
  • MATLAB对文件处理
  • 121 买入股票的最佳时机
  • 【开源工业视觉库】启航规划
  • Mysql--基础篇--事务(ACID特征及实现原理,事务管理模式,隔离级别,并发问题,锁机制,行级锁,表级锁,意向锁,共享锁,排他锁,死锁,MVCC)
  • 深入学习RabbitMQ的Direct Exchange(直连交换机)
  • 常见的http状态码 + ResponseEntity
  • 设计模式 结构型 桥接模式(Bridge Pattern)与 常见技术框架应用 解析
  • 【centos8 ES】Elasticsearch linux 龙晰8操作系统安装
  • Flink分区方式有哪些
  • Unity:删除注册表内的项目记录
  • 05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
  • springboot点餐平台网站
  • 小程序学习08—— 系统参数获取和navBar组件样式动态设置
  • 58. Three.js案例-创建一个带有红蓝配置的半球光源的场景
  • BMS应用软件开发 — 3 电池系统的组成
  • 生成透明图的方式?
  • 【计算机网络】课程 实验四 配置快速生成树协议(RSTP)
  • 腾讯云AI代码助手编程挑战赛-待办事项
  • 第5章——与HTTP协作的Web服务器
  • 『 Linux 』高级IO (四) - Epoll 的工作模式
  • 机器学习:逻辑回归
  • sqlzoo答案1-SELECT names
  • 牛客网刷题 ——C语言初阶(6指针)——BC105 矩阵相等判定