• C语言I博客作业07


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-3
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11586
    这个作业的目标 进一步深入了解循环语句以及学习while语句和dowhile语句的使用
    学号 20209167

    1.PTA作业

    1.1 题目名1

    7-4 猜数字游戏

    猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
    输入格式:

    输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。
    输出格式:

    在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。
    输入样例:

    58 4
    70
    50
    56
    58
    60
    -2

    输出样例:

    Too big
    Too small
    Too small
    Good Guess!

    1.1.1 数据处理

    数据表达:定义了dn为随机产生的所要猜的数;N为猜测的最大次数;c是每次猜的数;cs表示猜数的次数;以上都属于整型变量
    数据处理:scanf("%d %d",&dn,&N);(dn和N都由scanf输入);while(cs<=N)(通过while语句循环计算cs的值,以及判断对比c和dn的大小),if(c<0),if(c<dn),if(c>dn),if(c==dn),if(cs==1),else if(cs<=3),else if(cs<=N)   (通过if-else语句判断cs和输入的c所猜的数来决定输出的语句以及何时终止程序。)
    

    1.1.2 实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    60 6
    54 Too small 小了
    45 Too small 小了
    70 Too big 大了
    65 Too big 大了
    60 Good Guess! 猜的好啊第五次中了

    1.1.4 PTA提交列表及说明

    • 刚开始编辑错误是因为while括号后打了分号,混淆了两种while语句的用法,后来一次错误是因为cs++后没打分号,
    • 后来又发现总有一个测试点过不了,是超过N此输入后无效,然后所有代码删掉重写了一遍,第一遍判断语句只写了if。
    • 然后重来一遍用if(c>0)再嵌套if-else语句判断c与dn的大小,最后的else表示最后一个测试点的情况。

    1.2 题目名2

    7-3 循环-古角猜想

    日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到结果1的运算过程。
    输入格式:

    输入一个自然数n
    输出格式:

    输出每次运算步骤,直到结果为1.
    输入样例1:

    5

    输出样例1:

    5*3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1

    输入样例2:

    6

    输出样例1:

    6/2=3
    33+1=10
    10/2=5
    5
    3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1

    1.2.1 数据处理

    数据表达:定义为整型变量。
    数据处理:scanf("%d",&n);(输入一个整数);while(n!=1)(n为1时跳出循环;if(n%2==0){printf("%d/2=%d
    ",n,n/2);}n为偶数时的相关计算,else{ 
            printf("%d*3+1=%d
    ",n,n*3+1);n=n*3+1;}(n为奇数时相关计算)
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    45 奇数
    45*3+1=136
    136/2=68
    68/2=34
    34/2=17
    17*3+1=52
    52/2=26
    26/2=13
    13*3+1=40
    40/2=20
    20/2=10
    10/2=5
    5*3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1

    1.2.4 PTA提交列表及说明

    • 第一次出现运行超时不知道是什么情况,但是我知道应该是错了。
    • 后来的编译错误又是因为分号漏打,大括号打成了中文的大括号还没注意,卡了很久。
    • 答案错误是因为定义了一个整型变量,执行的相关计算放在了外面,后来删除这个变量,把计算放入循环中,并按要求输入相关的计算语句,问题解决

    代码互评

    同学代码截图

    自己代码截图

    同学代码截图

    自己代码截图

    • 同学的代码更完善,能更好地体现题目的要求和思想。
    • 同学的代码排版更好,我应该多学习,使界面更简洁,易懂。
    • 从代码看来上同学的思路更清晰。

    3.学习总结

    3.1学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    6/11.30-6/12.6 8.5小时 410 while语句和do while语句的使用 while语句后括号的条件限制

    3.2 累积代码行和博客字数


    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会
    (1):在PTA做题过程中迟早会遇到自己解决不了,还有理解不了的部分,这时候向同学请教和交流是很重要的。
    (2):做题时从不同的角度思考,尝试用多种方式表达自己的做题思路。
    (3):巩固基础,多打代码练习学过的内容,翻翻书,该熟练多看多学。
    (4):比较同学之间代码的不同,改进自己的代码。

  • 相关阅读:
    smarty的学习
    用接口实现封装的一个mysqli工具类
    centos7/8安装java和mysql
    Mysql 8.0 忘记密码报错1045办法,skip-grant-tables不管用
    卸载vivo手机自带的应用程序
    DevOps的学习(一)
    quartzy的spring注入问题
    html加载执行的顺序
    关于时间Date转换成long类型的方法(时间戳的转换)
    系统中出现乱码
  • 原文地址:https://www.cnblogs.com/qhg20209167/p/14083115.html
Copyright © 2020-2023  润新知