Likt's Blog

天空一直都在,是云来了又去。

0%

函数的设计及调用【数据结构实验报告一 C语言】

函数的设计及调用(抽象数据类型)

一、实验目的

  1. 掌握程序设计的基本方法,复习C语言,并实现简单的算法设计。
  2. 掌握结构体类型的定义方法以及自定义数据类型的使用。
  3. 掌握函数的设计及调用。
  4. 掌握抽象数据类型的基本概念、定义。
  5. 学会理解给定的ADT描述,从而利用程序语言加以实现。
  6. 学习基本的程序组织方法和对抽象数据类型实现的应用。
  7. 熟悉开发环境、程序调试的方法。

二、实验内容

  1. 设计一个复数的抽象类型定义。
  2. 实现一个结构体类型描述“复数”的结构定义。
  3. 实现复数的初始化、加法、减法、乘法,以及求复数的实部、虚部等基本操作。
  4. 编写函数对所实现的抽象数据类型进行测试,验证其正确性。

三、详细设计及运行结果

  1. 说明各种功能实现的具体设计(可以是步骤描述或流程图)
  2. 测试数据和结果显示与分析
  3. 定义一个复数的抽象结构体类型。
  4. 对复数进行赋值。
  5. 设计复数的加法减法以及乘法的函数。
  6. 主函数进行测试。

四、调试情况,设计技巧及体会

Vscode出现闪退问题,已解决。

乱码问题,已解决。

C语言输入输出格式问题,已回顾。

五、源程序清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h> //避免闪退
typedef struct
{
    float real;
    float image;

} Complex; // 复数结构体

Complex assign(float real, float image) // 赋值
{
    Complex c;
    c.real = real;
    c.image = image;
    return c;
}
Complex add(Complex c1, Complex c2) // 加法
{
    Complex c;
    c.real = c1.real + c2.real;
    c.image = c1.image + c2.image;
    return c;
}
Complex sub(Complex c1, Complex c2) // 减法
{
    Complex c;
    c.real = c1.real - c2.real;
    c.image = c1.image - c2.image;
    return c;
}
Complex mutiply(Complex c1, Complex c2) // 乘法
{
    Complex c;
    c.real = c1.real * c2.real - c1.image * c2.image;
    c.image = c1.real * c2.image + c1.image * c2.real;
    return c;
}

int main()
{
    Complex a, b, c, d, f;
    a = assign(-1, 1);
    b = assign(2, 5);
    c = add(a, b);
    d = sub(a, b);
    f = mutiply(a, b);
    printf("两个复数相加结果为:\n");
    printf("%f,%f", c.real, c.image);
    printf("\n两个复数相减结果为:\n");
    printf("%f,%f", d.real, d.image);
    printf("\n两个复数相乘结果为:\n");
    printf("%f,%f", f.real, f.image);
    system("pause"); // 避免闪退
    return 0;
}

// 如果出现乱码,则将右下角的utf-8编码————通过编码保存————修改为gbk编码即可。

运行结果如下:

image-20240721112419860

下一篇:线性表 | Likt’s Blog (likt11.github.io)

-------------本文结束感谢您的阅读-------------