zoukankan      html  css  js  c++  java
  • C语言I博客作业07

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2/
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11585
    这个作业的目标 < 熟悉使用while和do-while结构解决问题。>
    学号 <20209145>

    一、PTA实验作业。

    1.1.1题目:

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

    1.1.2数据处理:

    数据表达:运用了整型变量x,y,N,i;x,y,N是输入值,i是记录循环次数。
    数据处理:while i<=N&&y!=x
    i <- i+1
    i==N+1 等。

    1.1.3 造测试数据:

    输入数据 输出数据 说明
    1 21 Bingo 一次猜出结果
    21 43121 Too bigLucky You! 第一次太大,三次内猜对
    21 419-1 Too smallGame Over 第一次太小,有负数游戏结束
    21 11921 Too smallGame Over 第一次太小,在N次内没猜对

    (表示换了一行)

    1.1.4实验代码截图:

    1.1.5PTA提交列表及说明:

    1.编译错误:没有定义i的初始值。
    2.部分正确:没考虑当i的值大于N时,跳出while循环,i的值是N+1,此时得到的答案为Good Guess!,而不是Game Over。
    读代码容易看出没有定义i;当i为N+1跳出循环后重新赋值i且不与其它值冲突(定义为负数)。

    1.2.1题目:

    (购物(二))用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。

    1.2.2数据处理:

    数据表达:运用了整型变量i,n;浮点型x,sum,result;x是输入值,i记录商品个数,n记录循环个数,sum记录商品总价。
    数据处理:sum <- i <- 0
    for n <- 1to11
    else sum <- sum+x
    i <- i+1
    if i==0 等。

    1.2.3造测试数据:

    输入数据 输出数据 说明
    890.78 2769.8 12300 3532.2 -1 4873.19 这些商品的平均价格为4873.19
    100000 100000 9876.54 -1 69958.85 这些商品的平均价格为69958.85
    10 21 11 1 2 3 4 5 6 0 -1 6.30 这些商品的平均价格为6.30

    1.2.4实验代码截图:

    1.2.5 PTA提交列表及说明:


    1.运行超时:当输入-1时没中断循环。
    2.部分正确:当一件商品也没有时i为0,此时i不能做分母。
    3.部分正确:当有10件商品时要循环输入11次,当条件为(n=1;n<=10;i++)时只循环输入了10次。
    容易看出没中断问题;当i为0时重新赋值一个值;改变循环条件。

    二、代码互评。

    同学代码:

    我的代码:

    1.同学用的是while循环,我的是for循环。
    2.他定义的字符较少,并一边定义一边赋值。
    3.他的不存在i为0的情况。

    同学代码:

    我的代码:

    1.我用了switch判断结构,他的全是if-else判断结构。
    2.他的中断语句是“goto end”,我的是“break”。
    3.他的判断于输出全在while结构里,我的部分在while结构里。
    4.他的循环条件是输入。
    5.他的结束语句前加了end(end:return 0;)。

    三、学习总结。

    3.1 学习进度条。

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    8 29h 500 输入、输出函数 除法的运算法则
    9 30h 530 其他类型的函数 判断语句if else
    10 31h 600 for循环、if else判断 数组问题
    11 30h 520 调用函数 调用自己定义的函数
    12 29h 490 多分枝判断结构if-else、字符型 或、且运算符
    13 28h 400 多分枝判断结构switch 或、且、非的优先情况
    14 28h 500 多分枝循环结构while do-while while和do-while的区别

    3.2 累积代码行和博客字数。

    时间 博客字数 代码行数
    第八周 1300 500
    第九周 1400 530
    第十周 1600 600
    第十一周 1500 520
    第十二周 1500 490
    第十三周 1520 400
    第十四周 1520 500

    3.3 学习内容总结和感悟。

    随着东西学的越多,每个人的做题风格也有了明显的区别,每一题有多种解法。学习C语言我觉得搭积木一样,每个语法都是积木,可以用不同的积木搭出相同的物体,所以不同的人做同样的题,会用到不同的语法。现阶段的我们可以用合适我们自己的习惯、思维的语法,但是以后我们还是要面临追求最优解。“不积跬步无以至千里,不积小流无以成江海”,要想成为能高效的得出最优解的编程大佬,只有增加自己掌握的积木数量。

  • 相关阅读:
    使群辉支持NTFS(未完善)
    docker 解决 Dockerfile同级文件有其他文件 导致docker build包越来越大
    nginx location配置前后端地址
    前端 Umi框架自带的proxy功能请求后端地址
    linux常用命令
    arthas的使用(正常部署+服务docker部署)
    linux
    oracle行转列,列转行函数的使用(listagg,xmlagg)
    oracle 使用函数 ROW_NUMBER() OVER(PARTITION BY 列 ORDER BY 列 排序 ),自关联日志表,将列数据转换为 行数据
    oracle merge into用法
  • 原文地址:https://www.cnblogs.com/abcdefg2345/p/14078504.html
Copyright © 2011-2022 走看看