数据结构实验一:算法表示与实现

目录

 

第1关:数据交换

第2关 最大最小值问题

第3关:ADT-Complex


 

第1关:数据交换

任务描述
本关任务:编程实现两个数据的交换。要求将两个数据的交换功能写成一个函数,通过函数参数(指针变量或引用参数)实现两个数据的交换。

相关知识
为了完成本关任务,你需要掌握:1.C++的动态分配与释放语句。2.引用做为形参。

编程要求
根据提示,在右侧编辑器补充代码, 输出调用交换函数后的结果。

测试说明
平台会对你编写的代码进行测试:

测试输入:910,325;
预期输出:
交换后:325,910

测试输入:0,1;
预期输出:
交换后:1,0

开始你的任务吧,祝你成功!

#include <stdio.h>
#include <stdlib.h>

void exchange(int *x,int *y)
{
    int cc;
    cc=*x;
    *x=*y;
    *y=cc;
}

int main()
{
    int a;
    int b;
    scanf("%d,%d",&a,&b);
    exchange(&a,&b);
    printf("%d,%d",a,b);
    return 0;
}

第2关 最大最小值问题

任务描述
本关任务:编程实现对一组从键盘输入的数据(字符、整数或实数),求最大值、最小值、逆置等,并输出。

编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的最大值、最小值、逆置。
①分别采用静态/动态数组存储数据,数据元素的类型设计为ElemType;
②将计算最大值、最小值的求解过程写成函数
void Compute(ElemType a[ ],int n,ElemType &max, ElemType &min);
③设计算法 reverse(ElemTyep a[] ,int n 将数组中的所有数据进行逆置存放。

测试说明
平台会对你编写的代码进行测试:

测试输入:
3
4 9 5;
预期输出:
最大值:9
最小值:4
逆置为:5 9 4

开始你的任务吧,祝你成功!

#include <iostream>
#include <limits>
using namespace std;

typedef float ElemType;
void Compute(ElemType a[], int n, ElemType &max, ElemType &min);
void reverse(ElemType a[], int n);

int main() {
    int n;
    cin >> n;
    ElemType arrStatic[100];

    for (int i = 0; i < n; ++i) {
        cin >> arrStatic[i];
    }

    ElemType max, min;
    Compute(arrStatic, n, max, min);

    cout << "最大值:" << max << endl;
    cout << "最小值:" << min << endl;

    reverse(arrStatic, n);

    cout << "逆置为:";

    for (int i = 0; i < n; ++i) {
        cout << arrStatic[i] << " ";
    }
    cout << endl;
    return 0;
}

void Compute(ElemType a[], int n, ElemType &max, ElemType &min) {
    max = numeric_limits<ElemType>::lowest();
    min = numeric_limits<ElemType>::max(); 
 
    for (int i = 0; i < n; ++i) {
        if (a[i] > max) {
            max = a[i];
        }

        if (a[i] < min) {
            min = a[i];
        }
    }
}

void reverse(ElemType a[], int n) {

    int start = 0;
    int end = n - 1;

    while (start < end) {
        ElemType temp = a[start];
        a[start] = a[end];
        a[end] = temp;
        ++start;
        --end;
    }
}

第3关:ADT-Complex

任务描述
本关任务:编写程序实现复数的相关功能(见教材P 9)。

相关知识
为了完成本关任务,你需要掌握:1.如何定义Complex的ADT,2.如何实现Complex。

测试说明
平台会对你编写的代码进行测试:

测试输入:
3,5;
6,3;
预期输出:
第1个复数的实部值为:3
第1个复数的虚部值为:5
第2个复数的实部值为:6
第2个复数的虚部值为:3
2个复数的实部和为:9

开始你的任务吧,祝你成功!

#include<stdio.h>
typedef struct{
    int real;
    int unreal;
}Complex;

Complex create(int x,int y){
   Complex z;
    z.real=x;
    z.unreal=y;
    return z;
}

Complex add(Complex a1,Complex a2){
    Complex sum;
    sum.real=a1.real+a2.real;
    return sum;
}

int main()
{
    Complex a1,a2,a3;
    int a,b;
    scanf("%d, %d\n",&a,&b);

    a1=create(a,b);
    int c,d;
    scanf("%d, %d\n",&c,&d);

    a2=create(c,d);
    a3=add(a1,a2);

    printf("`第1个复数的实部值为:%d`\n",a1.real);

    printf("`第1个复数的虚部值为:%d`\n",a1.unreal);

    printf("`第2个复数的实部值为:%d`\n",a2.real);

    printf("`第2个复数的虚部值为:%d`\n",a2.unreal);

    printf("`2个复数的实部和为:%d`",a3.real);

    return 0;

}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值