C博客作业05--2019-指针

£可爱£侵袭症+ 提交于 2019-12-06 06:25:40

0.展示PTA总分

1.本章学习总结

1.1 学习内容总结

1.2 本章学习体会

学习感受

代码量统计

2.PTA实验作业


2.1 PTA题目1

2019-c10-指针
6-9 合并两个有序数组(2)
要求实现一个函数merge,将元素个数为m的升序数组a和长度为n的升序数组b合并到数组a,合并后的数组仍然按升序排列。假设数组a的长度足够大。

2.1.1 伪代码

void merge(int* a, int m, int* b, int n)

    定义循环变量i, j, k, 并赋值i = m - 1; j = n - 1; k = m + n - 1;
    
    定义指针c int *c
    申请空间c = (int*)malloc((m + n) * sizeof(int));
    while i >= 0 && j >= 0
        if a[i] > b[j] then
            c[k--] = a[i--];
        else
            c[k--] = b[j--];
    while i >= 0
        c[k--] = a[i--];
    while j >= 0
        c[k--] = b[j--];
    for i = 0 to m+n-1 do
        a[i] = c[i];
    free(c);

2.1.2 代码截图

2.1.3 造测试数据

2.1.4 PTA提交列表及说明

Q1:编译错误
A1:编写代码时忘记加分号
Q2:部分正确
A2:一开始没有看清楚题目,以为是两个函数,所以一开始做的方法是直接将b数组连接到a数组后方,在第二个函数输出是再开始排序,后来发现只用一个函数,于是改用循环比较大小开始重构a数组,但是当n很大时就会超时。
Q3:全部正确
A3:林丽老师讲了之后,我尝试用逆着输出,思路与林丽老师的差不多,定义了一个*c,申请动态空间是为了防止越界,从大的开始往前赋值,最后将c数组的值重新赋给a数组,完成题目。

2.2 PTA题目2


2.2.1 伪代码


2.1.2 代码截图

2.1.3 造测试数据

2.1.4 PTA提交列表及说明



2.3 PTA题目3


2.3.1 伪代码


2.3.2 代码截图

2.3.3 造测试数据

2.3.4 PTA提交列表及说明




3.阅读代码:

  • 代码功能

  • 代码优点

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!