C语言I作业07

| |
---|:--😐---:
|这个作业属于那个课程| C语言程序设计II
|这个作业要求在哪里| https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9934
|我在这个课程的目标是| 精通c语言
|这个作业在那个具体方面帮助我实现目标| 学会了用函数结构简化数学问题,优化程序运行
|参考文献 |c语言程序设计

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\n", &数字量);
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月的值就可以了,这样只用写
一串就可以了。

posted @ 2019-11-07 23:27  尭蔕  阅读(331)  评论(6编辑  收藏  举报