一、本周作业头##
这个作业属于那个课程|C语言程序设计II
--|:--:--
这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9935
我在这个课程的目标是|熟练掌握好C语言,培养自己的思维能力,同时加快敲代码速度。
这个作业在那个具体方面帮助我实现目标|帮助我熟练的掌握switch语句以及排版能力
参考文献|百度百科、CSDN博客、C语言程序设计
二、本周作业##
1.PTA实验作业####
1.1 统计学生成绩
1.1.1数据处理####
数据表达:使用了N,percent,score=0,i,A=0,B=0,C=0,D=0,E=0;N表示输入的正整数,score表示学生成绩,percent表示分数的十位;
i表示循环起点;A表示90-100分的人,B表示80-90分的人,C表示70-80分的人,D表示60-70的人,E表示60分以下的人。类型:都是属于int整型。
数据处理:逻辑表达式:for(i=1;i<=N;i++),算术表达式:percent=score/10; 用到了for循环以及switch循环语句
伪代码:####
#include<stdio.h>
int main ()
{
int N,percent,score=0,i,A=0,B=0,C=0,D=0,E=0;
输入整数N;
for(当i大于N时跳出循环);
{
输入得分score;
percent=得分score/10;
switch(percent){
case 10: 评分为A++;跳出循环;case 9:评分为A++;跳出循环;
case 8:评分为B++;跳出循环;case 7:评分为C++;跳出循环;
case 6:评分为D++;跳出循环;default:评分为E++;跳出循环;
}...
}...
输出A,B,C,D,E每个评分的个数;
return 0;
}
1.1.2实验代码截图#####
1.1.3 造测试数据####
输入数据|输出数据|说明
--|:--:--:--
N=3,score=100,score=100,score=100;|A=3,B=0,C=0,D=0,E=0|成绩大于90属于A
N=3,score=60,score=60,score=60;|A=0,B=0,C=0,D=3,E=0|成绩等于60属于D
N=3,score=80,score=70,score=60;|A=0,B=1,C=1,D=1,E=0|成绩等于80属于B,成绩等于70属于C,成绩等于60属于D
1.1.4 PTA提交列表及说明####
说明:####
部分正确:因为在Dev上运行过,所以只有一条错误,这条错误是我在运行的时候无论输多少,都是A=0,B=0,C=0,D=0,E=N;经过自己的检查发现switch语句在for循环内
而在开始的时候我用了大括号把for循环与switch语句分开了。
1.2 整数的分类处理####
1.2.1数据处理####
数据表达:使用了int N,A2=0,i,max=0,count1;double A3=0,sum=0; int a[N];N表示输入的正整数,i表示循环起点,A2表示存在整数 K 使之可以表示为 3K+1 的整数的个数,max表示能被 3 整除的最大整数;A3 表示存在整数 K 使之可以表示为 3K+2 的所有整数的平均值;count1表示存在整数 K 使之可以表示为 3K+2的整数的个数;sum表示整数 K 使之可以表示为 3K+2 的所有整数之和;a[N]表示存放N个元素的数组。
数据处理:逻辑表达式:for(i=0;i<N;i++),条件表达式:if(a[i]%30),if((a[i]-1)%30),if((a[i]-2)%30,if(count10,if(a[i]>max);赋值表达式:
max=a[i];算术表达式:sum=sum+a[i], A3=sum/count1。运用了for循环,if-else语句以及switch语句。
伪代码:####
#include<stdio.h>
int main ()
{
int N,A2=0,i,max=0,count1;
double A3=0,sum=0;
输入正整数N;
int 数组a[N];
for(当i大于N时跳出循环){
输入整数数组a[i];
如果整数数组a[i]除以3取余等于0;
如果a[i]大于最大值max{
最大值max等于a[i];
}
如果(a[i]-1)除以3取余等于0{
存在整数 K 使之可以表示为 3K+1 的整数的个数加一个;
}
如果(a[i]-2)除以3取余等于0{
计算存在整数 K 使之可以表示为 3K+2的所有整数累加;
计算存在整数 K 使之可以表示为 3K+2 的所有整数的平均值;
}
}
switch(max){
case 0:
输出NONE;跳出循环;
default:
输出能被 3 整除的最大整数;跳出循环;
switch(A2){
case 0:
输出NONE;跳出循环;
default:
输出存在整数 K 使之可以表示为 3K+1 的整数的个数;
if(count1==0){
输出NONE;}
else{;
输出存在整数 K 使之可以表示为 3K+2 的所有整数的平均值;
}
return 0;
}
1.2.2实验代码截图#####
1.2.3 造测试数据####
输入数据|输出数据|说明
--|:--:--:--
N=8。5,8,7,6,9,3,1,10|max=9,A2=3,A3=6.5|这段数中能被 3 整除的最大整数为9,存在整数 K 使之可以表示为 3K+1 的整数的个数为3,存在整数 K 使之可以表示为 3K+2 的所有整数的平均值为6.5
N=8。15,16,18,7,6,9,1,10|max=18,A2=3,A3=NONE|这段数中能被 3 整除的最大整数为18,存在整数 K 使之可以表示为 3K+1 的整数的个数为3,存在整数 K 使之可以表示为 3K+2 的所有整数的平均值为0,因为不存在整数 K 使之可以表示为 3K+2。
N=3。9,9,9|max=9,A2=NONE,A3=NONE|这段数中能被 3 整除的最大整数为9,存在整数 K 使之可以表示为 3K+1 的整数的个数为0,存在整数 K 使之可以表示为 3K+2 的所有整数的平均值为0,因为不存在整数 K 使之可以表示为 3K+1和3K+2.
1.2.4 PTA提交列表及说明####
编译错误:double型变量不能使用switch语句
部分正确:在for循环当中,把if语句放在for循环外面
2.代码互评###
自己代码|同学代码
--|:--:--
|
不同点:####
1.该同学同样是使用switch语句与if-else语句,但我们的不同点在于我是开始将闰年与非闰年的二月用if-else语句
表示出来,少敲了许多代码行。
2.该同学直接把不同月份的天数直接算出,而我只是用一个表达式表达出,因而他的简单些,而我的一看就可以看懂我的意思。
但是有点复杂化。
自己代码|同学代码
--|:--:--
|
不同点:####
1.我和该同学最大的不同点在于我是在switch语句之前使用score/10,而该同学是在使用switch语句时使用score/10,有异曲同工之妙。
2.该同学的代码感觉比我的规范些,让人看起来很舒服。
3.与该同学的还要一个不同点在于case可以有几个常量表达式,所以该同学的case10,case9所表达的是一样。
不同点:####
3.学习总结###
3.1 学习进度条
周/日期|这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题
--|:--:--:--
10/8-10/12|5h|224|if-else语句和输入输出格式|变量的处理
10/13-10/18|12h|263|for循环语句,如何计算累加题|不知道什么时候用include<math.h>
10/19-10/26|15h|334|如何编写自定义函数及更加熟练掌握for循环|自定义函数的使用
10/26-11/2|14h|355|如何使用逻辑表达式及else-if语句|如何去寻找else-if之间的关系
11/2-11/8|13h|284|如何使用switch语句|switch语句与for循环同用时的关系
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
在这一周的学习当中,学习到了新的知识点--switch语句,switch语句可以处理多分支选择问题,这对我们的编写程序又省了不少的力气,在PTA作业当中,
前三道题使用switch语句可以简便的解决,但当写到第四题的时候,自我感觉直接使用if-else语句可能比switch语句更加简单,但也可能是我对switch语
句的不熟练让我产生的这样的感觉。但总体来说,在学习了switch语句后,使我的解题代码行数变少了。同时PTA作业很好地把我们之前所学习的知识囊括了
进去,使我们在学习新的内容的时候,同时可以回顾之前所学习的知识;比如在 整数分类处理这道题内,我使用了for循环,if-else语句,switch语句,以及
后面的数组知识。