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

    问题 答案
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 C语言I博客作业07
    我在这个课程的目标是 熟练掌握C语言
    这个作业在哪个具体方面帮助我实现目标 学会了如何去使用switch语句
    参考文献 Markdown基本语法

    一.PTA实验作业

    1. 计算天数

     题目内容描述:本题要求编写程序计算某年某月某日是该年中的第几天。
    
    输入格式:
      输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
    
    输出格式:
     在一行输出日期是该年中的第几天。
    
    输入样例1:
     2009/03/02
    
    输出样例1:
     61
    
    输入样例2:
     2000/03/02
    
    输出样例2:
     62
    

    (1)数据处理

     数据表达:
       用了整形变量year,month,day,date=0;
       year,month,day分别是用户传入的年,月,日,
       date来保存输入的日期是该年中的第几天。
     数据处理:
       用了switch语句和if语句,
       用了表达式month,case 1~case 12,用来判别每一种月份所包含的天数;
       用了表达式(year%4==0&&year%100!=0)||year%400==0用来区分闰年和非闰年两种情况;
       用了表达式month>2来区分二月以前的月份和二月以后的月份,如果是二月以后则天数加1。
    

    伪代码

     #include<stdio.h>
     int main()
     {
         定义整形变量 年,月,日;
         定义整形变量 天数=0;
         输入 年,月,日;
         switch(月)
         {
            case==1~12:闰年到该case月所包含的天数加输入的日;break;
         }
         if(非闰年)
         {
             if(月份大于2)
             {
                 天数加1;
             }
         }
         输出天数 
         return 0;
     }
    

    (2)实验代码截图

    (3)造测试数据

    输入数据 输出数据 说明
    2001/08/18 230 输入非闰年跨2月的数
    2400/08/18 231 输入被400整除的闰年跨2月的数
    2004/08/18 231 输入普通闰年跨2月的数
    2100/08/18 230 输入被100整除的非闰年跨4月(大小月)的数
    2002/08/18 230 输入非闰年跨9月(7-8月大)的数
    2000/01/18 18 输入闰年1月的数
    2001/01/18 18 输入非闰年1月的数

    (4)PTA提交列表及说明

    提交列表说明

     1.部分正确:未考虑能被400整除也为闰年这一种结果,将第22行if((year%4==0&&year%100!=0))改为if((year%4==0&&year%100!=0)||year%400==0)后,答案正确。
    

    2. 整数的分类处理

     题目内容描述:给定 N 个正整数,要求你从中得到下列三种计算结果:
    
     A1 = 能被 3 整除的最大整数
     A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
     A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
    
    输入格式:
     输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。
    
    输出格式:
     在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。
    
    输入样例 1:
     8
     5 8 7 6 9 1 3 10
    
    输出样例 1:
     9 3 6.5
    
    输入样例 2:
     15 18 7 6 9 1 3 10
    
    输出样例 2:
     18 3 NONE
    

    (1)数据处理

     数据表达:
       用了整形变量i,N,sum,a,b=0,a1=0,a2=0,a3=0和双精度浮点型变量average;
       N,sum是用户传入的参数,N是用户想要区分的数字的个数,
       G是用户要区分的数字,
       a1,a2,average来保存题目所需要的结果,
       a3用来判断是否存在题目所要求输出的A3,
       b用来累加符合A3的数的和,
       a用来判断输入的数符合哪一个要求。
     数据处理:
       用了if-else语句和switch语句,
       用了表达式a,a1==0,a2==0,average==0。
       switch(a)用来判断输入的数符合哪一个要求,
       if(a1==0)和if(a2==0)和if(average=0)用来区分输出满足条件的数是否存在。
    

    伪代码

     #include<stdio.h>
     main()
     {
         定义整形变量 i,N,正整数,余数,b=0,a1=0,a2=0,a3=0;
         定义双精度浮点型变量 平均数;
         输入用户需要分类的数的个数 
         for(i=1;i<=N;i++)
         {
    	     输入用户所要分类的正整数; 
    	     余数=正整数%3;
             switch(余数)
            	{
    		     case 0:if(a1<正整数){a1=正整数;}break;
    		     case 1:a2=a2+1;break;
    		     case 2:b=正整数+b;a3=a3+1;break;
    	        }
         }
         平均数=b除以a3;
         if(a1==0) 输出"NONE ";
         else if(a2==0) 输出"NONE "; else 输出a1; 输出a2;
    
         if(a3==0) 	输出"NONE ";
         else	    输出平均数;
         return 0;
     }
    

    (2)实验代码截图

    (3)造测试数据

    输入数据 输出数据 说明
    3 1 2 3 3 1 2.0 3种都有
    3 5 8 4 NONE 1 6.5 缺第1种
    3 5 8 3 3 NONE 6.5 缺第2种
    3 3 6 7 6 1 NONE 缺第3种
    3 3 6 9 9 NONE NONE 全被3整除
    3 4 7 10 NONE 3 NONE 全是3k+1型
    3 5 8 11 NONE NONE 8.0 全是3k+2型
    1 1 NONE 1 NONE 最小N

    (4)PTA提交列表及说明

    提交列表说明

     1.一次性答案正确,但在编译器上出现了符号误打成中文符号的错误,还有就是对if-else还是不是很熟练。
    

    二.代码互评

    同学(彭杰)代码:

    同学(柏朝晖)代码:

    自己代码:

    比较

     (1)第一、二份代码都用了40多行,而我只用了31行解决了这个题目,我的代码所占用的空间更少。
    
     (2)第一、二份代码都使用了if-else语句和两个switch语句,而我只用使用了2个if语句和1个switch语句。
    
     (3)我是将输出放在了最后面,而第二份将输出放在了每一个case后面,相对来说我的比较简单。
    

    三.学习总结

    1.学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第四周 7小时 100行 在屏幕上显示Hello World! 暂无
    第五周 8小时 100行 求华氏温度对应的摄氏温度 暂无
    第六周 30小时 200行 如何用 MinGW-w64 来编译C程序 暂无
    第七周 24小时 300行 运用if语句完成各种数学程序 对于&&的用法不了解
    第八周 24小时 300行 学会了for循环语句 暂无
    第九周 24小时 300行 学会了如何去自定义一个函数 暂无
    第十周 30小时 400行 学会了if-else语句的嵌入 对“(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真”这句话不是很懂
    第十一周 24小时 450行 学会了如何去使用switch语句来做编程题 暂无

    2. 累积代码行和博客字数

    3 .学习内容总结和感悟

    (1)学习内容总结

    (2) 学习体会

     做这一次作业所用的时间比往常短了很多,主要是PTA上的题目比往常容易了很多,让我难得提前提交一次作业。
     每次在做PTA的过程中我都能学到很多东西,上课没有理解的知识点在做题目的过程中也慢慢的了解了,编译错误几乎没有出现过了。
     希望下一次的作业也能提前做完吧。加油!
    

  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/sunmengjiaoing/p/11809176.html
Copyright © 2011-2022 走看看