C语言I博客作业07
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业007 |
我在这个课程的目标是 | 对于学过的内容,可以很熟练的进行编程,而且还可以看懂代码的每一步代表着什么意思,训练自己找错的能力 |
这个作业在那个具体方面帮助我实现目标 | 做PTA作业可以巩固学的知识,并且找到自己不足。而且在代码互评环节可以学习到别人的长处 |
参考文献 | 百度、《C Primer Plus》第六版,C语言程序设计、PTA常见问题解答 |
1.PTA实验作业
1.1题目名1
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
1.1.1数据处理
数据表达:先定义了i,n,score都是整型变量,紧接着又定义了a,b,c,d,e,也是整型变量
数据处理:使用了for循环语句和switch语句,把switch语句放在for循环中进行计数,最后输出a,b,c,d,e的值
伪代码:
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
7 77 54 92 73 60 65 69 | 1 0 2 3 1 | 例题的数据 |
5 48 96 100 86 77 | 2 1 1 0 1 | 测试含100的数据 |
4 12 0 89 66 | 0 1 0 1 2 | 测试含0的数据 |
5 3 69 74 82 90 | 1 1 1 1 1 | 每个分数段都测试一遍 |
1.1.4PTA提交列表及说明
1.编译错误:将scanf打成了scanf_s,因为在vs上是要写成这样的,将_s删掉就可以了
2.部分正确:没有把switch语句放到for循环,导致for循环只是输入值,没有其他作用,在if语句后打大括号,将switch语句包含在里面就可以了
1.2 题目名2
给定 N 个正整数,要求你从中得到下列三种计算结果:
- A1 = 能被 3 整除的最大整数
- A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
- A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
1.2.1 数据处理
数据表达:这一题的变量有点多,n,i,t,a1,a2,a3,count1,count2,flag1,flag2,flag3,sum全部定义成整型变量
数据处理:使用了for循环语句、if-else语句、switch语句,用前面两个语句将t除以3求余,然后根据求余的结果进入switch语句中,看是flag1还是flag2或是flag3,如果都不是,那就输出NONE
伪代码:
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 | 例题上的数据 |
5 20 13 5 6 88 | 6 2 12.5 | 测试了中间含一个比较大的数字 |
6 12 56 8 99 47 | 99 1 37.0 | 测试了中间包含多个能被3整除的数据 |
1.2.4 PTA提交列表及说明
1.编译错误:在第一行的h后面空了格,导致了编译错误
2.格式错误:在输出语句printf中用了换行符,导致了格式错误,把换行符删掉就行了
3-7.答案错误:格式错误纠正后,就一直显示答案错误,问了同学,同学说是空格的问题,然后就在34、38、39、43、44行输出前段空格就可以了
(这题先在vs上测试的,没想到还是错了这么多次)
2.代码互评
2.1同学代码截图(计科2班高茗)
2.2自己代码截图
2.3比较结果
1.我们两个的代码只有一点点不一样,就是后面统计成绩等级为e的方法不一样,我是采用default:e ++; break,而她则是将各个情况都列出来了,进行计算
2.两者都可以,可能我的代码更简单一些,但是都很不错
2.4同学代码截图(计科3班李双)
2.5自己代码截图
2.6比较结果
1.我们两个的计算方法不太一样,她没有用到for循环语句,所以月份的天数要自己去算,最后判断是否是闰年,是否+1;而我运用了for循环语句,就不用手算了
2.我刚开始的方法和她是一样的,但总是显示错误,就把代码全部改了,通过看她的代码我也找到了我的错误在哪里(if-else语句忘记打括号了,当时找半天没找到)
3.学习总结
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-3.27) | 6天 | 26行 | Hello world编程和Markdown语法 | 现在没有疑惑 |
第二周(9.25-10.4) | 4天 | 45行 | 华氏度与摄氏度的转换 | 对于变量的类型还不是很懂 |
第三周(10.8-10.11) | 3天 | 大约100行左右 | 计算分段函数和学习if-else语句 | 对于if-else语句还是不那么熟练 |
第四周(10.15-10.17) | 3天 | 大约75行左右 | for循环语句和指定次数的循环程序设计 | 关于指定次数的循环程序设计还不是很清楚 |
第五周(10.22-10.25) | 4天 | 大约110行左右 | 使用自定义函数来编程和生成乘方表和阶乘表 | 关于自定义函数的编程的细节还是不太懂 |
第六周(10.29-11.1) | 4天 | 大约120行左右 | 运用分支结构编程、字符型数据、逻辑运算符 | 对于逻辑运算符还不是很清楚,有一点点懵 |
第七周(11.6-11.8) | 3天 | 大约150行左右 | 运用switch语句来编程 | 现在感觉没有什么疑惑点,可能还没发现 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
这周学习了switch语句,并且这次作业也必须要用switch语句。其实感觉第三题用if-else语句似乎更容易。这周学的东西不难,看下书上的例题,对于switch语句就比较了解了,再通过做几道PTA的题目,又可以很快的得到巩固。最后一道题目还是有点难度的,我看了很久也没有思路。我们马上就要学习第四章:循环结构。这是在循环结构上的扩展,我们之前已经学历for循环语句,我们还将学习while和do-while语句,以及两者的不同之处。路漫漫其修远兮,吾将上下而求索。万里长征才刚起步,加油!