美文网首页
编程考试总结

编程考试总结

作者: 望望明月 | 来源:发表于2020-05-22 23:11 被阅读0次

    0522 考试总结

    1.应该有思路的情况,就可以全部都做,如果前两道有一道有思路,就直接快速解决,马上做第3题。

    习题3暴露出来的问题 -- :

    1.输入与输出不熟练,卡了很久没有搞明白 get_s 和 scanf_s 为什么会出现get少了一个字符

    2.输出结果一直不正确

    --- 这一题其实已经完全做出来了,但输入输出一直没有搞对,现在的输入输出是可以的,待确认。

    ```

    #include <stdio.h>

    #include <math.h>

    #include <stdlib.h>

    #include <string.h>

    #define TOTAL_MEM  100

    #define BUF_LEN      64

    #define OUT_BUF_LEN  64

    int g_pool[TOTAL_MEM] = {0};

    int g_allocSize[TOTAL_MEM] = {0};

    void MemPoolInit(void)

    {

    int i;

    for (i = 0; i < TOTAL_MEM; i++) {

    g_pool[i] = 0;

    g_allocSize[i] = 0;

    }

    }

    int MemPoolRequest(int memSize)

    {

    int i;

    int cnt = 0;

    int ret = TOTAL_MEM;

    if (memSize == 0) {

    return -1;

    }

    for (i = 0; i < TOTAL_MEM; i++) {

    if (g_pool[i] == 0) {

    cnt++;

    if (cnt >= memSize) {

    ret = i - memSize + 1;

    break;

    } else {

    cnt = 0;

    }

    }

    }

    if (ret == TOTAL_MEM) {

    return -1;

    }

    for (i = ret; i < ret + memSize; i++) {

    g_pool[i] = 1;

    }

    g_allocSize[ret] = memSize;

    return ret;

    }

    int MemPoolRelease(int startAddr)

    {

    int i = 0;

    if ((startAddr > TOTAL_MEM - 1) || g_allocSize[startAddr] == 0) {

    return -1;

    }

    for (i = startAddr; i < startAddr + g_allocSize[startAddr]; i++) {

    g_pool[i] = 0;

    }

    g_allocSize[startAddr] = 0;

    return 0;

    }

    int main(int argc, char *argv[])

    {

    int n = 0;

    static char buf[BUF_LEN] = {0};

    int i = 0;

    int info;

    int ret;

    if (scanf("%d\n", &n) != 1) {

    return -1;

    }

    MemPoolInit();

    for (i = 0; i < n; i++) {

    if (NULL == gets(buf)) {

    return -1;

    }

    info = atoi(buf + 8);

    if (buf[2] == 'Q') {

    ret = MemPoolRequest(info);

    if (ret != -1) {

    (void)printf("%d\n", ret);

    } else {

    (void)printf("error\n");

    }

    } else if (buf[2] == 'L') {

    ret = MemPoolRelease(info);

    if (ret != 0) {

    (void)printf("error\n");

    }

    }

    }

    return 0;

    }

    ```

    习题1暴露出来的问题 -- :

    1.没有最优解的概念,一上来还是沿用自己的思路在解题

    2.导致也花费了不少的时间

    -- 其实自己已经给出了较为优解的方案,也AC通过了,只是不自信。

    习题2暴露出来的问题 -- 矩形面积:

    1.没有思路,疯狂乱怼

    2.耗费大量时间

    -- 此题,思路相近,为什么没有做出来,需要进一步分析清楚。

    ```

    #include <stdio.h>

    #include <math.h>

    #define MAXN    100000

    int g_high = 0;

    unsigned int GetMinArea(int **opers, int curCnt)

    {

    unsigned int curArea = 0;

    if (curCnt == 0) {

    return 0;

    }

    g_high = g_high + opers[curCnt - 1][1];

    curArea = (opers[curCnt][0] - opers[curCnt - 1][0]) * abs(g_high);

    return curArea;

    }

    int main(int argc, char *argv[])

    {

    int n = 0;

    int stopPoint = 0;

    static int buf[MAXN][2] = {0};

    static int *opers[MAXN];

    int i;

    unsigned int ret = 0;

    for (i = 0; i < MAXN; i++) {

    opers[i] = NULL;

    }

    if (scanf("%d %d", &n, &stopPoint) == EOF) {

    return -1;

    }

    for (i = 0; i < n; i++) {

    if (scanf("%d %d", &buf[i][0], &buf[i][1]) == EOF) {

    return -1;

    }

    opers[i] = buf[i];

    ret += GetMinArea(opers, i); // 一次高度计算一次面积

    }

    // 计算剩余部分的面积

    g_high = g_high + opers[i - 1][1];

    ret += (stopPoint - opers[i - 1][0])*abs(g_high);

    (void)printf("%u", ret);

    return 0;

    }

    ```

    相关文章

      网友评论

          本文标题:编程考试总结

          本文链接:https://www.haomeiwen.com/subject/gmooohtx.html