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

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9885
    我在这个课程的目标是 1.了解分支结构与它的作用.2.掌握if-else的嵌套结构.3.掌握字符型数据的类型及输入与输出.4.掌握逻辑运算.
    这个作业在那个具体方面帮助我实现目标 通过习题强化逻辑概念,尝试定义字符类型变量去了解字符型数据,尤其是if-else嵌套的知识运用.
    参考文献 《C primer Plus》《C语言程序设计》C语言计算时间差补0方法

    1.PTA实验作业

    1.1计算火车运行时间

    本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

    1.1.1数据处理

    数据表达:用了变量a,b,c,d,e,f,hh,mm.其中,a,b是通过直接输入得到的,c,d,e,f,hh,mm是通过赋值得到的.数据类型全为整型.
    数据处理:a表示出发时间,b表示到达时间,c表示出发时间的小时数,d表示出发时间的分钟数,e表示到达时间的小时数,f表示到达时间的分钟数,hh表示起止时间的小时差,mm表示起止时间的分钟差.所用表达式用c=a/100;d=a%100;e=b/100;f=b%100;hh=e-c;mm=f-d;hh=e-c-2;mm=60-d+f;流程结构:用if-else语句判定f与d的大小,如果f>=d,hh=e-c;mm=f-d;然后通过printf()输出起止时间差.如果f<d,hh=e-c-1;mm=60-d+f;再通过printf()函数输出起止时间差.

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    1201 1530 03:29 使用题目数据验证
    823 1453 06:30 到达时间的分钟数大于出发时间的分钟数
    950 1820 08.30 到达时间的分钟数小于出发时间的分钟数

    1.1.4PTA提交列表及说明


    1.编译错误:scanf()函数后面忘记加分号.
    2.编译错误:由于借位考虑到小时数前面可能会有0,定义了一个字符型变量op,将op“0”但是我用了一对双引号括起来表示,正确的应该为op‘0’,
    3.答案错误:因为我定义的字符型函数,我的输出函数为printf("%c%d:%d\n",op,hh,mm);与题目题意要求不符,答案错误.往下换种方式重新设置程序.
    4.编译错误:使用if-else语句没有将内容括起来,导致if条件成立有点语句无法运行下去.
    5.答案错误:我的输出没有借位,输出时没有补0,所写函数为printf("d:%d\n",hh,mm);应该改为printf("02d:%02d\n",hh,mm);

    1.2输出闰年

    输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

    1.2.1数据处理

    数据表达:用了变量i,n,count.其中,变量n通过直接输入得到的,变量i,count通过赋值得到的,类型全为整型.
    数据处理:count记录闰年数目,n表示21世纪的某个截止年份.流程结构:先将0赋值个count作为初始值,输入n,使用if-else语句,if(n<=2000||n>2100),输出Invalid year!表示输入若非21世纪的年份,否则使用for循环语句,for(i=2001;i<=n;i++),再在for循环中使用if语句,如果该年年份能被4整除但不能被100整除、或者能被400整除,输出闰年并且换行记录,如果count=0,输出None,表示不存在任何闰年.

    1.2.2实验代码截图

    1.2.3造测试数据

    输入数据 输出数据 说明
    2048 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 使用题目数据,且该数据为21世纪内
    2000 Invalid year! 使用题目数据,输入若非21世纪的年份
    2003 None 不存在任何闰年
    2015 2004 2008 2012 使用非题目数据且该数据为21世纪内
    2125 Invalid year! 使用非题目数据且该数据若非21世纪的年份

    1.2.4PTA提交列表及说明


    1.编译错误:我的for循环语句有错误,用逗号隔开,应该改为分号隔开,正确的语句是for(i=2001;i<=n;i++),但还是编译错误.
    2.编译错误:犯了一个很不应该的错误,我将其中的一个count打成了conut,将conut修改完毕,运行程序,答案错误.
    3.部分正确:count没有设置初始值,应该设置count=0;再进行下面的操作,将count=0添上答案正确.

    2.代码互评

    我的代码 同学代码
    代码差异:
    1.定义变量不同,我定义的i,n,count,三个变量,他定义了n,m,count,sum四个变量,比我多定义了一个sum,我的变量i与他的变量m意义一致.
    2.他使用sum变量,将m的值赋值给sum,我感觉有点多余.
    3.他的逻辑能力更具有说服力,思路更加清晰.

    3.学习总结

    3.1学习进度条

    周数/日期 这周所花的时间 代码行 学到的知识点简介 目前比较疑惑的问题
    第三周(10/08--10/12) 12个小时 300行左右 定义函数,if-else,for循环语句 输入与输出格式,空语句
    第四周(10.14--10.18) 15个小时 250行左右 for循环语句,基础的循环程序设计,数据的输出宽度 数据的输出宽度概念不太清晰,表达式的定义,空语句的定义
    第五周(10.23--10.26) 12个小时 350行左右 自定义函数的声明与调用,break跳出循环,while()循环语句 自定义函数的应用
    第六周(10.30--11.01) 18个小时 500行左右 if-else的嵌套,学习逻辑运算,条件语句,字符类型以及字符型数据的输入与输出 对字符型数据的输入与输出了解太少,缺乏练习,没有理解到getchar()字符输入函数与putchar()字符输出函数以及它们的运用

    3.2累积代码行和博客字数

    3.3学习内容总结和感悟

    3.3.1学习内容总结

    3.3.2学习体会

    对于本次学习内容,我们学习了if-else语句的嵌套,强调的是一种事物的逻辑关系,以及学习了字符型变量的定义与输入输出,它不仅仅能使用之前学习的printf()与scanf()进行输出和输入,还可以用putchar()与getchar()进行输出与输入,这是一个新的知识点,此外,我们还要掌握进制数的转换,记下不同字符的ASCII码,同时要求进行ASCII码的计算,这需要我们课后花时间去巩固与深入学习,学习计算机科学与技术这门专业,我们应当要不断努力,坚持不懈,勇于面对难题,刻苦思考,这样才能有更大的进步与发展.当然,对于本次作业,我有着疑惑,我自认为编程与数学思想有着密不可分的联系,就比如说龟兔赛跑那一题,我完全运用的是数学的思想上去进行解答,将乌龟与兔子的比赛过程一一列举,会发现是一个周期性的过程,然后利用取余巧妙地解答,但我感觉太过于依赖于数学,我不知道是我对这次课程没有掌握还是怎么,导致我就只能凭借数学思想才能够解答.

  • 相关阅读:
    第二节:依赖倒置原则和单一职责原则
    第一节:开闭原则和里氏替换原则
    leetcode 110 Balanced Binary Tree
    leetcode 102 Binary Tree Level Order Traversal
    leetcode 101 Symmetric Tree
    【产品】张小龙--微信背后的产品观
    【ML】目标检测及跟踪
    【设计】信息卡片设计
    【指标】游戏指标定义
    【GIT】windows本机搭建GIT服务器
  • 原文地址:https://www.cnblogs.com/wllrky/p/11765424.html
Copyright © 2011-2022 走看看