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

    这个作业属于那个课程
    这个作业要求在哪里
    我在这个课程的目标是
    这个作业在那个具体方面帮助我实现目标
    参考文献

    1.PTA实验作业(20分/题)

    从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

    1.1 题目名1

    7-10 计算天数 (15 分)
    本题要求编写程序计算某年某月某日是该年中的第几天。

    输入格式:
    输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

    输出格式:
    在一行输出日期是该年中的第几天。

    输入样例1:
    2009/03/02
    输出样例1:
    61
    输入样例2:
    2000/03/02
    输出样例2:
    62

    1.1.1数据处理

    #include<stdio.h>  
    
    #include<math.h>  
    int main()
    {
        int 年 = 0, 月 = 0, 日 = 0, 天数 = 0,判断是否闰年 = 0;
    
        输入("%d/ %d/ %d", &年, &月, &日);
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))    //判断是否为闰年
        	b = 1;
        if (b != 1) {
        	switch (m) {                                                      /*
        	case 1:天数 = 0; break;
        	case 2:天数 = 31; break;
        	case 3:天数 = 59; break;
        	case 4:天数 = 90; break;
        	case 5:天数 = 120; break;
        	case 6:天数 = 151; break;                                        闰年
        	case 7:天数 = 181; break;
    	case 8:天数 = 212; break;
    	case 9:天数 = 243; break;
    	case 10:天数 = 273; break;
    	case 11:天数 = 304; break;                                      */
    	case 12:天数 = 334; break;
    		}
    }
    else {
    	switch (m) {
    	case 1:天数 = 0; break;                                           /*
    	case 2:天数 = 31;break;
    	case 3:天数 = 60; break;
    	case 4:天数 = 91; break;
    	case 5:天数 = 121; break;
    	case 6:天数 = 152; break;                                             非闰年
    	case 7:天数 = 182; break;
    	case 8:天数 = 213; break;
    	case 9:天数 = 244; break;
    	case 10:天数 = 274; break;
    	case 11:天数= 305; break;
    	case 12:天数 = 335; break;                                 */
    	}
    }
    	printf("%d", 天数 + 日);
    return 0;
    }
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    2009/03/02 61 非闰年
    2000/03/02 62 闰年
    2000/01/02 2 月份小于2

    1.1.4 PTA提交列表及说明

    答案错误:将闰年与非闰年的情况写反了
    部分正确:第六行100写成了10
    解决方法:改正即可
    

    1.2 题目2

    7-13 整数的分类处理 (20 分)
    给定 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:
    8
    15 18 7 6 9 1 3 10
    输出样例 2:
    18 3 NONE

    1.2.1 数据处理

    #include<stdio.h>
    int main() {
    	int 数字量, 数字, 最大的数字 = 0, 判断, A1 = 0, A2 = 0, A3情况的计数 = 0;;
    double A3 = 0;
    输入("%d
    ", &数字量);
    for (int i = 1; i <= n; i++) {
    	输入("%d", &数字);
    	if (数字 % 3 == 0) {
    		判断 = 1;
    		if (数字 > 最大的数字)
    			最大的数字 = 数字;
    	}
    	if (m % 3 == 1)
    		判断 = 2;
    	if (m % 3 == 2) {
    		判断 = 3;
    		A3情况的计数++;
    	}
    	switch (判断) {
    	case 1:A1=最大数; break;
    	case 2:A2++; break;
    	case 3:A3+=m; break;
    	}
    	
    }
    if (A1 == 0)
    	printf("NONE");
    else
    	printf("%d", A1);
    if (A2 == 0)
    	printf(" NONE");
    else
    	printf(" %d", A2);
    if (A3 == 0)
    	printf(" NONE");
    else
    	printf(" %.1f", A3/c);
    return 0;
    }
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    8 /5 8 7 6 9 1 3 10 9 3 6.5 题目所给
    8 /15 18 7 6 9 1 3 10 18 3 NONE A3=0
    0 0 n=0

    1.2.4 PTA提交列表及说明

    错误:虽然pta上没错误,但在VS2019上写代码时还是遇到了问题,那便是将if ese结构写在了for循环结构里面,导致输出了很多多余的东西
    解决方法:将if else结构移到for循环结构外面
    

    2.代码互评(5分)

    找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

    同学代码截图

    同学1

    同学2

    自己代码截图

    1.第一位同学用的是x%3余出来的数作为switch的判断条件,相比我的本可以简单一些,但由于没有使用case 0,而使这种情况分出来了,是代码显得不是那么整齐
    2.第二位同学的代码由于设置了过多的变量和switch结构,导致代码显得很杂,可读性弱
    3.我的代码是每个情况都给b赋值一次,可以使代码更有条理,但方法可以像第一个同学一样改进
    

    3.学习总结(15分)

    3.1 学习进度条(5分)

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 2h 72 输出 对于输出的符号还不熟
    第二周 3.5h 57 计算 算法陌生
    第三周 3.5h 81 分支结构 分支的逻辑理不清
    第四周 1.5h 180 for循环,+= 终止条件理不清
    第五周 2h 600 函数结构 对于算法的处理比较迷惑
    第六周 2h 1000 嵌套 对于嵌套的结构过多会解读的很吃力
    第七周 2h 1246 switch结构 switch结构里的case最后若是不加break会怎么样

    3.2 累积代码行和博客字数(5分)

    3.3 学习内容总结和感悟(5分)

    3.3.1 学习内容总结

    3.3.2 学习体会

    经过了这么久C语言的学习,我感觉对于已学知识的运用越来越熟练了,但我觉得现在依然是完全不够用的,
    所以我们还是要能够找机会学习一些新的知识,或是新的操做,虽然这次的作业只能用switch结构,但我
    们也可以试试如果不用switch结构写一遍;就比如这次学长又将我的代码改了,虽然他没用switch结构,
    但他用代码解决问题的方法确实是简单明了,并且之前我对于数组的认识只停留在怎么声明数组变量,但
    不知道能一次把所有数组的变量赋值,在看了学长的代码后,我知道了用{}来给数组的变量赋值,代码如下:
    并且我的代码写了两大串switch结构,如果按照学长的方法,在判断是否闰年后只改2月的值就可以了,这样只用写
    一串就可以了。
    

  • 相关阅读:
    上传图片至fastdfs显示连接超时
    Linux上安装maven
    multipartFile.getOriginalFilename();不能获取原文件名称,也就是含有路径名
    /usr/bin/ld: cannot find -lfdfsclient
    linux开放22端口
    Ajax上传file出现的bad request问题
    easyui combobox实现下拉自动提示补全功能
    js格式化时间
    codeforces 780B
    codeforces 61 D 115 A
  • 原文地址:https://www.cnblogs.com/czynb/p/11817022.html
Copyright © 2011-2022 走看看