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的过程中我都能学到很多东西,上课没有理解的知识点在做题目的过程中也慢慢的了解了,编译错误几乎没有出现过了。
     希望下一次的作业也能提前做完吧。加油!
    

  • 相关阅读:
    MyOD-Linux od命令的实现
    20175320 2018-2019-2 《Java程序设计》第9周学习总结
    MyCP-实现文件的复制以及进制转换
    20175320 2018-2019-2 《Java程序设计》第8周学习总结
    2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告
    20175320 2018-2019-2 《Java程序设计》第7周学习总结
    类定义20175320
    20175320 2018-2019-2 《Java程序设计》第6周学习总结
    结对编程项目-四则运算阶段性总结
    算法复习周------递归之“合并排序”
  • 原文地址:https://www.cnblogs.com/sunmengjiaoing/p/11809176.html
Copyright © 2011-2022 走看看