C语言I博客作业07
作业头
这个作业属于哪个课程 | C语言程序设计II |
这个作业的要求在哪里 | C语言I作业07 |
我在这门课程的目标是 | 学好C语言为学习以后学习其他的语言做准备 |
这个作业在那个具体方面帮助我实现目标 | 对while循环语句的运用,思考能力等 |
参考文献 | 《C语言程序设计I》,Dev-c++. |
1.PTA实验作业
1.1统计学生成绩
1.题目内容描述:
要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
1.1.1数据处理.
1.数据表达:
- (1).定义了n(学生人数),x(学生成绩),i(为增量,记录应输入多少个成绩),A,B,C,D,E,F,G,H,I,J,K分别为记录达到某个等次的次数,都为整型。
- (2).运用了for()循环语句,还有switch语句。
2.数据处理: - (1).循环结构.for(i=1;i<=n;i++) ,switch(x/10)。
- (2).运算处理. E+=F+G+H+J+K;A++,B++,C++,D++,E++,F++,G++,H++,J++,K++.
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
6 | 输出数据 | 每一个等次都有 |
5 | 输出数据 | 分数都小于60 |
5 | 输出数据 | 分数都在60到70之间 |
5 | 输出数据 | 分数都在70到80之间 |
10 | 输出数据 | 分数在每个等次都有涉及 |
1.1.4 PTA提交列表及说明
- 根据PTA提交列表,简要描述调试程序碰到的问题及解决办法.
- 1编译错误:开始的时候没有对F,G,H,I,J定义;
- 2部分正确:没有对F,G,H,I,J,K达到某个等次的次数进行合并。
1.2 计算天数
1.题目内容描述:
- 要求编写程序计算某年某月某日是该年中的第几天。
1.2.1数据处理.
1.数据表达:
- (1).定义了 Year,Month,Day,n(天数求和),都为整型。
- (2).运用了if()条件语句,还有switch语句。
2.数据处理: - (1).结构类型:分支结构;if-else条件语句[if((Year%40&&Year%100!=0)||(Year%4000))];switch(Month)语句.
- (2).运算处理:n+=Day;
1.2.2实验代码截图
1图片 | 2图片 |
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
2000/04/05 | 96 | 闰年 |
2099/10/30 | 303 | 非闰年 |
1.2.4 PTA提交列表及说明
- 根据PTA提交列表,简要描述调试程序碰到的问题及解决办法.
- 1部分正确:开始不知道用if-else将闰年与非闰年分开运行,只进行了闰年的代码。
- 2部分正确:闰月二月份是29天我写成了28天。
2.代码互评
1同学代码截图
2同学代码截图
3自己代码截图
与第一位同学的区别
- 1与第一位同学的区别在于她只是用了A,B,C,D,E这几个增量;而我还用了F,G,H,I,J,K这些增量,还要对属于E等次的求和,挺麻烦的;
- 2还有她用到了default,对于没有对应的5,4,3,2,1,0;就直接输出E,对此类题用到default的需要蛮大,值得学习。
与第二位同学的区别 - 1与第二位同学的区别在于我是略复杂变量的表达式,她是一个简单变量的表达式,因为她在表达式外已经运算好了;
- 2她case后的表达式比较简单,而我的太复杂了,她的代码与第一位同学的代码在10与9这里一个是否合并成一个A++,这个也是一个技巧,值得学习。
3.学习总结
3.1学习进度条
时间 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
第一周 | 16个小时 | 28行 | 学到了编写代码的基本知识,如:顺序结构 | 符号(英)与(汉)混淆 |
第二周 | 20个小时 | 20行 | 学到了运算符,赋值 | 主要是赋值,在printf中“="左右要空格其他就不用了 |
第三周 | 23个小时 | 98行 | 学到了分支结构(if-else),&&,%,幂运算pow,平方根sqrt | 对一些新知识不能马上运用 |
第四周 | 16个小时 | 70行 | 学到了for语句,求小数点(要求用1.0来除以···),还有该变正负号知识 | 现在没问题了,在scanf()内&n&m之间要用“," |
第五周 | 26个小时 | 62行 | 学到了while循环语句,定义函数和调用函数的运用. | 在定义函数后不知道如何运用 |
第六周 | 22个小时 | 154行 | 学到了if-else if-else的深入使用、用代码解决数学(函数)问题、如求一个数的个,十,百,千位等,还有求成绩的平均值,龟兔赛跑谁快谁慢 | 对想表达的意思不能够很好的用代码表达 |
第七周 | 20个小时 | 136行 | 学到了switch语句的使用,虽然if-else分支结构可以完全取代switch的语句,但是switch也有它的优势,少量选择比较快捷。 | 对switch语句中不清楚如何嵌入if-else结构 |
3.2累计代码行数和博客字数.
3.3 学习内容总结和感悟
3.3.1 学习内容总结
请用思维导图的形式将到目前为止所学的内容进行整理。
3.3.2学习体会
1此次作业让我明白了在编写程序的过程中,可以用不同的语句,分支结构来解决同一个问题,解决一个关于分支的问题,用switch可以解决的问题,同时if-else同样也可以解决,虽然if-else运用广泛,switch也有自己的优势,如:少量选择比较快捷,case的数量没有任何的限制。
2此次作业让我学会了分支结构switch的运用技巧(1):每一个case后的表达式的返回值必须是独一无二的。不能和其他的case后的值相等。(2):每一个case后的break都是可以没有的。根据具体的要求来判断。(3):在switch语句中,一旦执行了某一个case中的代码块,那么就不再进行任何case的比较,后续的代码都将顺序被执行,直到遇到了break,或者是default语句,整个switch才能被结束。(5):default语句可以没有,看题目的需求(在统计学生成绩这个题上就充分体现了)。
3琛哥本次pta上第二个编译题有点小问题,让我运行了蛮久,相信下次作业实例模板因该会更好,如果不清楚学校代号是哪个学校,则输出"OtherUniversity"。我运行了很久总是出现格式错误,后来同过与另外几个学校的英文单词对比发现因该要在Other后加上空格,才解决了格式错误