• C语言I博客作业02


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-1
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11452
    这个作业的目标 <学习并掌握循环语句的应用,总结在PTA中出现的问题并说明解决的方式>
    学号 <20208958>

    1.PTA实验作业(15分/题)

    1.1 求分数序列前N项和

    题目要求:本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

    1.1.1实验代码截图

    1.1.2数据处理

    数据表达:使用了整型变量N,i,浮点型变量sum,x,a,b,输出N表示需计算循环的次数,给a,b赋值进入循环,计算sum
    数据处理: 未使用表达式,结构为一个for循环嵌套

    1.1.3 PTA提交列表及说明

    • Q1:遇到较大N错误
    • A1:用int定义N太大存不下,改用double
    • Q2:提交后发现少打了;导致编译错误
    • A2:在Dev-C++上发现后改正

    1.2 比较大小

    题目要求:本题要求将输入的任意3个整数从小到大输出。输入在一行中给出3个整数,其间以空格分隔。在一行中将3个整数从小到大输出,其间以“->”相连。

    1.2.1 实验代码截图

    1.2.2 数据处理

    数据表达:使用了整型变量a,b,c,d,通过d储存数值转换到a,b,c中
    数据处理:未使用表达式,使用了三次if语句,通过比较a,b,c大小进行输出

    1.2.3 PTA提交列表及说明

    • Q1:在使用if-else时提交后为部分正确
    • A1:去掉了else后达到答案正确
    • Q2:三个变量时无法输出正确答案
    • A2:添加第四个变量进行转化

    1.3.1 实验代码截图

    1.3.2 数据处理

    数据表达:使用了整型变量sum,i,n,通过对i的循环计算sum
    数据处理:无表达式,使用了一个for循环

    1.3.3 PTA提交列表及说明

    • Q1:在输出时输出值与理想值不一致,输出的定义不明确
    • A1:加入一个%d将定义明确

    2.阅读代码(-5——5分)

    #include<algorithm>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<queue>
    #define ll long long;
    #define max(a,b) a>b?a:b
    #define min(a,b) a<b?a:b
    #define inf 0x3f3f3f3f
    #define ins 0xc0
    using namespace std;
    int M, N, sx, sy, ex, ey;
    char a[305][305];
    int t[305][305];
    int d[4][2] = { 1, 0, 0, 1, 0, -1, -1, 0 };
    struct pnt{
        int x, y;
    };
    int bfs()
    {
        pnt p, np;
        p.x = sx;
        p.y = sy;
        memset(t, 0x3f, sizeof t);
        t[sx][sy] = 0;
        queue< pnt > que;
        que.push(p);
        while (!que.empty()){
            p = que.front(); que.pop();
            for (int i = 0; i < 4; i++){
                np.x = p.x + d[i][0];
                np.y = p.y + d[i][1];
                if (np.x >= 0 && np.x < M&&np.y >= 0 && np.y < N&&a[np.x][np.y] != 'R'&&a[np.x][np.y] != 'S'){
                    if (a[np.x][np.y] == 'E'||a[np.x][np.y]=='T'){
                        if (t[p.x][p.y] + 1 < t[np.x][np.y]){
                            t[np.x][np.y] = t[p.x][p.y] + 1;
                            que.push(np);
                        }
                    }
                    else if (a[np.x][np.y] == 'B'){
                        if (t[p.x][p.y] + 2 < t[np.x][np.y]){
                            t[np.x][np.y] = t[p.x][p.y] + 2;
                            que.push(np);
                        }
                    }
                }
            }
        }
        return (t[ex][ey] == inf ? -1 : t[ex][ey]);
    }
    int main()
    {
        while (scanf("%d%d", &M, &N) != EOF && (M || N)){
                for (int i = 0; i < M; i++) scanf("%s", &a[i]);
                for (int i = 0; i < M; i++){
                    for (int j = 0; j < N; j++){
                        if (a[i][j] == 'Y'){
                            sx = i;
                            sy = j;
                        }
                        else if (a[i][j] == 'T'){
                            ex = i;
                            ey = j;
                        }
     
                    }
                }
     
                int tt = bfs();
                printf("%d
    ", tt);      
            }
            return 0;
    }
    

    我所读的代码是一个英文名叫作battle city,中文名叫90坦克大战的游戏代码,在Dev-c++上进行编译运行并输出,输出结果与所提供的答案一致,头文件过多让我有些看不懂,但加强了我对for语句和if-else语句的理解与熟练程度,

    3.学习总结(15分)

    3.1学习进度条(5分)

    周/日期 这周所花时间 代码行 学到的知识点简介 目前比较困惑的问题
    第八周 33小时 182 基础常用代码知识,整型变量,浮点型变量,运算符的相关知识,markdown语法的运用 运算符的优先级的问题
    第九周 39小时 251 scanf调用函数,if-else语句,for循环结构 if-else语句中else的使用问题
    第十周 30小时 193 数学常用函数与数学函数的调用头文件的运用 流程框图的编写问题

    3.2 累积代码行和博客字数(5分)

    3.3 学习感悟(5分)

    在这周的学习中,我已经能够较为熟练的编写代码,还记得在刚开始写代码时,连打开软件后能干吗都不知道,到现在熟练打开熟练码代码。重视每一次编译时出现的错误,特别是频繁出现的更要注意。出现错误也不要着急,多交流。也许别人会看到你发现不了的漏洞,交流会让人共同进步。最主要的是多去练习,失败是成功之母,一次又一次的尝试代表的是对自己知识一次又一次的检验,错误能够让你牢记。在刚接触c语言时,是直接观看他人的代码才写出,现在能够自己去尝试编写一些简单的代码。

  • 相关阅读:
    大数据内存模型(二级指针)
    多线程函数指针
    返回函数指针的函数
    动态分配二维数组指针
    俄罗斯方块学习笔记
    tailf
    tail
    cut
    split
    paste
  • 原文地址:https://www.cnblogs.com/hj3191375947/p/13943117.html
Copyright © 2020-2023  润新知