zoukankan      html  css  js  c++  java
  • 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语言时,是直接观看他人的代码才写出,现在能够自己去尝试编写一些简单的代码。

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/hj3191375947/p/13943117.html
Copyright © 2011-2022 走看看